* Update digitGroupingPattern to match CLDR 31: New versions of CLDR has digit grouping pattern with decimal part. Update digitGroupingPattern values in Message classes with this improved pattern. Refer: http://unicode.org/reports/tr35/tr35-numbers.html * Refer the following chart for the decimal patterns. http://www.unicode.org/cldr/charts/31/by_type/numbers.number_formatting_patterns.html * Uses PHP NumberFormatter class for the commafy implementation, which is available in PHP 7. * Some tests need to update to match the TR 35 spec * The formatNum public method in Language.php is the preferred way to use this feature. It does separator transformation and digit transformation wherever applicable. * Renamed the second param name for formatNum from noCommafy to noSeparators * commafy method is deprecated and formatNum is preferred. Practically, we are not just adding comma, but seperators according to the language. Replaced some tests based on commafy methods with tests based on formatNum. Note: The corresponding js implementation is not changed in this commit. It would probably be a good idea to use globalize.js, which is also based on the CLDR patterns. Note: This patch preserves the existing off-by-one error in $minimumGroupingDigits; T262500 will eventually fix this. Bug: T167088 Co-Authored-By: C. Scott Ananian <cscott@cscott.net> Change-Id: Ic721b9a91e78e4ef07040339d1006b7a90a910c0
101 lines
2.3 KiB
PHP
101 lines
2.3 KiB
PHP
<?php
|
||
|
||
// phpcs:disable Squiz.Classes.ValidClassName.NotCamelCaps
|
||
/**
|
||
* @covers LanguageBe_tarask
|
||
*/
|
||
class LanguageBe_taraskTest extends LanguageClassesTestCase {
|
||
// phpcs:enable
|
||
|
||
/**
|
||
* Make sure the language code we are given is indeed
|
||
* be-tarask. This is to ensure LanguageClassesTestCase
|
||
* does not give us the wrong language.
|
||
*/
|
||
public function testBeTaraskTestsUsesBeTaraskCode() {
|
||
$this->assertEquals( 'be-tarask',
|
||
$this->getLang()->getCode()
|
||
);
|
||
}
|
||
|
||
/**
|
||
* @see T25156 & r64981
|
||
* @covers Language::normalizeForSearch
|
||
*/
|
||
public function testSearchRightSingleQuotationMarkAsApostroph() {
|
||
$this->assertEquals(
|
||
"'",
|
||
$this->getLang()->normalizeForSearch( '’' ),
|
||
'T25156: U+2019 conversion to U+0027'
|
||
);
|
||
}
|
||
|
||
/**
|
||
* @see T25156 & r64981
|
||
* @covers Language::formatNum
|
||
*/
|
||
public function testFormatNum() {
|
||
$this->assertEquals( '1 234 567', $this->getLang()->formatNum( '1234567' ) );
|
||
$this->assertEquals( '12 345', $this->getLang()->formatNum( '12345' ) );
|
||
}
|
||
|
||
/**
|
||
* @see T25156 & r64981
|
||
* @covers Language::formatNum
|
||
*/
|
||
public function testDoesNotCommafyFourDigitsNumber() {
|
||
$this->assertSame( '1234', $this->getLang()->formatNum( '1234' ) );
|
||
}
|
||
|
||
/**
|
||
* @dataProvider providePlural
|
||
* @covers Language::convertPlural
|
||
*/
|
||
public function testPlural( $result, $value ) {
|
||
$forms = [ 'one', 'few', 'many', 'other' ];
|
||
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
|
||
}
|
||
|
||
/**
|
||
* @dataProvider providePlural
|
||
* @covers Language::getPluralRuleType
|
||
*/
|
||
public function testGetPluralRuleType( $result, $value ) {
|
||
$this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) );
|
||
}
|
||
|
||
public static function providePlural() {
|
||
return [
|
||
[ 'one', 1 ],
|
||
[ 'many', 11 ],
|
||
[ 'one', 91 ],
|
||
[ 'one', 121 ],
|
||
[ 'few', 2 ],
|
||
[ 'few', 3 ],
|
||
[ 'few', 4 ],
|
||
[ 'few', 334 ],
|
||
[ 'many', 5 ],
|
||
[ 'many', 15 ],
|
||
[ 'many', 120 ],
|
||
];
|
||
}
|
||
|
||
/**
|
||
* @dataProvider providePluralTwoForms
|
||
* @covers Language::convertPlural
|
||
*/
|
||
public function testPluralTwoForms( $result, $value ) {
|
||
$forms = [ '1=one', 'other' ];
|
||
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
|
||
}
|
||
|
||
public static function providePluralTwoForms() {
|
||
return [
|
||
[ 'other', 0 ],
|
||
[ 'one', 1 ],
|
||
[ 'other', 11 ],
|
||
[ 'other', 91 ],
|
||
[ 'other', 121 ],
|
||
];
|
||
}
|
||
}
|