1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
|
<?php
/**
* @author Amir E. Aharoni
* @copyright Copyright © 2012, Amir E. Aharoni
* @file
*/
/**
* Tests for Hebrew
*
* @group Language
*/
class LanguageHeTest extends LanguageClassesTestCase {
/**
* 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.
*/
// @todo the below test*PluralForms test methods can be refactored
// to use a single test method and data provider.
/**
* @dataProvider provideTwoPluralForms
* @covers \MediaWiki\Language\Language::convertPlural
*/
public function testTwoPluralForms( $result, $value ) {
$forms = [ 'one', 'other' ];
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
/**
* @dataProvider provideThreePluralForms
* @covers \MediaWiki\Language\Language::convertPlural
*/
public function testThreePluralForms( $result, $value ) {
$forms = [ 'one', 'two', 'other' ];
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
/**
* @dataProvider provideFourPluralForms
* @covers \MediaWiki\Language\Language::convertPlural
*/
public function testFourPluralForms( $result, $value ) {
$forms = [ 'one', 'two', 'many', 'other' ];
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
/**
* @dataProvider provideFourPluralForms
* @covers \MediaWiki\Language\Language::convertPlural
*/
public function testGetPluralRuleType( $result, $value ) {
$this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) );
}
public static function provideTwoPluralForms() {
return [
[ 'other', 0 ], // Zero - plural
[ 'one', 1 ], // Singular
[ 'other', 2 ], // No third form provided, use it as plural
[ 'other', 3 ], // Plural - other
[ 'other', 10 ], // No fourth form provided, use it as plural
[ 'other', 20 ], // No fourth form provided, use it as plural
];
}
public static function provideThreePluralForms() {
return [
[ 'other', 0 ], // Zero - plural
[ 'one', 1 ], // Singular
[ 'two', 2 ], // Dual
[ 'other', 3 ], // Plural - other
[ 'other', 10 ], // No fourth form provided, use it as plural
[ 'other', 20 ], // No fourth form provided, use it as plural
];
}
public static function provideFourPluralForms() {
return [
[ 'other', 0 ], // Zero - plural
[ 'one', 1 ], // Singular
[ 'two', 2 ], // Dual
[ 'other', 3 ], // Plural - other
[ 'other', 10 ], // 10 is supposed to be plural (other), not "many"
[ 'many', 20 ], // Fourth form provided - rare, but supported by CLDR
];
}
/**
* @dataProvider provideGrammar
* @covers \MediaWiki\Language\Language::convertGrammar
*/
public 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.
*/
public static function provideGrammar() {
return [
[
/* result */'וויקיפדיה',
/* word */'ויקיפדיה',
/* case */'תחילית',
],
[
/* result */'וולפגנג',
/* word */'וולפגנג',
/* case */'prefixed',
],
[
/* result */'קובץ',
/* word */'הקובץ',
/* case */'תחילית',
],
[
/* result */'־Wikipedia',
/* word */'Wikipedia',
/* case */'תחילית',
],
[
/* result */'־1995',
/* word */'1995',
/* case */'תחילית',
],
];
}
}
|