File: D:/HostingSpaces/SBogers10/slenders.komma.pro/tests/Unit/GlobalisationTest.php
<?php
namespace Tests\Unit;
use App\Komma\Globalization\CultureInfo;
use App\Komma\Globalization\CultureTypes;
use App\Komma\Globalization\RegionInfo;
use Tests\TestCase;
class GlobalisationTest extends TestCase
{
/**
* @group Globalisation
* @group G11N
* @test
*/
public function basictests()
{
$cultureInfo = new CultureInfo('nl');
$this->assertEquals(0, $cultureInfo->getCultureId());
$this->assertEquals('Dutch', $cultureInfo->getDisplayName());
$this->assertEquals('Dutch', $cultureInfo->getEnglishName());
$this->assertEquals(true, $cultureInfo->isNeutralCulture());
$this->assertNull( $cultureInfo->getParent());
$this->assertEquals('Nederlands', $cultureInfo->getNativeName());
$this->assertEquals('NLD', $cultureInfo->getThreeLetterIsoLanguageName());
$this->assertEquals('NL', $cultureInfo->getTwoLetterIsoLanguageName());
$this->assertEquals('nl', $cultureInfo->getName());
$regionInfo = new RegionInfo('nl-BE');
$this->assertEquals('Belgium', $regionInfo->getDisplayName());
$this->assertEquals('Belgium', $regionInfo->getEnglishName());
$this->assertEquals('België', $regionInfo->getNativeName());
$this->assertEquals('Euro', $regionInfo->getCurrencyEnglishName());
$this->assertEquals('euro', $regionInfo->getCurrencyNativeName());
$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());
}
/**
* @group Globalisation
* @group G11N
* @test
*/
public function getIsoCurrencySymbolWhileOnlyUsingCountryIsoTest()
{
$regionInfo = new RegionInfo('US');
$this->assertEquals('United states', $regionInfo->getDisplayName());
$this->assertEquals('United states', $regionInfo->getEnglishName());
$this->assertEquals('United states', $regionInfo->getNativeName());
$this->assertEquals('Dollar', $regionInfo->getCurrencyEnglishName());
$this->assertEquals('Dollar', $regionInfo->getCurrencyNativeName());
$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 = new RegionInfo('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 = new RegionInfo('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 = new RegionInfo('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 checkGetAllCultures()
{
$allCultures = CultureInfo::getCultures(CultureTypes::ALL_CULTURES);
$nlCulture = $allCultures[0]; //Neutral
$enCulture = $allCultures[1];
$deCulture = $allCultures[2];
$nlNLCulture = $allCultures[3]; //Specific
$nlBECulture = $allCultures[4];
$this->assertEquals('nl', $nlCulture->getName());
$this->assertEquals('Nederlands', $nlCulture->getNativeName());
$this->assertEquals('Dutch', $nlCulture->getDisplayName());
$this->assertEquals('nl-NL', $nlNLCulture->getName());
$this->assertEquals('Nederlands (Nederland)', $nlNLCulture->getNativeName());
$this->assertEquals('Dutch (Netherlands)', $nlNLCulture->getDisplayName());
$this->assertEquals('nl-BE', $nlBECulture->getName());
$this->assertEquals('Nederlands (België)', $nlBECulture->getNativeName());
$this->assertEquals('Dutch (Belgium)', $nlBECulture->getDisplayName());
}
/**
* @group Globalisation
* @test
*/
public function checkGetNeutralCultures()
{
$allCultures = CultureInfo::getCultures(CultureTypes::NEUTRAL_CULTURES);
$nlCulture = $allCultures[0];
$enCulture = $allCultures[1];
$deCulture = $allCultures[2];
$this->assertEquals('nl', $nlCulture->getName());
$this->assertEquals('Nederlands', $nlCulture->getNativeName());
$this->assertEquals('Dutch', $nlCulture->getDisplayName());
$this->assertEquals('en', $enCulture->getName());
$this->assertEquals('English', $enCulture->getNativeName());
$this->assertEquals('English', $enCulture->getDisplayName());
$this->assertEquals('de', $deCulture->getName());
$this->assertEquals('Deutsch', $deCulture->getNativeName());
$this->assertEquals('German', $deCulture->getDisplayName());
}
/**
* @group Globalisation
* @test
*/
public function checkGetSpecificCultures()
{
$allCultures = CultureInfo::getCultures(CultureTypes::SPECIFIC_CULTURES);
$nlNLCulture = $allCultures[0];
$nlBECulture = $allCultures[1];
$enGBCulture = $allCultures[2];
$this->assertEquals('nl-NL', $nlNLCulture->getName());
$this->assertEquals('Nederlands (Nederland)', $nlNLCulture->getNativeName());
$this->assertEquals('Dutch (Netherlands)', $nlNLCulture->getDisplayName());
$this->assertEquals('nl-BE', $nlBECulture->getName());
$this->assertEquals('Nederlands (België)', $nlBECulture->getNativeName());
$this->assertEquals('Dutch (Belgium)', $nlBECulture->getDisplayName());
$this->assertEquals('en-GB', $enGBCulture->getName());
$this->assertEquals('English (United Kingdom)', $enGBCulture->getNativeName());
$this->assertEquals('English (United Kingdom)', $enGBCulture->getDisplayName());
}
}