Merge "Chinese Conversion Table Update 2017-6"
[lhc/web/wiklou.git] / tests / phpunit / languages / classes / LanguageRuTest.php
1 <?php
2 /**
3 * @author Amir E. Aharoni
4 * based on LanguageBe_tarask.php
5 * @copyright Copyright © 2012, Amir E. Aharoni
6 * @file
7 */
8
9 /**
10 * @covers LanguageRu
11 */
12 class LanguageRuTest extends LanguageClassesTestCase {
13 /**
14 * @dataProvider providePlural
15 * @covers Language::convertPlural
16 */
17 public function testPlural( $result, $value ) {
18 $forms = [ 'one', 'few', 'many', 'other' ];
19 $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
20 }
21
22 /**
23 * Test explicit plural forms - n=FormN forms
24 * @covers Language::convertPlural
25 */
26 public function testExplicitPlural() {
27 $forms = [ 'one', 'few', 'many', 'other', '12=dozen' ];
28 $this->assertEquals( 'dozen', $this->getLang()->convertPlural( 12, $forms ) );
29 $forms = [ 'one', 'few', 'many', '100=hundred', 'other', '12=dozen' ];
30 $this->assertEquals( 'hundred', $this->getLang()->convertPlural( 100, $forms ) );
31 }
32
33 /**
34 * @dataProvider providePlural
35 * @covers Language::getPluralRuleType
36 */
37 public function testGetPluralRuleType( $result, $value ) {
38 $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) );
39 }
40
41 public static function providePlural() {
42 return [
43 [ 'one', 1 ],
44 [ 'many', 11 ],
45 [ 'one', 91 ],
46 [ 'one', 121 ],
47 [ 'few', 2 ],
48 [ 'few', 3 ],
49 [ 'few', 4 ],
50 [ 'few', 334 ],
51 [ 'many', 5 ],
52 [ 'many', 15 ],
53 [ 'many', 120 ],
54 ];
55 }
56
57 /**
58 * @dataProvider providePluralTwoForms
59 * @covers Language::convertPlural
60 */
61 public function testPluralTwoForms( $result, $value ) {
62 $forms = [ '1=one', 'other' ];
63 $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
64 }
65
66 public static function providePluralTwoForms() {
67 return [
68 [ 'one', 1 ],
69 [ 'other', 11 ],
70 [ 'other', 91 ],
71 [ 'other', 121 ],
72 ];
73 }
74
75 /**
76 * @dataProvider providerGrammar
77 * @covers Language::convertGrammar
78 */
79 public function testGrammar( $result, $word, $case ) {
80 $this->assertEquals( $result, $this->getLang()->convertGrammar( $word, $case ) );
81 }
82
83 public static function providerGrammar() {
84 return [
85 [
86 'Википедии',
87 'Википедия',
88 'genitive',
89 ],
90 [
91 'Викитеки',
92 'Викитека',
93 'genitive',
94 ],
95 [
96 'Викитеке',
97 'Викитека',
98 'prepositional',
99 ],
100 [
101 'Викисклада',
102 'Викисклад',
103 'genitive',
104 ],
105 [
106 'Викискладе',
107 'Викисклад',
108 'prepositional',
109 ],
110 [
111 'Викиданных',
112 'Викиданные',
113 'prepositional',
114 ],
115 [
116 'русского',
117 'русский',
118 'languagegen',
119 ],
120 [
121 'немецкого',
122 'немецкий',
123 'languagegen',
124 ],
125 [
126 'иврита',
127 'иврит',
128 'languagegen',
129 ],
130 [
131 'эсперанто',
132 'эсперанто',
133 'languagegen',
134 ],
135 [
136 'русском',
137 'русский',
138 'languageprep',
139 ],
140 [
141 'немецком',
142 'немецкий',
143 'languageprep',
144 ],
145 [
146 'идише',
147 'идиш',
148 'languageprep',
149 ],
150 [
151 'эсперанто',
152 'эсперанто',
153 'languageprep',
154 ],
155 [
156 'по-русски',
157 'русский',
158 'languageadverb',
159 ],
160 [
161 'по-немецки',
162 'немецкий',
163 'languageadverb',
164 ],
165 [
166 'на иврите',
167 'иврит',
168 'languageadverb',
169 ],
170 [
171 'на эсперанто',
172 'эсперанто',
173 'languageadverb',
174 ],
175 [
176 'на языке гуарани',
177 'гуарани',
178 'languageadverb',
179 ],
180 ];
181 }
182 }