File: D:/HostingSpaces/SBogers10/gggg.komma.nl/vendor/komma/kms/tests/Unit/GlobalisationTest.php
<?php
namespace Tests\Unit;
use Komma\KMS\Globalization\Language;
use Komma\KMS\Globalization\RegionInfo;
use Tests\TestCase;
class GlobalisationTest extends TestCase
{
/**
* @group Globalisation
* @group G11N
* @test
*/
public function basictests()
{
$regionInfo = RegionInfo::getInstance('nl-BE');
$this->assertEquals('Dutch (Belgium)', $regionInfo->getDisplayName());
$this->assertEquals('Nederlands (België)', $regionInfo->getNativeName());
$this->assertEquals('Euro', $regionInfo->getCurrencyName());
$this->assertEquals('cent', $regionInfo->getCurrencyMinorName());
$this->assertEquals('€', $regionInfo->getCurrencySymbol());
$this->assertEquals('EUR', $regionInfo->getISOCurrencySymbol());
$this->assertTrue($regionInfo->isMetric());
$this->assertEquals('BEL', $regionInfo->getThreeLetterISORegionName());
$this->assertEquals('BE', $regionInfo->getTwoLetterISORegionName());
$this->assertEquals('nl-BE', $regionInfo->getName());
$this->assertCount(1, $regionInfo->getLanguages());
$dutchLanguage = $regionInfo->getLanguages()->first();
$this->assertInstanceOf(Language::class, $dutchLanguage);
/** @var Language $dutchLanguage */
$this->assertEquals('nl', $dutchLanguage->getName());
$this->assertEquals('Dutch', $dutchLanguage->getDisplayName());
$this->assertEquals('Nederlands', $dutchLanguage->getNativeName());
$this->assertEquals('nl', $dutchLanguage->getTwoLetterISOLanguageName());
$this->assertEquals('nld', $dutchLanguage->getThreeLetterISOLanguageName());
}
/**
* @group Globalisation
* @group G11N
* @test
*/
public function testGetMultipleLanguagesFromRegion()
{
//The Netherlands
$regionInfo = RegionInfo::getInstance('nl');
$this->assertEquals('Netherlands', $regionInfo->getDisplayName());
$this->assertEquals('Nederland', $regionInfo->getNativeName());
$this->assertEquals('Euro', $regionInfo->getCurrencyName());
$this->assertEquals('cent', $regionInfo->getCurrencyMinorName());
$this->assertEquals('€', $regionInfo->getCurrencySymbol());
$this->assertEquals('EUR', $regionInfo->getISOCurrencySymbol());
$this->assertTrue($regionInfo->isMetric());
$this->assertEquals('NLD', $regionInfo->getThreeLetterISORegionName());
$this->assertEquals('NL', $regionInfo->getTwoLetterISORegionName());
$this->assertEquals('NL', $regionInfo->getName());
$this->assertCount(2, $regionInfo->getLanguages());
$dutchLanguage = $regionInfo->getLanguages()[0];
$fryskLanguage = $regionInfo->getLanguages()[1];
$this->assertInstanceOf(Language::class, $dutchLanguage);
/** @var Language $dutchLanguage */
$this->assertEquals('nl', $dutchLanguage->getName());
$this->assertEquals('Dutch', $dutchLanguage->getDisplayName());
$this->assertEquals('Nederlands', $dutchLanguage->getNativeName());
$this->assertEquals('nl', $dutchLanguage->getTwoLetterISOLanguageName());
$this->assertEquals('nld', $dutchLanguage->getThreeLetterISOLanguageName());
/** @var Language $fryskLanguage */
$this->assertEquals('fy', $fryskLanguage->getName());
$this->assertEquals('Western Frisian', $fryskLanguage->getDisplayName());
$this->assertEquals('Frysk', $fryskLanguage->getNativeName());
$this->assertEquals('fy', $fryskLanguage->getTwoLetterISOLanguageName());
$this->assertEquals('fry', $fryskLanguage->getThreeLetterISOLanguageName());
//United status
$regionInfo = RegionInfo::getInstance('US');
$this->assertEquals('United States', $regionInfo->getDisplayName());
$this->assertEquals('United States', $regionInfo->getNativeName());
$this->assertEquals('Dollar', $regionInfo->getCurrencyName());
$this->assertEquals('cent', $regionInfo->getCurrencyMinorName());
$this->assertEquals('$', $regionInfo->getCurrencySymbol());
$this->assertEquals('USD', $regionInfo->getISOCurrencySymbol());
$this->assertFalse($regionInfo->isMetric());
$this->assertEquals('USA', $regionInfo->getThreeLetterISORegionName());
$this->assertEquals('US', $regionInfo->getTwoLetterISORegionName());
$this->assertEquals('US', $regionInfo->getName());
$this->assertCount(3, $regionInfo->getLanguages());
$englishLanguage = $regionInfo->getLanguages()[0];
$this->assertInstanceOf(Language::class, $englishLanguage);
/** @var Language $englishLanguage */
$this->assertEquals('en', $englishLanguage->getName());
$this->assertEquals('English', $englishLanguage->getDisplayName());
$this->assertEquals('English', $englishLanguage->getNativeName());
$this->assertEquals('en', $englishLanguage->getTwoLetterISOLanguageName());
$this->assertEquals('eng', $englishLanguage->getThreeLetterISOLanguageName());
$spanishLanguage = $regionInfo->getLanguages()[1];
$this->assertInstanceOf(Language::class, $spanishLanguage);
/** @var Language $englishLanguage */
$this->assertEquals('es', $spanishLanguage->getName());
$this->assertEquals('Spanish', $spanishLanguage->getDisplayName());
$this->assertEquals('Español', $spanishLanguage->getNativeName());
$this->assertEquals('es', $spanishLanguage->getTwoLetterISOLanguageName());
$this->assertEquals('spa', $spanishLanguage->getThreeLetterISOLanguageName());
$spanishLanguage = $regionInfo->getLanguages()[1];
$this->assertInstanceOf(Language::class, $spanishLanguage);
/** @var Language $englishLanguage */
$this->assertEquals('es', $spanishLanguage->getName());
$this->assertEquals('Spanish', $spanishLanguage->getDisplayName());
$this->assertEquals('Español', $spanishLanguage->getNativeName());
$this->assertEquals('es', $spanishLanguage->getTwoLetterISOLanguageName());
$this->assertEquals('spa', $spanishLanguage->getThreeLetterISOLanguageName());
$frenchLanguage = $regionInfo->getLanguages()[2];
$this->assertInstanceOf(Language::class, $frenchLanguage);
/** @var Language $englishLanguage */
$this->assertEquals('fr', $frenchLanguage->getName());
$this->assertEquals('French', $frenchLanguage->getDisplayName());
$this->assertEquals('Français', $frenchLanguage->getNativeName());
$this->assertEquals('fr', $frenchLanguage->getTwoLetterISOLanguageName());
$this->assertEquals('fra', $frenchLanguage->getThreeLetterISOLanguageName());
}
/**
* @group Globalisation
* @group G11N
* @test
*/
public function testUTF8Language()
{
$regionInfo = RegionInfo::getInstance('RU');
$this->assertEquals('Russia', $regionInfo->getDisplayName());
$this->assertEquals('Rossiyab', $regionInfo->getNativeName());
$this->assertEquals('Ruble', $regionInfo->getCurrencyName());
$this->assertEquals('kopeck', $regionInfo->getCurrencyMinorName());
$this->assertEquals('₽', $regionInfo->getCurrencySymbol());
$this->assertEquals('RUB', $regionInfo->getISOCurrencySymbol());
$russianLanguage = $regionInfo->getLanguages()[0];
$this->assertInstanceOf(Language::class, $russianLanguage);
/** @var Language $englishLanguage */
$this->assertEquals('ru', $russianLanguage->getName());
$this->assertEquals('Russian', $russianLanguage->getDisplayName());
$this->assertEquals('Русский', $russianLanguage->getNativeName());
$this->assertEquals('ru', $russianLanguage->getTwoLetterISOLanguageName());
$this->assertEquals('rus', $russianLanguage->getThreeLetterISOLanguageName());
}
/**
* @group Globalisation
* @group G11N
* @test
*/
public function getIsoCurrencySymbolWhileOnlyUsingCountryIsoTest()
{
$regionInfo = RegionInfo::getInstance('US');
$this->assertEquals('United States', $regionInfo->getDisplayName());
$this->assertEquals('United States', $regionInfo->getNativeName());
$this->assertEquals('Dollar', $regionInfo->getCurrencyName());
$this->assertEquals('$', $regionInfo->getCurrencySymbol());
$this->assertEquals('USD', $regionInfo->getISOCurrencySymbol());
$this->assertFalse($regionInfo->isMetric());
$this->assertEquals('USA', $regionInfo->getThreeLetterISORegionName());
$this->assertEquals('US', $regionInfo->getTwoLetterISORegionName());
$this->assertEquals('US', $regionInfo->getName());
}
/**
* @group Globalisation
* @group G11N
* @test
*/
public function checkTheNumberFormatInfoFromRegionInfo()
{
$regionInfo = RegionInfo::getInstance('US');
$this->assertEquals(3, $regionInfo->getNumberFormat()->getCurrencyGroupSizes());
$this->assertEquals(2, $regionInfo->getNumberFormat()->getCurrencyDecimalDigits());
$this->assertEquals('.', $regionInfo->getNumberFormat()->getCurrencyDecimalSeparator());
$this->assertEquals(',', $regionInfo->getNumberFormat()->getCurrencyGroupSeparator());
$this->assertSame('10,000.25', $regionInfo->getNumberFormat()->centsToCurrency(1000025, true)); //assertSame does typechecking, assertEquals not
$regionInfo = RegionInfo::getInstance('NL');
$this->assertEquals(3, $regionInfo->getNumberFormat()->getCurrencyGroupSizes());
$this->assertEquals(2, $regionInfo->getNumberFormat()->getCurrencyDecimalDigits());
$this->assertEquals(',', $regionInfo->getNumberFormat()->getCurrencyDecimalSeparator());
$this->assertEquals('.', $regionInfo->getNumberFormat()->getCurrencyGroupSeparator());
$this->assertSame('10.000,25', $regionInfo->getNumberFormat()->centsToCurrency(1000025, true));
$regionInfo = RegionInfo::getInstance('NL');
$this->assertSame('10,01', $regionInfo->getNumberFormat()->centsToCurrency(1001, true)); //1001 divided by 100 is 10,0099999999999998. So we expect 10,01 because it should round to 2 decimal places
$this->assertSame('10,10', $regionInfo->getNumberFormat()->centsToCurrency(1010, true)); //We expect trailing zeroes when there is a decimal and it is not of the same length as the amount of decimal digits specified
$this->assertSame('10', $regionInfo->getNumberFormat()->centsToCurrency(1000, true)); //It drop leave the decimals when there are none by default. E.g. numbers like 10,00 should become 10
$this->assertSame('10,00', $regionInfo->getNumberFormat()->centsToCurrency(1000, true, true)); //But if we specify an argument. We just add them.
}
/**
* @group Globalisation
* @group G11N
* @test
*/
public function checkGettingRegionInfoUsingWhere()
{
//Check if we can get greece
$regionInfos = RegionInfo::getWhere('nativeName', '=', 'Hellas');
$this->assertCount(1, $regionInfos);
/** @var RegionInfo $greeceRegionInfo */
$greeceRegionInfo = $regionInfos->first();
$this->assertEquals('Greece', $greeceRegionInfo->getDisplayName());
}
/**
* @group Globalisation
* @group G11N
* @test
*/
public function checkGettingNeutralRegionFromSpecificRegion()
{
$regionInfo = RegionInfo::getInstance('nl-BE');
$neutral = $regionInfo->getNeutralRegionInfo();
$this->assertEquals('België', $neutral->getNativeName());
}
/**
* @group Globalisation
* @group G11N
* @test
*/
public function getAllCulturesCountTest()
{
$specificCultures = RegionInfo::getSpecificCultures(); //Cultures bound to both a region and language
$cultures = RegionInfo::getAllCultures(); //All cultures
$neutralCultures = RegionInfo::getNeutralCultures(); //Cultures not bound to a region. Only a language
$this->assertNotEquals($cultures->count(), $specificCultures->count());
$this->assertNotEquals($cultures->count(), $neutralCultures->count());
$this->assertEquals($cultures->count(), $specificCultures->count() + $neutralCultures->count(), 'The total amount of cultures ('.$cultures->count().') was expected to match the amount of neutral cultures ('.$neutralCultures->count().') plus the specific cultures ('.$specificCultures->count().').');
}
}