/** Tests for MediaWiki languages/classes/LanguageHe.php */
class LanguageHeTest extends LanguageClassesTestCase {
- /** @dataProvider providePlural */
- function testPlural( $result, $value ) {
+ /*
+ The most common usage for the plural forms is two forms,
+ for singular and plural. In this case, the second form
+ is technically dual, but in practice it's used as plural.
+ In some cases, usually with expressions of time, three forms
+ are needed - singular, dual and plural.
+ CLDR also specifies a fourth form for multiples of 10,
+ which is very rare. It also has a mistake, because
+ the number 10 itself is supposed to be just plural,
+ so currently it's overridden in MediaWiki.
+ */
+
+ /** @dataProvider provideTwoPluralForms */
+ function testTwoPluralForms( $result, $value ) {
+ $forms = array( 'one', 'other' );
+ $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
+ }
+
+ /** @dataProvider provideThreePluralForms */
+ function testThreePluralForms( $result, $value ) {
$forms = array( 'one', 'two', 'other' );
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
- /** @dataProvider providePlural */
+ /** @dataProvider provideFourPluralForms */
+ function testFourPluralForms( $result, $value ) {
+ $forms = array( 'one', 'two', 'many', 'other' );
+ $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
+ }
+
+ /** @dataProvider provideFourPluralForms */
function testGetPluralRuleType( $result, $value ) {
$this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) );
}
- public static function providePlural() {
+ public static function provideTwoPluralForms() {
+ return array (
+ array( 'other', 0 ), // Zero - plural
+ array( 'one', 1 ), // Singular
+ array( 'other', 2 ), // No third form provided, use it as plural
+ array( 'other', 3 ), // Plural - other
+ array( 'other', 10 ), // No fourth form provided, use it as plural
+ array( 'other', 20 ), // No fourth form provided, use it as plural
+ );
+ }
+
+ public static function provideThreePluralForms() {
+ return array (
+ array( 'other', 0 ), // Zero - plural
+ array( 'one', 1 ), // Singular
+ array( 'two', 2 ), // Dual
+ array( 'other', 3 ), // Plural - other
+ array( 'other', 10 ), // No fourth form provided, use it as plural
+ array( 'other', 20 ), // No fourth form provided, use it as plural
+ );
+ }
+
+ public static function provideFourPluralForms() {
return array (
- array( 'other', 0 ),
- array( 'one', 1 ),
- array( 'two', 2 ),
- array( 'other', 3 ),
- array( 'other', 10 ),
+ array( 'other', 0 ), // Zero - plural
+ array( 'one', 1 ), // Singular
+ array( 'two', 2 ), // Dual
+ array( 'other', 3 ), // Plural - other
+ array( 'other', 10 ), // 10 is supposed to be plural (other), not "many"
+ array( 'many', 20 ), // Fourth form provided - rare, but supported by CLDR
);
}