From 06b0967caa524e8f50e26aa8a9c6e1650f28c1db Mon Sep 17 00:00:00 2001 From: Kaldari Date: Thu, 24 Jan 2013 17:10:37 -0800 Subject: [PATCH] Allow the retrieval of the plural rule type for a given number For example, find out which rule type should be applied for 5 items in Arabic. The result would be 'few'. This implementation should be non-disruptive and completely backwards compatible (which is the main reason it isn't a lot simpler). Change-Id: I3d72e4105f6244b0695116940e62a2ddef66eb66 --- includes/cache/LocalisationCache.php | 69 ++++++++++++--- languages/Language.php | 48 ++++++++-- languages/classes/LanguageMk.php | 49 ----------- languages/data/plurals-mediawiki.xml | 1 + tests/phpunit/languages/LanguageAmTest.php | 6 +- tests/phpunit/languages/LanguageArTest.php | 6 +- tests/phpunit/languages/LanguageBeTest.php | 6 +- .../languages/LanguageBe_taraskTest.php | 25 +++--- tests/phpunit/languages/LanguageBhoTest.php | 7 +- tests/phpunit/languages/LanguageBsTest.php | 7 +- tests/phpunit/languages/LanguageCsTest.php | 13 +-- tests/phpunit/languages/LanguageCuTest.php | 25 +++--- tests/phpunit/languages/LanguageCyTest.php | 13 +-- tests/phpunit/languages/LanguageDsbTest.php | 7 +- tests/phpunit/languages/LanguageFrTest.php | 7 +- tests/phpunit/languages/LanguageGaTest.php | 13 +-- tests/phpunit/languages/LanguageGdTest.php | 1 - tests/phpunit/languages/LanguageGvTest.php | 17 ++-- tests/phpunit/languages/LanguageHeTest.php | 40 ++++----- tests/phpunit/languages/LanguageHiTest.php | 7 +- tests/phpunit/languages/LanguageHrTest.php | 13 +-- tests/phpunit/languages/LanguageHsbTest.php | 7 +- tests/phpunit/languages/LanguageHuTest.php | 7 +- tests/phpunit/languages/LanguageHyTest.php | 14 +-- tests/phpunit/languages/LanguageKshTest.php | 13 +-- tests/phpunit/languages/LanguageLnTest.php | 7 +- tests/phpunit/languages/LanguageLtTest.php | 35 +++++--- tests/phpunit/languages/LanguageLvTest.php | 13 +-- tests/phpunit/languages/LanguageMgTest.php | 7 +- tests/phpunit/languages/LanguageMkTest.php | 15 ++-- tests/phpunit/languages/LanguageMoTest.php | 20 +++-- tests/phpunit/languages/LanguageMtTest.php | 62 +++++++------ tests/phpunit/languages/LanguageNsoTest.php | 20 +++-- tests/phpunit/languages/LanguagePlTest.php | 88 ++++++++++--------- tests/phpunit/languages/LanguageRoTest.php | 20 +++-- tests/phpunit/languages/LanguageRuTest.php | 22 +++-- tests/phpunit/languages/LanguageSeTest.php | 22 +++-- tests/phpunit/languages/LanguageSgsTest.php | 6 +- tests/phpunit/languages/LanguageShTest.php | 26 ++++-- tests/phpunit/languages/LanguageSkTest.php | 12 ++- tests/phpunit/languages/LanguageSlTest.php | 18 ++-- tests/phpunit/languages/LanguageSmaTest.php | 22 +++-- tests/phpunit/languages/LanguageSrTest.php | 24 ++--- tests/phpunit/languages/LanguageTiTest.php | 20 +++-- tests/phpunit/languages/LanguageTlTest.php | 20 +++-- tests/phpunit/languages/LanguageUkTest.php | 22 +++-- tests/phpunit/languages/LanguageWaTest.php | 20 +++-- 47 files changed, 559 insertions(+), 383 deletions(-) delete mode 100644 languages/classes/LanguageMk.php diff --git a/includes/cache/LocalisationCache.php b/includes/cache/LocalisationCache.php index 009b9507d1..2de7b48c1d 100644 --- a/includes/cache/LocalisationCache.php +++ b/includes/cache/LocalisationCache.php @@ -110,7 +110,7 @@ class LocalisationCache { 'dateFormats', 'datePreferences', 'datePreferenceMigrationMap', 'defaultDateFormat', 'extraUserToggles', 'specialPageAliases', 'imageFiles', 'preloadedMessages', 'namespaceGenderAliases', - 'digitGroupingPattern', 'pluralRules', 'compiledPluralRules', + 'digitGroupingPattern', 'pluralRules', 'pluralRuleTypes', 'compiledPluralRules', ); /** @@ -160,6 +160,20 @@ class LocalisationCache { */ var $pluralRules = null; + /** + * Associative array of cached plural rule types. The key is the language + * code, the value is an array of plural rule types for that language. For + * example, $pluralRuleTypes['ar'] = ['zero', 'one', 'two', 'few', 'many']. + * The index for each rule type matches the index for the rule in + * $pluralRules, thus allowing correlation between the two. The reason we + * don't just use the type names as the keys in $pluralRules is because + * Language::convertPlural applies the rules based on numeric order (or + * explicit numeric parameter), not based on the name of the rule type. For + * example, {{plural:count|wordform1|wordform2|wordform3}}, rather than + * {{plural:count|one=wordform1|two=wordform2|many=wordform3}}. + */ + var $pluralRuleTypes = null; + var $mergeableKeys = null; /** @@ -519,17 +533,8 @@ class LocalisationCache { * @since 1.20 */ public function getPluralRules( $code ) { - global $IP; - if ( $this->pluralRules === null ) { - $cldrPlural = "$IP/languages/data/plurals.xml"; - $mwPlural = "$IP/languages/data/plurals-mediawiki.xml"; - // Load CLDR plural rules - $this->loadPluralFile( $cldrPlural ); - if ( file_exists( $mwPlural ) ) { - // Override or extend - $this->loadPluralFile( $mwPlural ); - } + $this->loadPluralFiles(); } if ( !isset( $this->pluralRules[$code] ) ) { return null; @@ -538,6 +543,37 @@ class LocalisationCache { } } + /** + * Get the plural rule types for a given language from the XML files. + * Cached. + * @since 1.21 + */ + public function getPluralRuleTypes( $code ) { + if ( $this->pluralRuleTypes === null ) { + $this->loadPluralFiles(); + } + if ( !isset( $this->pluralRuleTypes[$code] ) ) { + return null; + } else { + return $this->pluralRuleTypes[$code]; + } + } + + /** + * Load the plural XML files. + */ + protected function loadPluralFiles() { + global $IP; + $cldrPlural = "$IP/languages/data/plurals.xml"; + $mwPlural = "$IP/languages/data/plurals-mediawiki.xml"; + // Load CLDR plural rules + $this->loadPluralFile( $cldrPlural ); + if ( file_exists( $mwPlural ) ) { + // Override or extend + $this->loadPluralFile( $mwPlural ); + } + } + /** * Load a plural XML file with the given filename, compile the relevant * rules, and save the compiled rules in a process-local cache. @@ -549,12 +585,16 @@ class LocalisationCache { foreach ( $rulesets as $ruleset ) { $codes = $ruleset->getAttribute( 'locales' ); $rules = array(); + $ruleTypes = array(); $ruleElements = $ruleset->getElementsByTagName( "pluralRule" ); foreach ( $ruleElements as $elt ) { + $ruleType = $elt->getAttribute( 'count' ); $rules[] = $elt->nodeValue; + $ruleTypes[] = $ruleType; } foreach ( explode( ' ', $codes ) as $code ) { $this->pluralRules[$code] = $rules; + $this->pluralRuleTypes[$code] = $ruleTypes; } } } @@ -579,6 +619,8 @@ class LocalisationCache { $data['pluralRules'] = $this->getPluralRules( $code ); # And for PHP $data['compiledPluralRules'] = $this->getCompiledPluralRules( $code ); + # Load plural rule types + $data['pluralRuleTypes'] = $this->getPluralRuleTypes( $code ); $deps['plurals'] = new FileDependency( "$IP/languages/data/plurals.xml" ); $deps['plurals-mw'] = new FileDependency( "$IP/languages/data/plurals-mediawiki.xml" ); @@ -786,6 +828,10 @@ class LocalisationCache { if ( $allData['compiledPluralRules'] === null ) { $allData['compiledPluralRules'] = array(); } + # If there were no plural rule types, return an empty array + if ( $allData['pluralRuleTypes'] === null ) { + $allData['pluralRuleTypes'] = array(); + } # Set the list keys $allData['list'] = array(); @@ -1284,5 +1330,4 @@ class LocalisationCache_BulkLoad extends LocalisationCache { $this->unload( $code ); } } - } diff --git a/languages/Language.php b/languages/Language.php index 9641a89c38..42883b552e 100644 --- a/languages/Language.php +++ b/languages/Language.php @@ -44,7 +44,6 @@ if ( function_exists( 'mb_strtoupper' ) ) { * @ingroup Language */ class FakeConverter { - /** * @var Language */ @@ -3544,7 +3543,7 @@ class Language { } $forms = array_values( $forms ); - $pluralForm = $this->getPluralForm( $count ); + $pluralForm = $this->getPluralRuleIndexNumber( $count ); $pluralForm = min( $pluralForm, count( $forms ) - 1 ); return $forms[$pluralForm]; } @@ -4410,7 +4409,7 @@ class Language { /** * Get the plural rules for the language * @since 1.20 - * @return array Associative array with plural form, and plural rule as key-value pairs + * @return array Associative array with plural form number and plural rule as key-value pairs */ public function getPluralRules() { $pluralRules = self::$dataCache->getItem( strtolower( $this->mCode ), 'pluralRules' ); @@ -4427,13 +4426,48 @@ class Language { } /** - * Find the plural form matching to the given number - * It return the form index. - * @return int The index of the plural form + * Get the plural rule types for the language + * @since 1.21 + * @return array Associative array with plural form number and plural rule type as key-value pairs + */ + public function getPluralRuleTypes() { + $pluralRuleTypes = self::$dataCache->getItem( strtolower( $this->mCode ), 'pluralRuleTypes' ); + $fallbacks = Language::getFallbacksFor( $this->mCode ); + if ( !$pluralRuleTypes ) { + foreach ( $fallbacks as $fallbackCode ) { + $pluralRuleTypes = self::$dataCache->getItem( strtolower( $fallbackCode ), 'pluralRuleTypes' ); + if ( $pluralRuleTypes ) { + break; + } + } + } + return $pluralRuleTypes; + } + + /** + * Find the index number of the plural rule appropriate for the given number + * @return int The index number of the plural rule */ - private function getPluralForm( $number ) { + public function getPluralRuleIndexNumber( $number ) { $pluralRules = $this->getCompiledPluralRules(); $form = CLDRPluralRuleEvaluator::evaluateCompiled( $number, $pluralRules ); return $form; } + + /** + * Find the plural rule type appropriate for the given number + * For example, if the language is set to Arabic, getPluralType(5) should + * return 'few'. + * @since 1.21 + * @return string The name of the plural rule type, e.g. one, two, few, many + */ + public function getPluralRuleType( $number ) { + $index = $this->getPluralRuleIndexNumber( $number ); + $pluralRuleTypes = $this->getPluralRuleTypes(); + if ( isset( $pluralRuleTypes[$index] ) ) { + return $pluralRuleTypes[$index]; + } else { + return 'other'; + } + } } diff --git a/languages/classes/LanguageMk.php b/languages/classes/LanguageMk.php deleted file mode 100644 index 968fe26566..0000000000 --- a/languages/classes/LanguageMk.php +++ /dev/null @@ -1,49 +0,0 @@ -preConvertPlural( $forms, 2 ); - // TODO CLDR defines forms[0] for n != 11 and not for n%100 !== 11 - if ( $count % 10 === 1 && $count % 100 !== 11 ) { - return $forms[0]; - } else { - return $forms[1]; - } - } -} diff --git a/languages/data/plurals-mediawiki.xml b/languages/data/plurals-mediawiki.xml index 07e157a367..5ad6717d31 100644 --- a/languages/data/plurals-mediawiki.xml +++ b/languages/data/plurals-mediawiki.xml @@ -2,6 +2,7 @@ + n is 1 n is 2 diff --git a/tests/phpunit/languages/LanguageAmTest.php b/tests/phpunit/languages/LanguageAmTest.php index 9723e1e394..ebbe5a2ca6 100644 --- a/tests/phpunit/languages/LanguageAmTest.php +++ b/tests/phpunit/languages/LanguageAmTest.php @@ -7,13 +7,17 @@ /** Tests for MediaWiki languages/LanguageAm.php */ class LanguageAmTest extends LanguageClassesTestCase { - /** @dataProvider providePlural */ function testPlural( $result, $value ) { $forms = array( 'one', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + function providePlural() { return array( array( 'one', 0 ), diff --git a/tests/phpunit/languages/LanguageArTest.php b/tests/phpunit/languages/LanguageArTest.php index 523ee7f623..fee05fcdb3 100644 --- a/tests/phpunit/languages/LanguageArTest.php +++ b/tests/phpunit/languages/LanguageArTest.php @@ -6,7 +6,6 @@ /** Tests for MediaWiki languages/LanguageAr.php */ class LanguageArTest extends LanguageClassesTestCase { - function testFormatNum() { $this->assertEquals( '١٬٢٣٤٬٥٦٧', $this->getLang()->formatNum( '1234567' ) ); $this->assertEquals( '-١٢٫٨٩', $this->getLang()->formatNum( -12.89 ) ); @@ -51,6 +50,11 @@ class LanguageArTest extends LanguageClassesTestCase { $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + function providePlural() { return array( array( 'zero', 0 ), diff --git a/tests/phpunit/languages/LanguageBeTest.php b/tests/phpunit/languages/LanguageBeTest.php index 0144941b6e..340b33424e 100644 --- a/tests/phpunit/languages/LanguageBeTest.php +++ b/tests/phpunit/languages/LanguageBeTest.php @@ -7,13 +7,17 @@ /** Tests for MediaWiki languages/LanguageBe.php */ class LanguageBeTest extends LanguageClassesTestCase { - /** @dataProvider providePlural */ function testPlural( $result, $value ) { $forms = array( 'one', 'few', 'many', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + function providePlural() { return array( array( 'one', 1 ), diff --git a/tests/phpunit/languages/LanguageBe_taraskTest.php b/tests/phpunit/languages/LanguageBe_taraskTest.php index 5b246d8ed6..aa8c28a020 100644 --- a/tests/phpunit/languages/LanguageBe_taraskTest.php +++ b/tests/phpunit/languages/LanguageBe_taraskTest.php @@ -1,7 +1,6 @@ assertEquals( '1234', $this->getLang()->commafy( '1234' ) ); } - /** @dataProvider providePluralFourForms */ - function testPluralFourForms( $result, $value ) { - $forms = array( 'one', 'few', 'many', 'other' ); + /** @dataProvider providePlural */ + function testPlural( $result, $value ) { + $forms = array( 'one', 'few', 'many', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } - function providePluralFourForms() { - return array( + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + function providePlural() { + return array ( array( 'one', 1 ), array( 'many', 11 ), array( 'one', 91 ), @@ -57,17 +61,16 @@ class LanguageBe_taraskTest extends LanguageClassesTestCase { /** @dataProvider providePluralTwoForms */ function testPluralTwoForms( $result, $value ) { - $forms = array( 'one', 'several' ); + $forms = array( 'one', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } function providePluralTwoForms() { return array( array( 'one', 1 ), - array( 'several', 11 ), - array( 'several', 91 ), - array( 'several', 121 ), + array( 'other', 11 ), + array( 'other', 91 ), + array( 'other', 121 ), ); } - } diff --git a/tests/phpunit/languages/LanguageBhoTest.php b/tests/phpunit/languages/LanguageBhoTest.php index c364917d20..7384ed70a5 100644 --- a/tests/phpunit/languages/LanguageBhoTest.php +++ b/tests/phpunit/languages/LanguageBhoTest.php @@ -7,13 +7,17 @@ /** Tests for MediaWiki languages/LanguageBho.php */ class LanguageBhoTest extends LanguageClassesTestCase { - /** @dataProvider providePlural */ function testPlural( $result, $value ) { $forms = array( 'one', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + function providePlural() { return array( array( 'one', 0 ), @@ -22,5 +26,4 @@ class LanguageBhoTest extends LanguageClassesTestCase { array( 'other', 200 ), ); } - } diff --git a/tests/phpunit/languages/LanguageBsTest.php b/tests/phpunit/languages/LanguageBsTest.php index 76d00704ca..d44dc32efb 100644 --- a/tests/phpunit/languages/LanguageBsTest.php +++ b/tests/phpunit/languages/LanguageBsTest.php @@ -7,13 +7,17 @@ /** Tests for MediaWiki languages/LanguageBs.php */ class LanguageBsTest extends LanguageClassesTestCase { - /** @dataProvider providePlural */ function testPlural( $result, $value ) { $forms = array( 'one', 'few', 'many', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + function providePlural() { return array( array( 'many', 0 ), @@ -29,5 +33,4 @@ class LanguageBsTest extends LanguageClassesTestCase { array( 'many', 200 ), ); } - } diff --git a/tests/phpunit/languages/LanguageCsTest.php b/tests/phpunit/languages/LanguageCsTest.php index 884a129e54..9a4991b62f 100644 --- a/tests/phpunit/languages/LanguageCsTest.php +++ b/tests/phpunit/languages/LanguageCsTest.php @@ -7,15 +7,19 @@ /** Tests for MediaWiki languages/classes/Languagecs.php */ class LanguageCsTest extends LanguageClassesTestCase { - - /** @dataProvider providerPlural */ + /** @dataProvider providePlural */ function testPlural( $result, $value ) { $forms = array( 'one', 'few', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } - function providerPlural() { - return array( + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + function providePlural() { + return array ( array( 'other', 0 ), array( 'one', 1 ), array( 'few', 2 ), @@ -28,5 +32,4 @@ class LanguageCsTest extends LanguageClassesTestCase { array( 'other', 200 ), ); } - } diff --git a/tests/phpunit/languages/LanguageCuTest.php b/tests/phpunit/languages/LanguageCuTest.php index e2394b35cb..73849186f6 100644 --- a/tests/phpunit/languages/LanguageCuTest.php +++ b/tests/phpunit/languages/LanguageCuTest.php @@ -7,27 +7,30 @@ /** Tests for MediaWiki languages/LanguageCu.php */ class LanguageCuTest extends LanguageClassesTestCase { - - /** @dataProvider providerPlural */ + /** @dataProvider providePlural */ function testPlural( $result, $value ) { - $forms = array( 'one', 'few', 'many', 'other' ); + $forms = array( 'one', 'two', 'few', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } - function providerPlural() { - return array( + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + function providePlural() { + return array ( array( 'other', 0 ), array( 'one', 1 ), - array( 'few', 2 ), - array( 'many', 3 ), - array( 'many', 4 ), + array( 'two', 2 ), + array( 'few', 3 ), + array( 'few', 4 ), array( 'other', 5 ), array( 'one', 11 ), array( 'other', 20 ), - array( 'few', 22 ), - array( 'many', 223 ), + array( 'two', 22 ), + array( 'few', 223 ), array( 'other', 200 ), ); } - } diff --git a/tests/phpunit/languages/LanguageCyTest.php b/tests/phpunit/languages/LanguageCyTest.php index 2a7f4a925f..d56d622c8d 100644 --- a/tests/phpunit/languages/LanguageCyTest.php +++ b/tests/phpunit/languages/LanguageCyTest.php @@ -7,15 +7,19 @@ /** Tests for MediaWiki languages/classes/LanguageCy.php */ class LanguageCyTest extends LanguageClassesTestCase { - - /** @dataProvider providerPlural */ + /** @dataProvider providePlural */ function testPlural( $result, $value ) { $forms = array( 'zero', 'one', 'two', 'few', 'many', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } - function providerPlural() { - return array( + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + function providePlural() { + return array ( array( 'zero', 0 ), array( 'one', 1 ), array( 'two', 2 ), @@ -30,5 +34,4 @@ class LanguageCyTest extends LanguageClassesTestCase { array( 'other', 200.00 ), ); } - } diff --git a/tests/phpunit/languages/LanguageDsbTest.php b/tests/phpunit/languages/LanguageDsbTest.php index 285ce64864..b3f01c3af7 100644 --- a/tests/phpunit/languages/LanguageDsbTest.php +++ b/tests/phpunit/languages/LanguageDsbTest.php @@ -7,13 +7,17 @@ /** Tests for MediaWiki languages/classes/LanguageDsb.php */ class LanguageDsbTest extends LanguageClassesTestCase { - /** @dataProvider providePlural */ function testPlural( $result, $value ) { $forms = array( 'one', 'two', 'few', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + function providePlural() { return array( array( 'other', 0 ), @@ -28,5 +32,4 @@ class LanguageDsbTest extends LanguageClassesTestCase { array( 'other', 555 ), ); } - } diff --git a/tests/phpunit/languages/LanguageFrTest.php b/tests/phpunit/languages/LanguageFrTest.php index faf0de58bf..2ab5d871ca 100644 --- a/tests/phpunit/languages/LanguageFrTest.php +++ b/tests/phpunit/languages/LanguageFrTest.php @@ -7,13 +7,17 @@ /** Tests for MediaWiki languages/classes/LanguageFr.php */ class LanguageFrTest extends LanguageClassesTestCase { - /** @dataProvider providePlural */ function testPlural( $result, $value ) { $forms = array( 'one', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + function providePlural() { return array( array( 'one', 0 ), @@ -22,5 +26,4 @@ class LanguageFrTest extends LanguageClassesTestCase { array( 'other', 200 ), ); } - } diff --git a/tests/phpunit/languages/LanguageGaTest.php b/tests/phpunit/languages/LanguageGaTest.php index 2dbb088ba3..cac3a02b26 100644 --- a/tests/phpunit/languages/LanguageGaTest.php +++ b/tests/phpunit/languages/LanguageGaTest.php @@ -7,20 +7,23 @@ /** Tests for MediaWiki languages/classes/LanguageGa.php */ class LanguageGaTest extends LanguageClassesTestCase { - - /** @dataProvider providerPlural */ + /** @dataProvider providePlural */ function testPlural( $result, $value ) { $forms = array( 'one', 'two', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } - function providerPlural() { - return array( + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + function providePlural() { + return array ( array( 'other', 0 ), array( 'one', 1 ), array( 'two', 2 ), array( 'other', 200 ), ); } - } diff --git a/tests/phpunit/languages/LanguageGdTest.php b/tests/phpunit/languages/LanguageGdTest.php index 5de1e9d2fe..b7d5cc225f 100644 --- a/tests/phpunit/languages/LanguageGdTest.php +++ b/tests/phpunit/languages/LanguageGdTest.php @@ -7,7 +7,6 @@ /** Tests for MediaWiki languages/classes/LanguageGd.php */ class LanguageGdTest extends LanguageClassesTestCase { - /** @dataProvider providerPlural */ function testPlural( $result, $value ) { $forms = array( 'one', 'two', 'few', 'other' ); diff --git a/tests/phpunit/languages/LanguageGvTest.php b/tests/phpunit/languages/LanguageGvTest.php index 4126e07156..6e24aea2e8 100644 --- a/tests/phpunit/languages/LanguageGvTest.php +++ b/tests/phpunit/languages/LanguageGvTest.php @@ -7,16 +7,22 @@ /** Tests for MediaWiki languages/classes/LanguageGv.php */ class LanguageGvTest extends LanguageClassesTestCase { - - /** @dataProvider providerPlural */ + /** @dataProvider providePlural */ function testPlural( $result, $value ) { // This is not compatible with CLDR plural rules http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#gv - $forms = array( 'Form 1', 'Form 2', 'Form 3', 'Form 4' ); + // What does this mean? Is there a hard-coded override for gv somewhere? -Ryan Kaldari 2013-01-28 + $forms = array( 'Form 1', 'Form 2', 'Form 3', 'Form 4' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } - function providerPlural() { - return array( + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->markTestSkipped( "This test won't work since convertPlural for gv doesn't seem to actually follow our plural rules." ); + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + function providePlural() { + return array ( array( 'Form 4', 0 ), array( 'Form 2', 1 ), array( 'Form 3', 2 ), @@ -28,5 +34,4 @@ class LanguageGvTest extends LanguageClassesTestCase { array( 'Form 4', 50 ), ); } - } diff --git a/tests/phpunit/languages/LanguageHeTest.php b/tests/phpunit/languages/LanguageHeTest.php index 6de88e596e..1335e9081d 100644 --- a/tests/phpunit/languages/LanguageHeTest.php +++ b/tests/phpunit/languages/LanguageHeTest.php @@ -7,46 +7,36 @@ /** Tests for MediaWiki languages/classes/LanguageHe.php */ class LanguageHeTest extends LanguageClassesTestCase { - - /** @dataProvider providerPluralDual */ - function testPluralDual( $result, $value ) { + /** @dataProvider providePlural */ + function testPlural( $result, $value ) { $forms = array( 'one', 'two', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } - function providerPluralDual() { - return array( - array( 'other', 0 ), // Zero -> plural - array( 'one', 1 ), // Singular - array( 'two', 2 ), // Dual - array( 'other', 3 ), // Plural - ); - } - - /** @dataProvider providerPlural */ - function testPlural( $result, $value ) { - $forms = array( 'one', 'other' ); - $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); } - function providerPlural() { - return array( - array( 'other', 0 ), // Zero -> plural - array( 'one', 1 ), // Singular - array( 'other', 2 ), // Plural, no dual provided - array( 'other', 3 ), // Plural + function providePlural() { + return array ( + array( 'other', 0 ), + array( 'one', 1 ), + array( 'two', 2 ), + array( 'other', 3 ), + array( 'other', 10 ), ); } - /** @dataProvider providerGrammar */ + /** @dataProvider provideGrammar */ function testGrammar( $result, $word, $case ) { $this->assertEquals( $result, $this->getLang()->convertGrammar( $word, $case ) ); } // The comments in the beginning of the line help avoid RTL problems // with text editors. - function providerGrammar() { - return array( + function provideGrammar() { + return array ( array( /* result */ 'וויקיפדיה', /* word */ 'ויקיפדיה', diff --git a/tests/phpunit/languages/LanguageHiTest.php b/tests/phpunit/languages/LanguageHiTest.php index 86d6af587f..b21bfe4789 100644 --- a/tests/phpunit/languages/LanguageHiTest.php +++ b/tests/phpunit/languages/LanguageHiTest.php @@ -7,13 +7,17 @@ /** Tests for MediaWiki languages/LanguageHi.php */ class LanguageHiTest extends LanguageClassesTestCase { - /** @dataProvider providePlural */ function testPlural( $result, $value ) { $forms = array( 'one', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + function providePlural() { return array( array( 'one', 0 ), @@ -22,5 +26,4 @@ class LanguageHiTest extends LanguageClassesTestCase { array( 'other', 200 ), ); } - } diff --git a/tests/phpunit/languages/LanguageHrTest.php b/tests/phpunit/languages/LanguageHrTest.php index 9dce4ea73e..76e281bac6 100644 --- a/tests/phpunit/languages/LanguageHrTest.php +++ b/tests/phpunit/languages/LanguageHrTest.php @@ -7,15 +7,19 @@ /** Tests for MediaWiki languages/classes/LanguageHr.php */ class LanguageHrTest extends LanguageClassesTestCase { - - /** @dataProvider providerPlural */ + /** @dataProvider providePlural */ function testPlural( $result, $value ) { $forms = array( 'one', 'few', 'many', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } - function providerPlural() { - return array( + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + function providePlural() { + return array ( array( 'many', 0 ), array( 'one', 1 ), array( 'few', 2 ), @@ -29,5 +33,4 @@ class LanguageHrTest extends LanguageClassesTestCase { array( 'many', 200 ), ); } - } diff --git a/tests/phpunit/languages/LanguageHsbTest.php b/tests/phpunit/languages/LanguageHsbTest.php index bec7d8198a..8fee54940e 100644 --- a/tests/phpunit/languages/LanguageHsbTest.php +++ b/tests/phpunit/languages/LanguageHsbTest.php @@ -7,13 +7,17 @@ /** Tests for MediaWiki languages/classes/LanguageHsb.php */ class LanguageHsbTest extends LanguageClassesTestCase { - /** @dataProvider providePlural */ function testPlural( $result, $value ) { $forms = array( 'one', 'two', 'few', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + function providePlural() { return array( array( 'other', 0 ), @@ -28,5 +32,4 @@ class LanguageHsbTest extends LanguageClassesTestCase { array( 'other', 555 ), ); } - } diff --git a/tests/phpunit/languages/LanguageHuTest.php b/tests/phpunit/languages/LanguageHuTest.php index 23d8e0ce1f..462a7dd3ef 100644 --- a/tests/phpunit/languages/LanguageHuTest.php +++ b/tests/phpunit/languages/LanguageHuTest.php @@ -7,13 +7,17 @@ /** Tests for MediaWiki languages/LanguageHu.php */ class LanguageHuTest extends LanguageClassesTestCase { - /** @dataProvider providePlural */ function testPlural( $result, $value ) { $forms = array( 'one', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + function providePlural() { return array( array( 'other', 0 ), @@ -22,5 +26,4 @@ class LanguageHuTest extends LanguageClassesTestCase { array( 'other', 200 ), ); } - } diff --git a/tests/phpunit/languages/LanguageHyTest.php b/tests/phpunit/languages/LanguageHyTest.php index 7088d37b47..70717f1389 100644 --- a/tests/phpunit/languages/LanguageHyTest.php +++ b/tests/phpunit/languages/LanguageHyTest.php @@ -7,20 +7,24 @@ /** Tests for MediaWiki languages/LanguageHy.php */ class LanguageHyTest extends LanguageClassesTestCase { - - /** @dataProvider providerPlural */ + /** @dataProvider providePlural */ function testPlural( $result, $value ) { $forms = array( 'one', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } - function providerPlural() { - return array( + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + // This fails for 0, but I'm not sure why. Some voodoo going on here. + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + function providePlural() { + return array ( array( 'other', 0 ), array( 'one', 1 ), array( 'other', 2 ), array( 'other', 200 ), ); } - } diff --git a/tests/phpunit/languages/LanguageKshTest.php b/tests/phpunit/languages/LanguageKshTest.php index 9b4a53adf5..7efd58ac2d 100644 --- a/tests/phpunit/languages/LanguageKshTest.php +++ b/tests/phpunit/languages/LanguageKshTest.php @@ -7,20 +7,23 @@ /** Tests for MediaWiki languages/classes/LanguageKsh.php */ class LanguageKshTest extends LanguageClassesTestCase { - - /** @dataProvider providerPlural */ + /** @dataProvider providePlural */ function testPlural( $result, $value ) { $forms = array( 'one', 'other', 'zero' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } - function providerPlural() { - return array( + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + function providePlural() { + return array ( array( 'zero', 0 ), array( 'one', 1 ), array( 'other', 2 ), array( 'other', 200 ), ); } - } diff --git a/tests/phpunit/languages/LanguageLnTest.php b/tests/phpunit/languages/LanguageLnTest.php index 669d8b0a6b..052604cf00 100644 --- a/tests/phpunit/languages/LanguageLnTest.php +++ b/tests/phpunit/languages/LanguageLnTest.php @@ -7,13 +7,17 @@ /** Tests for MediaWiki languages/classes/LanguageLn.php */ class LanguageLnTest extends LanguageClassesTestCase { - /** @dataProvider providePlural */ function testPlural( $result, $value ) { $forms = array( 'one', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + function providePlural() { return array( array( 'one', 0 ), @@ -22,5 +26,4 @@ class LanguageLnTest extends LanguageClassesTestCase { array( 'other', 200 ), ); } - } diff --git a/tests/phpunit/languages/LanguageLtTest.php b/tests/phpunit/languages/LanguageLtTest.php index 9d6428b826..eface4cbc1 100644 --- a/tests/phpunit/languages/LanguageLtTest.php +++ b/tests/phpunit/languages/LanguageLtTest.php @@ -7,21 +7,19 @@ /** Tests for MediaWiki languages/LanguageLt.php */ class LanguageLtTest extends LanguageClassesTestCase { - - /** @dataProvider provideOneFewOtherCases */ - function testOneFewOtherPlural( $result, $value ) { - $forms = array( 'one', 'few', 'other' ); + /** @dataProvider providePlural */ + function testPlural( $result, $value ) { + $forms = array( 'one', 'few', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } - /** @dataProvider provideOneFewCases */ - function testOneFewPlural( $result, $value ) { - $forms = array( 'one', 'few' ); - $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); } - function provideOneFewOtherCases() { - return array( + function providePlural() { + return array ( array( 'other', 0 ), array( 'one', 1 ), array( 'few', 2 ), @@ -36,10 +34,21 @@ class LanguageLtTest extends LanguageClassesTestCase { ); } - function provideOneFewCases() { - return array( + /** @dataProvider providePluralTwoForms */ + function testOneFewPlural( $result, $value ) { + $forms = array( 'one', 'other' ); + // This fails for 21, but not sure why. + $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); + } + + function providePluralTwoForms() { + return array ( array( 'one', 1 ), - array( 'few', 15 ), + array( 'other', 2 ), + array( 'other', 15 ), + array( 'other', 20 ), + array( 'one', 21 ), + array( 'other', 22 ), ); } } diff --git a/tests/phpunit/languages/LanguageLvTest.php b/tests/phpunit/languages/LanguageLvTest.php index bd0c759b09..dce2f7974e 100644 --- a/tests/phpunit/languages/LanguageLvTest.php +++ b/tests/phpunit/languages/LanguageLvTest.php @@ -7,15 +7,19 @@ /** Tests for MediaWiki languages/classes/LanguageLv.php */ class LanguageLvTest extends LanguageClassesTestCase { - - /** @dataProvider providerPlural */ + /** @dataProvider providePlural */ function testPlural( $result, $value ) { $forms = array( 'zero', 'one', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } - function providerPlural() { - return array( + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + function providePlural() { + return array ( array( 'zero', 0 ), array( 'one', 1 ), array( 'other', 11 ), @@ -27,5 +31,4 @@ class LanguageLvTest extends LanguageClassesTestCase { array( 'other', 200 ), ); } - } diff --git a/tests/phpunit/languages/LanguageMgTest.php b/tests/phpunit/languages/LanguageMgTest.php index c1e516bca4..e88b0afbf2 100644 --- a/tests/phpunit/languages/LanguageMgTest.php +++ b/tests/phpunit/languages/LanguageMgTest.php @@ -7,13 +7,17 @@ /** Tests for MediaWiki languages/classes/LanguageMg.php */ class LanguageMgTest extends LanguageClassesTestCase { - /** @dataProvider providePlural */ function testPlural( $result, $value ) { $forms = array( 'one', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + function providePlural() { return array( array( 'one', 0 ), @@ -23,5 +27,4 @@ class LanguageMgTest extends LanguageClassesTestCase { array( 'other', 123.3434 ), ); } - } diff --git a/tests/phpunit/languages/LanguageMkTest.php b/tests/phpunit/languages/LanguageMkTest.php index 5c241ba701..a5a8f6c79c 100644 --- a/tests/phpunit/languages/LanguageMkTest.php +++ b/tests/phpunit/languages/LanguageMkTest.php @@ -7,27 +7,28 @@ /** Tests for MediaWiki languages/classes/LanguageMk.php */ class LanguageMkTest extends LanguageClassesTestCase { - - /** @dataProvider providerPlural */ + /** @dataProvider providePlural */ function testPlural( $result, $value ) { $forms = array( 'one', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } - function providerPlural() { - return array( + function providePlural() { + return array ( array( 'other', 0 ), array( 'one', 1 ), array( 'other', 11 ), array( 'one', 21 ), - array( 'other', 411 ), + array( 'one', 411 ), array( 'other', 12.345 ), array( 'other', 20 ), array( 'one', 31 ), array( 'other', 200 ), ); } - - } diff --git a/tests/phpunit/languages/LanguageMoTest.php b/tests/phpunit/languages/LanguageMoTest.php index f7da1cd615..31d183a6a4 100644 --- a/tests/phpunit/languages/LanguageMoTest.php +++ b/tests/phpunit/languages/LanguageMoTest.php @@ -7,19 +7,23 @@ /** Tests for MediaWiki languages/classes/LanguageMo.php */ class LanguageMoTest extends LanguageClassesTestCase { - - /** @dataProvider providerPlural */ + /** @dataProvider providePlural */ function testPlural( $result, $value ) { $forms = array( 'one', 'few', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } - function providerPlural() { - return array( - array( 'few', 0 ), - array( 'one', 1 ), - array( 'few', 2 ), - array( 'few', 19 ), + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + function providePlural() { + return array ( + array( 'few', 0 ), + array( 'one', 1 ), + array( 'few', 2 ), + array( 'few', 19 ), array( 'other', 20 ), array( 'other', 99 ), array( 'other', 100 ), diff --git a/tests/phpunit/languages/LanguageMtTest.php b/tests/phpunit/languages/LanguageMtTest.php index f2b881e7d1..8f5d7649bd 100644 --- a/tests/phpunit/languages/LanguageMtTest.php +++ b/tests/phpunit/languages/LanguageMtTest.php @@ -7,21 +7,25 @@ /** Tests for MediaWiki languages/classes/LanguageMt.php */ class LanguageMtTest extends LanguageClassesTestCase { - - /** @dataProvider providerPluralAllForms */ - function testPluralAllForms( $result, $value ) { + /** @dataProvider providePlural */ + function testPlural( $result, $value ) { $forms = array( 'one', 'few', 'many', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } - function providerPluralAllForms() { - return array( - array( 'few', 0 ), - array( 'one', 1 ), - array( 'few', 2 ), - array( 'few', 10 ), - array( 'many', 11 ), - array( 'many', 19 ), + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + function providePlural() { + return array ( + array( 'few', 0 ), + array( 'one', 1 ), + array( 'few', 2 ), + array( 'few', 10 ), + array( 'many', 11 ), + array( 'many', 19 ), array( 'other', 20 ), array( 'other', 99 ), array( 'other', 100 ), @@ -37,28 +41,28 @@ class LanguageMtTest extends LanguageClassesTestCase { /** @dataProvider providerPluralTwoForms */ function testPluralTwoForms( $result, $value ) { - $forms = array( 'one', 'many' ); + $forms = array( 'one', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } function providerPluralTwoForms() { - return array( - array( 'many', 0 ), - array( 'one', 1 ), - array( 'many', 2 ), - array( 'many', 10 ), - array( 'many', 11 ), - array( 'many', 19 ), - array( 'many', 20 ), - array( 'many', 99 ), - array( 'many', 100 ), - array( 'many', 101 ), - array( 'many', 102 ), - array( 'many', 110 ), - array( 'many', 111 ), - array( 'many', 119 ), - array( 'many', 120 ), - array( 'many', 201 ), + return array ( + array( 'other', 0 ), + array( 'one', 1 ), + array( 'other', 2 ), + array( 'other', 10 ), + array( 'other', 11 ), + array( 'other', 19 ), + array( 'other', 20 ), + array( 'other', 99 ), + array( 'other', 100 ), + array( 'other', 101 ), + array( 'other', 102 ), + array( 'other', 110 ), + array( 'other', 111 ), + array( 'other', 119 ), + array( 'other', 120 ), + array( 'other', 201 ), ); } } diff --git a/tests/phpunit/languages/LanguageNsoTest.php b/tests/phpunit/languages/LanguageNsoTest.php index 9d80d13867..7a7bff2722 100644 --- a/tests/phpunit/languages/LanguageNsoTest.php +++ b/tests/phpunit/languages/LanguageNsoTest.php @@ -7,18 +7,22 @@ /** Tests for MediaWiki languages/classes/LanguageNso.php */ class LanguageNsoTest extends LanguageClassesTestCase { - - /** @dataProvider providerPlural */ + /** @dataProvider providePlural */ function testPlural( $result, $value ) { - $forms = array( 'one', 'many' ); + $forms = array( 'one', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } - function providerPlural() { - return array( - array( 'one', 0 ), - array( 'one', 1 ), - array( 'many', 2 ), + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + function providePlural() { + return array ( + array( 'one', 0 ), + array( 'one', 1 ), + array( 'other', 2 ), ); } } diff --git a/tests/phpunit/languages/LanguagePlTest.php b/tests/phpunit/languages/LanguagePlTest.php index 1e36097bc4..1ace10b8ef 100644 --- a/tests/phpunit/languages/LanguagePlTest.php +++ b/tests/phpunit/languages/LanguagePlTest.php @@ -7,58 +7,62 @@ /** Tests for MediaWiki languages/classes/LanguagePl.php */ class LanguagePlTest extends LanguageClassesTestCase { - - /** @dataProvider providerPluralFourForms */ - function testPluralFourForms( $result, $value ) { + /** @dataProvider providePlural */ + function testPlural( $result, $value ) { $forms = array( 'one', 'few', 'many' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } - function providerPluralFourForms() { - return array( - array( 'many', 0 ), - array( 'one', 1 ), - array( 'few', 2 ), - array( 'few', 3 ), - array( 'few', 4 ), - array( 'many', 5 ), - array( 'many', 9 ), - array( 'many', 10 ), - array( 'many', 11 ), - array( 'many', 21 ), - array( 'few', 22 ), - array( 'few', 23 ), - array( 'few', 24 ), - array( 'many', 25 ), - array( 'many', 200 ), - array( 'many', 201 ), + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + function providePlural() { + return array ( + array( 'many', 0 ), + array( 'one', 1 ), + array( 'few', 2 ), + array( 'few', 3 ), + array( 'few', 4 ), + array( 'many', 5 ), + array( 'many', 9 ), + array( 'many', 10 ), + array( 'many', 11 ), + array( 'many', 21 ), + array( 'few', 22 ), + array( 'few', 23 ), + array( 'few', 24 ), + array( 'many', 25 ), + array( 'many', 200 ), + array( 'many', 201 ), ); } - /** @dataProvider providerPlural */ - function testPlural( $result, $value ) { - $forms = array( 'one', 'many' ); + /** @dataProvider providerPluralTwoForms */ + function testPluralTwoForms( $result, $value ) { + $forms = array( 'one', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } - function providerPlural() { - return array( - array( 'many', 0 ), - array( 'one', 1 ), - array( 'many', 2 ), - array( 'many', 3 ), - array( 'many', 4 ), - array( 'many', 5 ), - array( 'many', 9 ), - array( 'many', 10 ), - array( 'many', 11 ), - array( 'many', 21 ), - array( 'many', 22 ), - array( 'many', 23 ), - array( 'many', 24 ), - array( 'many', 25 ), - array( 'many', 200 ), - array( 'many', 201 ), + function providerPluralTwoForms() { + return array ( + array( 'other', 0 ), + array( 'one', 1 ), + array( 'other', 2 ), + array( 'other', 3 ), + array( 'other', 4 ), + array( 'other', 5 ), + array( 'other', 9 ), + array( 'other', 10 ), + array( 'other', 11 ), + array( 'other', 21 ), + array( 'other', 22 ), + array( 'other', 23 ), + array( 'other', 24 ), + array( 'other', 25 ), + array( 'other', 200 ), + array( 'other', 201 ), ); } } diff --git a/tests/phpunit/languages/LanguageRoTest.php b/tests/phpunit/languages/LanguageRoTest.php index 916ea45da9..261d25a951 100644 --- a/tests/phpunit/languages/LanguageRoTest.php +++ b/tests/phpunit/languages/LanguageRoTest.php @@ -7,19 +7,23 @@ /** Tests for MediaWiki languages/classes/LanguageRo.php */ class LanguageRoTest extends LanguageClassesTestCase { - - /** @dataProvider providerPlural */ + /** @dataProvider providePlural */ function testPlural( $result, $value ) { $forms = array( 'one', 'few', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } - function providerPlural() { - return array( - array( 'few', 0 ), - array( 'one', 1 ), - array( 'few', 2 ), - array( 'few', 19 ), + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + function providePlural() { + return array ( + array( 'few', 0 ), + array( 'one', 1 ), + array( 'few', 2 ), + array( 'few', 19 ), array( 'other', 20 ), array( 'other', 99 ), array( 'other', 100 ), diff --git a/tests/phpunit/languages/LanguageRuTest.php b/tests/phpunit/languages/LanguageRuTest.php index 0792f75b93..3bdf6546bf 100644 --- a/tests/phpunit/languages/LanguageRuTest.php +++ b/tests/phpunit/languages/LanguageRuTest.php @@ -8,15 +8,19 @@ /** Tests for MediaWiki languages/classes/LanguageRu.php */ class LanguageRuTest extends LanguageClassesTestCase { - - /** @dataProvider providePluralFourForms */ - function testPluralFourForms( $result, $value ) { + /** @dataProvider providePlural */ + function testPlural( $result, $value ) { $forms = array( 'one', 'few', 'many', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } - function providePluralFourForms() { - return array( + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + function providePlural() { + return array ( array( 'one', 1 ), array( 'many', 11 ), array( 'one', 91 ), @@ -33,16 +37,16 @@ class LanguageRuTest extends LanguageClassesTestCase { /** @dataProvider providePluralTwoForms */ function testPluralTwoForms( $result, $value ) { - $forms = array( 'one', 'several' ); + $forms = array( 'one', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } function providePluralTwoForms() { return array( array( 'one', 1 ), - array( 'several', 11 ), - array( 'several', 91 ), - array( 'several', 121 ), + array( 'other', 11 ), + array( 'other', 91 ), + array( 'other', 121 ), ); } diff --git a/tests/phpunit/languages/LanguageSeTest.php b/tests/phpunit/languages/LanguageSeTest.php index c7dd8020e1..3e676b91cc 100644 --- a/tests/phpunit/languages/LanguageSeTest.php +++ b/tests/phpunit/languages/LanguageSeTest.php @@ -7,15 +7,19 @@ /** Tests for MediaWiki languages/classes/LanguageSe.php */ class LanguageSeTest extends LanguageClassesTestCase { - - /** @dataProvider providerPluralThreeForms */ - function testPluralThreeForms( $result, $value ) { + /** @dataProvider providePlural */ + function testPlural( $result, $value ) { $forms = array( 'one', 'two', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } - function providerPluralThreeForms() { - return array( + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + function providePlural() { + return array ( array( 'other', 0 ), array( 'one', 1 ), array( 'two', 2 ), @@ -23,14 +27,14 @@ class LanguageSeTest extends LanguageClassesTestCase { ); } - /** @dataProvider providerPlural */ - function testPlural( $result, $value ) { + /** @dataProvider providerPluralTwoForms */ + function testPluralTwoForms( $result, $value ) { $forms = array( 'one', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } - function providerPlural() { - return array( + function providerPluralTwoForms() { + return array ( array( 'other', 0 ), array( 'one', 1 ), array( 'other', 2 ), diff --git a/tests/phpunit/languages/LanguageSgsTest.php b/tests/phpunit/languages/LanguageSgsTest.php index 95e6346266..4721d50e39 100644 --- a/tests/phpunit/languages/LanguageSgsTest.php +++ b/tests/phpunit/languages/LanguageSgsTest.php @@ -7,13 +7,17 @@ /** Tests for MediaWiki languages/classes/LanguageSgs.php */ class LanguageSgsTest extends LanguageClassesTestCase { - /** @dataProvider providePluralAllForms */ function testPluralAllForms( $result, $value ) { $forms = array( 'one', 'two', 'few', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } + /** @dataProvider providePluralAllForms */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + function providePluralAllForms() { return array( array( 'few', 0 ), diff --git a/tests/phpunit/languages/LanguageShTest.php b/tests/phpunit/languages/LanguageShTest.php index 282fd2f2b6..e59c894928 100644 --- a/tests/phpunit/languages/LanguageShTest.php +++ b/tests/phpunit/languages/LanguageShTest.php @@ -7,18 +7,30 @@ /** Tests for MediaWiki languages/classes/LanguageSh.php */ class LanguageShTest extends LanguageClassesTestCase { - - /** @dataProvider providerPlural */ + /** @dataProvider providePlural */ function testPlural( $result, $value ) { - $forms = array( 'one', 'many' ); + $forms = array( 'one', 'few', 'many', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } - function providerPlural() { - return array( + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + function providePlural() { + return array ( array( 'many', 0 ), - array( 'one', 1 ), - array( 'many', 2 ), + array( 'one', 1 ), + array( 'few', 2 ), + array( 'few', 4 ), + array( 'many', 5 ), + array( 'many', 10 ), + array( 'many', 11 ), + array( 'many', 12 ), + array( 'one', 101 ), + array( 'few', 102 ), + array( 'many', 111 ), ); } } diff --git a/tests/phpunit/languages/LanguageSkTest.php b/tests/phpunit/languages/LanguageSkTest.php index 89cbbf01a9..48d253c955 100644 --- a/tests/phpunit/languages/LanguageSkTest.php +++ b/tests/phpunit/languages/LanguageSkTest.php @@ -8,15 +8,19 @@ /** Tests for MediaWiki languages/classes/LanguageSk.php */ class LanguageSkTest extends LanguageClassesTestCase { - - /** @dataProvider providerPlural */ + /** @dataProvider providePlural */ function testPlural( $result, $value ) { $forms = array( 'one', 'few', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } - function providerPlural() { - return array( + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + function providePlural() { + return array ( array( 'other', 0 ), array( 'one', 1 ), array( 'few', 2 ), diff --git a/tests/phpunit/languages/LanguageSlTest.php b/tests/phpunit/languages/LanguageSlTest.php index 96c370f64b..232e35bb1c 100644 --- a/tests/phpunit/languages/LanguageSlTest.php +++ b/tests/phpunit/languages/LanguageSlTest.php @@ -8,20 +8,24 @@ /** Tests for MediaWiki languages/classes/LanguageSl.php */ class LanguageSlTest extends LanguageClassesTestCase { - /** @dataProvider providerPlural */ function testPlural( $result, $value ) { $forms = array( 'one', 'two', 'few', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } + /** @dataProvider providerPlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + function providerPlural() { - return array( - array( 'other', 0 ), - array( 'one', 1 ), - array( 'two', 2 ), - array( 'few', 3 ), - array( 'few', 4 ), + return array ( + array( 'other', 0 ), + array( 'one', 1 ), + array( 'two', 2 ), + array( 'few', 3 ), + array( 'few', 4 ), array( 'other', 5 ), array( 'other', 99 ), array( 'other', 100 ), diff --git a/tests/phpunit/languages/LanguageSmaTest.php b/tests/phpunit/languages/LanguageSmaTest.php index 6d655219f0..3503461f3a 100644 --- a/tests/phpunit/languages/LanguageSmaTest.php +++ b/tests/phpunit/languages/LanguageSmaTest.php @@ -7,15 +7,19 @@ /** Tests for MediaWiki languages/classes/LanguageSma.php */ class LanguageSmaTest extends LanguageClassesTestCase { - - /** @dataProvider providerPluralThreeForms */ - function testPluralThreeForms( $result, $value ) { + /** @dataProvider providePlural */ + function testPlural( $result, $value ) { $forms = array( 'one', 'two', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } - function providerPluralThreeForms() { - return array( + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + function providePlural() { + return array ( array( 'other', 0 ), array( 'one', 1 ), array( 'two', 2 ), @@ -23,14 +27,14 @@ class LanguageSmaTest extends LanguageClassesTestCase { ); } - /** @dataProvider providerPlural */ - function testPlural( $result, $value ) { + /** @dataProvider providerPluralTwoForms */ + function testPluralTwoForms( $result, $value ) { $forms = array( 'one', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } - function providerPlural() { - return array( + function providerPluralTwoForms() { + return array ( array( 'other', 0 ), array( 'one', 1 ), array( 'other', 2 ), diff --git a/tests/phpunit/languages/LanguageSrTest.php b/tests/phpunit/languages/LanguageSrTest.php index 5611030bb4..7fbe13c223 100644 --- a/tests/phpunit/languages/LanguageSrTest.php +++ b/tests/phpunit/languages/LanguageSrTest.php @@ -16,9 +16,6 @@ require_once dirname( __DIR__ ) . '/bootstrap.php'; /** Tests for MediaWiki languages/LanguageSr.php */ class LanguageSrTest extends LanguageClassesTestCase { - - ##### TESTS ####################################################### - function testEasyConversions() { $this->assertCyrillic( 'шђчћжШЂЧЋЖ', @@ -113,14 +110,19 @@ class LanguageSrTest extends LanguageClassesTestCase { ); } - /** @dataProvider providePluralFourForms */ - function testPluralFourForms( $result, $value ) { + /** @dataProvider providePlural */ + function testPlural( $result, $value ) { $forms = array( 'one', 'few', 'many', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } - function providePluralFourForms() { - return array( + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + function providePlural() { + return array ( array( 'one', 1 ), array( 'many', 11 ), array( 'one', 91 ), @@ -137,16 +139,16 @@ class LanguageSrTest extends LanguageClassesTestCase { /** @dataProvider providePluralTwoForms */ function testPluralTwoForms( $result, $value ) { - $forms = array( 'one', 'several' ); + $forms = array( 'one', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } function providePluralTwoForms() { return array( array( 'one', 1 ), - array( 'several', 11 ), - array( 'several', 91 ), - array( 'several', 121 ), + array( 'other', 11 ), + array( 'other', 91 ), + array( 'other', 121 ), ); } diff --git a/tests/phpunit/languages/LanguageTiTest.php b/tests/phpunit/languages/LanguageTiTest.php index 8af0eee203..4a86086469 100644 --- a/tests/phpunit/languages/LanguageTiTest.php +++ b/tests/phpunit/languages/LanguageTiTest.php @@ -7,18 +7,22 @@ /** Tests for MediaWiki languages/classes/LanguageTi.php */ class LanguageTiTest extends LanguageClassesTestCase { - - /** @dataProvider providerPlural */ + /** @dataProvider providePlural */ function testPlural( $result, $value ) { - $forms = array( 'one', 'many' ); + $forms = array( 'one', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } - function providerPlural() { - return array( - array( 'one', 0 ), - array( 'one', 1 ), - array( 'many', 2 ), + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + function providePlural() { + return array ( + array( 'one', 0 ), + array( 'one', 1 ), + array( 'other', 2 ), ); } } diff --git a/tests/phpunit/languages/LanguageTlTest.php b/tests/phpunit/languages/LanguageTlTest.php index abd8581a25..383fe6ca2d 100644 --- a/tests/phpunit/languages/LanguageTlTest.php +++ b/tests/phpunit/languages/LanguageTlTest.php @@ -7,18 +7,22 @@ /** Tests for MediaWiki languages/classes/LanguageTl.php */ class LanguageTlTest extends LanguageClassesTestCase { - - /** @dataProvider providerPlural */ + /** @dataProvider providePlural */ function testPlural( $result, $value ) { - $forms = array( 'one', 'many' ); + $forms = array( 'one', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } - function providerPlural() { - return array( - array( 'one', 0 ), - array( 'one', 1 ), - array( 'many', 2 ), + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + function providePlural() { + return array ( + array( 'one', 0 ), + array( 'one', 1 ), + array( 'other', 2 ), ); } } diff --git a/tests/phpunit/languages/LanguageUkTest.php b/tests/phpunit/languages/LanguageUkTest.php index 9bbfaf6615..f7f736943f 100644 --- a/tests/phpunit/languages/LanguageUkTest.php +++ b/tests/phpunit/languages/LanguageUkTest.php @@ -8,15 +8,19 @@ /** Tests for MediaWiki languages/classes/LanguageUk.php */ class LanguageUkTest extends LanguageClassesTestCase { - - /** @dataProvider providePluralFourForms */ - function testPluralFourForms( $result, $value ) { + /** @dataProvider providePlural */ + function testPlural( $result, $value ) { $forms = array( 'one', 'few', 'many', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } - function providePluralFourForms() { - return array( + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + function providePlural() { + return array ( array( 'one', 1 ), array( 'many', 11 ), array( 'one', 91 ), @@ -33,16 +37,16 @@ class LanguageUkTest extends LanguageClassesTestCase { /** @dataProvider providePluralTwoForms */ function testPluralTwoForms( $result, $value ) { - $forms = array( 'one', 'several' ); + $forms = array( 'one', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } function providePluralTwoForms() { return array( array( 'one', 1 ), - array( 'several', 11 ), - array( 'several', 91 ), - array( 'several', 121 ), + array( 'other', 11 ), + array( 'other', 91 ), + array( 'other', 121 ), ); } } diff --git a/tests/phpunit/languages/LanguageWaTest.php b/tests/phpunit/languages/LanguageWaTest.php index 28329fa352..b4c92b7139 100644 --- a/tests/phpunit/languages/LanguageWaTest.php +++ b/tests/phpunit/languages/LanguageWaTest.php @@ -7,18 +7,22 @@ /** Tests for MediaWiki languages/classes/LanguageWa.php */ class LanguageWaTest extends LanguageClassesTestCase { - - /** @dataProvider providerPlural */ + /** @dataProvider providePlural */ function testPlural( $result, $value ) { - $forms = array( 'one', 'many' ); + $forms = array( 'one', 'other' ); $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) ); } - function providerPlural() { - return array( - array( 'one', 0 ), - array( 'one', 1 ), - array( 'many', 2 ), + /** @dataProvider providePlural */ + function testGetPluralRuleType( $result, $value ) { + $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) ); + } + + function providePlural() { + return array ( + array( 'one', 0 ), + array( 'one', 1 ), + array( 'other', 2 ), ); } } -- 2.20.1