wiki.techinc.nl/tests/phpunit/languages/LanguageRuTest.php
Santhosh Thottingal f50d3eb61e Update Russian(ru) plural rules to CLDR 24
Russian (ru) plural rules have a major change. The 'few' form is
merged with the 'other' form. The current forms are 'one', 'many', 'other'.
In MW ru plural rules were overridden using convertPlural methdod
in LanguagesRu.php with 3 forms.

Effectively forms[1] and forms[2] are swapped.

Followup: I9930b290d004667a3bb09e5c1663ec2c9c27d8a6

Bug: 56931
Change-Id: Ia5779e42315d3f41f52dce2bfffaee0a4297d23b
2014-01-03 13:46:19 +05:30

105 lines
2.5 KiB
PHP

<?php
/**
* @author Amir E. Aharoni
* based on LanguageBe_tarask.php
* @copyright Copyright © 2012, Amir E. Aharoni
* @file
*/
/** Tests for MediaWiki languages/classes/LanguageRu.php */
class LanguageRuTest extends LanguageClassesTestCase {
/**
* @dataProvider providePlural
* @covers Language::convertPlural
*/
public function testPlural( $result, $value ) {
$forms = array( 'one', 'many', 'other' );
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
/**
* Test explicit plural forms - n=FormN forms
* @covers Language::convertPlural
*/
public function testExplicitPlural() {
$forms = array( 'one','many', 'other', '12=dozen' );
$this->assertEquals( 'dozen', $this->getLang()->convertPlural( 12, $forms ) );
$forms = array( 'one', 'many', '100=hundred', 'other', '12=dozen' );
$this->assertEquals( 'hundred', $this->getLang()->convertPlural( 100, $forms ) );
}
/**
* @dataProvider providePlural
* @covers Language::getPluralRuleType
*/
public function testGetPluralRuleType( $result, $value ) {
$this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) );
}
public static function providePlural() {
return array(
array( 'one', 1 ),
array( 'many', 11 ),
array( 'one', 91 ),
array( 'one', 121 ),
array( 'other', 2 ),
array( 'other', 3 ),
array( 'other', 4 ),
array( 'other', 334 ),
array( 'many', 5 ),
array( 'many', 15 ),
array( 'many', 120 ),
);
}
/**
* @dataProvider providePluralTwoForms
* @covers Language::convertPlural
*/
public function testPluralTwoForms( $result, $value ) {
$forms = array( '1=one', 'other' );
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
public static function providePluralTwoForms() {
return array(
array( 'one', 1 ),
array( 'other', 11 ),
array( 'other', 91 ),
array( 'other', 121 ),
);
}
/**
* @dataProvider providerGrammar
* @covers Language::convertGrammar
*/
public function testGrammar( $result, $word, $case ) {
$this->assertEquals( $result, $this->getLang()->convertGrammar( $word, $case ) );
}
public static function providerGrammar() {
return array(
array(
'Википедии',
'Википедия',
'genitive',
),
array(
'Викитеки',
'Викитека',
'genitive',
),
array(
'Викитеке',
'Викитека',
'prepositional',
),
array(
'Викиданных',
'Викиданные',
'prepositional',
),
);
}
}