HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/SBogers10/boldt.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());
    }
}