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 */'תחילית',
],
];
}
}
|