Subversion Repositories SmartDukaan

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
13532 anikendra 1
<?php
2
/**
3
 * I18nTest file
4
 *
5
 * CakePHP(tm) Tests <http://book.cakephp.org/2.0/en/development/testing.html>
6
 * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
7
 *
8
 * Licensed under The MIT License
9
 * For full copyright and license information, please see the LICENSE.txt
10
 * Redistributions of files must retain the above copyright notice
11
 *
12
 * @copyright     Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
13
 * @link          http://book.cakephp.org/2.0/en/development/testing.html CakePHP(tm) Tests
14
 * @package       Cake.Test.Case.I18n
15
 * @since         CakePHP(tm) v 1.2.0.5432
16
 * @license       http://www.opensource.org/licenses/mit-license.php MIT License
17
 */
18
 
19
App::uses('I18n', 'I18n');
20
 
21
/**
22
 * I18nTest class
23
 *
24
 * @package       Cake.Test.Case.I18n
25
 */
26
class I18nTest extends CakeTestCase {
27
 
28
/**
29
 * setUp method
30
 *
31
 * @return void
32
 */
33
	public function setUp() {
34
		parent::setUp();
35
 
36
		Cache::delete('object_map', '_cake_core_');
37
		App::build(array(
38
			'Locale' => array(CAKE . 'Test' . DS . 'test_app' . DS . 'Locale' . DS),
39
			'Plugin' => array(CAKE . 'Test' . DS . 'test_app' . DS . 'Plugin' . DS)
40
		), App::RESET);
41
		CakePlugin::load(array('TestPlugin'));
42
	}
43
 
44
/**
45
 * tearDown method
46
 *
47
 * @return void
48
 */
49
	public function tearDown() {
50
		parent::tearDown();
51
 
52
		Cache::delete('object_map', '_cake_core_');
53
		App::build();
54
		CakePlugin::unload();
55
	}
56
 
57
/**
58
 * testTranslationCaching method
59
 *
60
 * @return void
61
 */
62
	public function testTranslationCaching() {
63
		Configure::write('Config.language', 'cache_test_po');
64
 
65
		// reset internally stored entries
66
		I18n::clear();
67
 
68
		Cache::clear(false, '_cake_core_');
69
		$lang = Configure::read('Config.language');
70
 
71
		Cache::config('_cake_core_', Cache::config('default'));
72
 
73
		// make some calls to translate using different domains
74
		$this->assertEquals('Dom 1 Foo', I18n::translate('dom1.foo', false, 'dom1'));
75
		$this->assertEquals('Dom 1 Bar', I18n::translate('dom1.bar', false, 'dom1'));
76
		$domains = I18n::domains();
77
		$this->assertEquals('Dom 1 Foo', $domains['dom1']['cache_test_po']['LC_MESSAGES']['dom1.foo']);
78
 
79
		// reset internally stored entries
80
		I18n::clear();
81
 
82
		// now only dom1 should be in cache
83
		$cachedDom1 = Cache::read('dom1_' . $lang, '_cake_core_');
84
		$this->assertEquals('Dom 1 Foo', $cachedDom1['LC_MESSAGES']['dom1.foo']);
85
		$this->assertEquals('Dom 1 Bar', $cachedDom1['LC_MESSAGES']['dom1.bar']);
86
		// dom2 not in cache
87
		$this->assertFalse(Cache::read('dom2_' . $lang, '_cake_core_'));
88
 
89
		// translate a item of dom2 (adds dom2 to cache)
90
		$this->assertEquals('Dom 2 Foo', I18n::translate('dom2.foo', false, 'dom2'));
91
 
92
		// verify dom2 was cached through manual read from cache
93
		$cachedDom2 = Cache::read('dom2_' . $lang, '_cake_core_');
94
		$this->assertEquals('Dom 2 Foo', $cachedDom2['LC_MESSAGES']['dom2.foo']);
95
		$this->assertEquals('Dom 2 Bar', $cachedDom2['LC_MESSAGES']['dom2.bar']);
96
 
97
		// modify cache entry manually to verify that dom1 entries now will be read from cache
98
		$cachedDom1['LC_MESSAGES']['dom1.foo'] = 'FOO';
99
		Cache::write('dom1_' . $lang, $cachedDom1, '_cake_core_');
100
		$this->assertEquals('FOO', I18n::translate('dom1.foo', false, 'dom1'));
101
	}
102
 
103
/**
104
 * testDefaultStrings method
105
 *
106
 * @return void
107
 */
108
	public function testDefaultStrings() {
109
		$singular = $this->_singular();
110
		$this->assertEquals('Plural Rule 1', $singular);
111
 
112
		$plurals = $this->_plural();
113
		$this->assertTrue(in_array('0 = 0 or > 1', $plurals));
114
		$this->assertTrue(in_array('1 = 1', $plurals));
115
		$this->assertTrue(in_array('2 = 0 or > 1', $plurals));
116
		$this->assertTrue(in_array('3 = 0 or > 1', $plurals));
117
		$this->assertTrue(in_array('4 = 0 or > 1', $plurals));
118
		$this->assertTrue(in_array('5 = 0 or > 1', $plurals));
119
		$this->assertTrue(in_array('6 = 0 or > 1', $plurals));
120
		$this->assertTrue(in_array('7 = 0 or > 1', $plurals));
121
		$this->assertTrue(in_array('8 = 0 or > 1', $plurals));
122
		$this->assertTrue(in_array('9 = 0 or > 1', $plurals));
123
		$this->assertTrue(in_array('10 = 0 or > 1', $plurals));
124
		$this->assertTrue(in_array('11 = 0 or > 1', $plurals));
125
		$this->assertTrue(in_array('12 = 0 or > 1', $plurals));
126
		$this->assertTrue(in_array('13 = 0 or > 1', $plurals));
127
		$this->assertTrue(in_array('14 = 0 or > 1', $plurals));
128
		$this->assertTrue(in_array('15 = 0 or > 1', $plurals));
129
		$this->assertTrue(in_array('16 = 0 or > 1', $plurals));
130
		$this->assertTrue(in_array('17 = 0 or > 1', $plurals));
131
		$this->assertTrue(in_array('18 = 0 or > 1', $plurals));
132
		$this->assertTrue(in_array('19 = 0 or > 1', $plurals));
133
		$this->assertTrue(in_array('20 = 0 or > 1', $plurals));
134
		$this->assertTrue(in_array('21 = 0 or > 1', $plurals));
135
		$this->assertTrue(in_array('22 = 0 or > 1', $plurals));
136
		$this->assertTrue(in_array('23 = 0 or > 1', $plurals));
137
		$this->assertTrue(in_array('24 = 0 or > 1', $plurals));
138
		$this->assertTrue(in_array('25 = 0 or > 1', $plurals));
139
 
140
		$coreSingular = $this->_singularFromCore();
141
		$this->assertEquals('Plural Rule 1 (from core)', $coreSingular);
142
 
143
		$corePlurals = $this->_pluralFromCore();
144
		$this->assertTrue(in_array('0 = 0 or > 1 (from core)', $corePlurals));
145
		$this->assertTrue(in_array('1 = 1 (from core)', $corePlurals));
146
		$this->assertTrue(in_array('2 = 0 or > 1 (from core)', $corePlurals));
147
		$this->assertTrue(in_array('3 = 0 or > 1 (from core)', $corePlurals));
148
		$this->assertTrue(in_array('4 = 0 or > 1 (from core)', $corePlurals));
149
		$this->assertTrue(in_array('5 = 0 or > 1 (from core)', $corePlurals));
150
		$this->assertTrue(in_array('6 = 0 or > 1 (from core)', $corePlurals));
151
		$this->assertTrue(in_array('7 = 0 or > 1 (from core)', $corePlurals));
152
		$this->assertTrue(in_array('8 = 0 or > 1 (from core)', $corePlurals));
153
		$this->assertTrue(in_array('9 = 0 or > 1 (from core)', $corePlurals));
154
		$this->assertTrue(in_array('10 = 0 or > 1 (from core)', $corePlurals));
155
		$this->assertTrue(in_array('11 = 0 or > 1 (from core)', $corePlurals));
156
		$this->assertTrue(in_array('12 = 0 or > 1 (from core)', $corePlurals));
157
		$this->assertTrue(in_array('13 = 0 or > 1 (from core)', $corePlurals));
158
		$this->assertTrue(in_array('14 = 0 or > 1 (from core)', $corePlurals));
159
		$this->assertTrue(in_array('15 = 0 or > 1 (from core)', $corePlurals));
160
		$this->assertTrue(in_array('16 = 0 or > 1 (from core)', $corePlurals));
161
		$this->assertTrue(in_array('17 = 0 or > 1 (from core)', $corePlurals));
162
		$this->assertTrue(in_array('18 = 0 or > 1 (from core)', $corePlurals));
163
		$this->assertTrue(in_array('19 = 0 or > 1 (from core)', $corePlurals));
164
		$this->assertTrue(in_array('20 = 0 or > 1 (from core)', $corePlurals));
165
		$this->assertTrue(in_array('21 = 0 or > 1 (from core)', $corePlurals));
166
		$this->assertTrue(in_array('22 = 0 or > 1 (from core)', $corePlurals));
167
		$this->assertTrue(in_array('23 = 0 or > 1 (from core)', $corePlurals));
168
		$this->assertTrue(in_array('24 = 0 or > 1 (from core)', $corePlurals));
169
		$this->assertTrue(in_array('25 = 0 or > 1 (from core)', $corePlurals));
170
	}
171
 
172
/**
173
 * testPoRulesZero method
174
 *
175
 * @return void
176
 */
177
	public function testPoRulesZero() {
178
		Configure::write('Config.language', 'rule_0_po');
179
		$this->assertRulesZero();
180
	}
181
 
182
/**
183
 * testMoRulesZero method
184
 *
185
 * @return void
186
 */
187
	public function testMoRulesZero() {
188
		Configure::write('Config.language', 'rule_0_mo');
189
		$this->assertRulesZero();
190
	}
191
 
192
/**
193
 * Assertions for rules zero.
194
 *
195
 * @return void
196
 */
197
	public function assertRulesZero() {
198
		$singular = $this->_singular();
199
		$this->assertEquals('Plural Rule 0 (translated)', $singular);
200
 
201
		$plurals = $this->_plural();
202
		$this->assertTrue(in_array('0 ends with any # (translated)', $plurals));
203
		$this->assertTrue(in_array('1 ends with any # (translated)', $plurals));
204
		$this->assertTrue(in_array('2 ends with any # (translated)', $plurals));
205
		$this->assertTrue(in_array('3 ends with any # (translated)', $plurals));
206
		$this->assertTrue(in_array('4 ends with any # (translated)', $plurals));
207
		$this->assertTrue(in_array('5 ends with any # (translated)', $plurals));
208
		$this->assertTrue(in_array('6 ends with any # (translated)', $plurals));
209
		$this->assertTrue(in_array('7 ends with any # (translated)', $plurals));
210
		$this->assertTrue(in_array('8 ends with any # (translated)', $plurals));
211
		$this->assertTrue(in_array('9 ends with any # (translated)', $plurals));
212
		$this->assertTrue(in_array('10 ends with any # (translated)', $plurals));
213
		$this->assertTrue(in_array('11 ends with any # (translated)', $plurals));
214
		$this->assertTrue(in_array('12 ends with any # (translated)', $plurals));
215
		$this->assertTrue(in_array('13 ends with any # (translated)', $plurals));
216
		$this->assertTrue(in_array('14 ends with any # (translated)', $plurals));
217
		$this->assertTrue(in_array('15 ends with any # (translated)', $plurals));
218
		$this->assertTrue(in_array('16 ends with any # (translated)', $plurals));
219
		$this->assertTrue(in_array('17 ends with any # (translated)', $plurals));
220
		$this->assertTrue(in_array('18 ends with any # (translated)', $plurals));
221
		$this->assertTrue(in_array('19 ends with any # (translated)', $plurals));
222
		$this->assertTrue(in_array('20 ends with any # (translated)', $plurals));
223
		$this->assertTrue(in_array('21 ends with any # (translated)', $plurals));
224
		$this->assertTrue(in_array('22 ends with any # (translated)', $plurals));
225
		$this->assertTrue(in_array('23 ends with any # (translated)', $plurals));
226
		$this->assertTrue(in_array('24 ends with any # (translated)', $plurals));
227
		$this->assertTrue(in_array('25 ends with any # (translated)', $plurals));
228
 
229
		$coreSingular = $this->_singularFromCore();
230
		$this->assertEquals('Plural Rule 0 (from core translated)', $coreSingular);
231
 
232
		$corePlurals = $this->_pluralFromCore();
233
		$this->assertTrue(in_array('0 ends with any # (from core translated)', $corePlurals));
234
		$this->assertTrue(in_array('1 ends with any # (from core translated)', $corePlurals));
235
		$this->assertTrue(in_array('2 ends with any # (from core translated)', $corePlurals));
236
		$this->assertTrue(in_array('3 ends with any # (from core translated)', $corePlurals));
237
		$this->assertTrue(in_array('4 ends with any # (from core translated)', $corePlurals));
238
		$this->assertTrue(in_array('5 ends with any # (from core translated)', $corePlurals));
239
		$this->assertTrue(in_array('6 ends with any # (from core translated)', $corePlurals));
240
		$this->assertTrue(in_array('7 ends with any # (from core translated)', $corePlurals));
241
		$this->assertTrue(in_array('8 ends with any # (from core translated)', $corePlurals));
242
		$this->assertTrue(in_array('9 ends with any # (from core translated)', $corePlurals));
243
		$this->assertTrue(in_array('10 ends with any # (from core translated)', $corePlurals));
244
		$this->assertTrue(in_array('11 ends with any # (from core translated)', $corePlurals));
245
		$this->assertTrue(in_array('12 ends with any # (from core translated)', $corePlurals));
246
		$this->assertTrue(in_array('13 ends with any # (from core translated)', $corePlurals));
247
		$this->assertTrue(in_array('14 ends with any # (from core translated)', $corePlurals));
248
		$this->assertTrue(in_array('15 ends with any # (from core translated)', $corePlurals));
249
		$this->assertTrue(in_array('16 ends with any # (from core translated)', $corePlurals));
250
		$this->assertTrue(in_array('17 ends with any # (from core translated)', $corePlurals));
251
		$this->assertTrue(in_array('18 ends with any # (from core translated)', $corePlurals));
252
		$this->assertTrue(in_array('19 ends with any # (from core translated)', $corePlurals));
253
		$this->assertTrue(in_array('20 ends with any # (from core translated)', $corePlurals));
254
		$this->assertTrue(in_array('21 ends with any # (from core translated)', $corePlurals));
255
		$this->assertTrue(in_array('22 ends with any # (from core translated)', $corePlurals));
256
		$this->assertTrue(in_array('23 ends with any # (from core translated)', $corePlurals));
257
		$this->assertTrue(in_array('24 ends with any # (from core translated)', $corePlurals));
258
		$this->assertTrue(in_array('25 ends with any # (from core translated)', $corePlurals));
259
	}
260
 
261
/**
262
 * testPoRulesOne method
263
 *
264
 * @return void
265
 */
266
	public function testPoRulesOne() {
267
		Configure::write('Config.language', 'rule_1_po');
268
		$this->assertRulesOne();
269
	}
270
 
271
/**
272
 * testMoRulesOne method
273
 *
274
 * @return void
275
 */
276
	public function testMoRulesOne() {
277
		Configure::write('Config.language', 'rule_1_mo');
278
		$this->assertRulesOne();
279
	}
280
 
281
/**
282
 * Assertions for plural rule one
283
 *
284
 * @return void
285
 */
286
	public function assertRulesOne() {
287
		$singular = $this->_singular();
288
		$this->assertEquals('Plural Rule 1 (translated)', $singular);
289
 
290
		$plurals = $this->_plural();
291
		$this->assertTrue(in_array('0 = 0 or > 1 (translated)', $plurals));
292
		$this->assertTrue(in_array('1 = 1 (translated)', $plurals));
293
		$this->assertTrue(in_array('2 = 0 or > 1 (translated)', $plurals));
294
		$this->assertTrue(in_array('3 = 0 or > 1 (translated)', $plurals));
295
		$this->assertTrue(in_array('4 = 0 or > 1 (translated)', $plurals));
296
		$this->assertTrue(in_array('5 = 0 or > 1 (translated)', $plurals));
297
		$this->assertTrue(in_array('6 = 0 or > 1 (translated)', $plurals));
298
		$this->assertTrue(in_array('7 = 0 or > 1 (translated)', $plurals));
299
		$this->assertTrue(in_array('8 = 0 or > 1 (translated)', $plurals));
300
		$this->assertTrue(in_array('9 = 0 or > 1 (translated)', $plurals));
301
		$this->assertTrue(in_array('10 = 0 or > 1 (translated)', $plurals));
302
		$this->assertTrue(in_array('11 = 0 or > 1 (translated)', $plurals));
303
		$this->assertTrue(in_array('12 = 0 or > 1 (translated)', $plurals));
304
		$this->assertTrue(in_array('13 = 0 or > 1 (translated)', $plurals));
305
		$this->assertTrue(in_array('14 = 0 or > 1 (translated)', $plurals));
306
		$this->assertTrue(in_array('15 = 0 or > 1 (translated)', $plurals));
307
		$this->assertTrue(in_array('16 = 0 or > 1 (translated)', $plurals));
308
		$this->assertTrue(in_array('17 = 0 or > 1 (translated)', $plurals));
309
		$this->assertTrue(in_array('18 = 0 or > 1 (translated)', $plurals));
310
		$this->assertTrue(in_array('19 = 0 or > 1 (translated)', $plurals));
311
		$this->assertTrue(in_array('20 = 0 or > 1 (translated)', $plurals));
312
		$this->assertTrue(in_array('21 = 0 or > 1 (translated)', $plurals));
313
		$this->assertTrue(in_array('22 = 0 or > 1 (translated)', $plurals));
314
		$this->assertTrue(in_array('23 = 0 or > 1 (translated)', $plurals));
315
		$this->assertTrue(in_array('24 = 0 or > 1 (translated)', $plurals));
316
		$this->assertTrue(in_array('25 = 0 or > 1 (translated)', $plurals));
317
 
318
		$coreSingular = $this->_singularFromCore();
319
		$this->assertEquals('Plural Rule 1 (from core translated)', $coreSingular);
320
 
321
		$corePlurals = $this->_pluralFromCore();
322
		$this->assertTrue(in_array('0 = 0 or > 1 (from core translated)', $corePlurals));
323
		$this->assertTrue(in_array('1 = 1 (from core translated)', $corePlurals));
324
		$this->assertTrue(in_array('2 = 0 or > 1 (from core translated)', $corePlurals));
325
		$this->assertTrue(in_array('3 = 0 or > 1 (from core translated)', $corePlurals));
326
		$this->assertTrue(in_array('4 = 0 or > 1 (from core translated)', $corePlurals));
327
		$this->assertTrue(in_array('5 = 0 or > 1 (from core translated)', $corePlurals));
328
		$this->assertTrue(in_array('6 = 0 or > 1 (from core translated)', $corePlurals));
329
		$this->assertTrue(in_array('7 = 0 or > 1 (from core translated)', $corePlurals));
330
		$this->assertTrue(in_array('8 = 0 or > 1 (from core translated)', $corePlurals));
331
		$this->assertTrue(in_array('9 = 0 or > 1 (from core translated)', $corePlurals));
332
		$this->assertTrue(in_array('10 = 0 or > 1 (from core translated)', $corePlurals));
333
		$this->assertTrue(in_array('11 = 0 or > 1 (from core translated)', $corePlurals));
334
		$this->assertTrue(in_array('12 = 0 or > 1 (from core translated)', $corePlurals));
335
		$this->assertTrue(in_array('13 = 0 or > 1 (from core translated)', $corePlurals));
336
		$this->assertTrue(in_array('14 = 0 or > 1 (from core translated)', $corePlurals));
337
		$this->assertTrue(in_array('15 = 0 or > 1 (from core translated)', $corePlurals));
338
		$this->assertTrue(in_array('16 = 0 or > 1 (from core translated)', $corePlurals));
339
		$this->assertTrue(in_array('17 = 0 or > 1 (from core translated)', $corePlurals));
340
		$this->assertTrue(in_array('18 = 0 or > 1 (from core translated)', $corePlurals));
341
		$this->assertTrue(in_array('19 = 0 or > 1 (from core translated)', $corePlurals));
342
		$this->assertTrue(in_array('20 = 0 or > 1 (from core translated)', $corePlurals));
343
		$this->assertTrue(in_array('21 = 0 or > 1 (from core translated)', $corePlurals));
344
		$this->assertTrue(in_array('22 = 0 or > 1 (from core translated)', $corePlurals));
345
		$this->assertTrue(in_array('23 = 0 or > 1 (from core translated)', $corePlurals));
346
		$this->assertTrue(in_array('24 = 0 or > 1 (from core translated)', $corePlurals));
347
		$this->assertTrue(in_array('25 = 0 or > 1 (from core translated)', $corePlurals));
348
	}
349
 
350
/**
351
 * testMoRulesTwo method
352
 *
353
 * @return void
354
 */
355
	public function testMoRulesTwo() {
356
		Configure::write('Config.language', 'rule_2_mo');
357
		$this->assertRulesTwo();
358
	}
359
 
360
/**
361
 * testPoRulesTwo method
362
 *
363
 * @return void
364
 */
365
	public function testPoRulesTwo() {
366
		Configure::write('Config.language', 'rule_2_po');
367
		$this->assertRulesTwo();
368
	}
369
 
370
/**
371
 * Assertions for rules Two
372
 *
373
 * @return void
374
 */
375
	public function assertRulesTwo() {
376
		$singular = $this->_singular();
377
		$this->assertEquals('Plural Rule 2 (translated)', $singular);
378
 
379
		$plurals = $this->_plural();
380
		$this->assertTrue(in_array('0 = 0 or 1 (translated)', $plurals));
381
		$this->assertTrue(in_array('1 = 0 or 1 (translated)', $plurals));
382
		$this->assertTrue(in_array('2 > 1 (translated)', $plurals));
383
		$this->assertTrue(in_array('3 > 1 (translated)', $plurals));
384
		$this->assertTrue(in_array('4 > 1 (translated)', $plurals));
385
		$this->assertTrue(in_array('5 > 1 (translated)', $plurals));
386
		$this->assertTrue(in_array('6 > 1 (translated)', $plurals));
387
		$this->assertTrue(in_array('7 > 1 (translated)', $plurals));
388
		$this->assertTrue(in_array('8 > 1 (translated)', $plurals));
389
		$this->assertTrue(in_array('9 > 1 (translated)', $plurals));
390
		$this->assertTrue(in_array('10 > 1 (translated)', $plurals));
391
		$this->assertTrue(in_array('11 > 1 (translated)', $plurals));
392
		$this->assertTrue(in_array('12 > 1 (translated)', $plurals));
393
		$this->assertTrue(in_array('13 > 1 (translated)', $plurals));
394
		$this->assertTrue(in_array('14 > 1 (translated)', $plurals));
395
		$this->assertTrue(in_array('15 > 1 (translated)', $plurals));
396
		$this->assertTrue(in_array('16 > 1 (translated)', $plurals));
397
		$this->assertTrue(in_array('17 > 1 (translated)', $plurals));
398
		$this->assertTrue(in_array('18 > 1 (translated)', $plurals));
399
		$this->assertTrue(in_array('19 > 1 (translated)', $plurals));
400
		$this->assertTrue(in_array('20 > 1 (translated)', $plurals));
401
		$this->assertTrue(in_array('21 > 1 (translated)', $plurals));
402
		$this->assertTrue(in_array('22 > 1 (translated)', $plurals));
403
		$this->assertTrue(in_array('23 > 1 (translated)', $plurals));
404
		$this->assertTrue(in_array('24 > 1 (translated)', $plurals));
405
		$this->assertTrue(in_array('25 > 1 (translated)', $plurals));
406
 
407
		$coreSingular = $this->_singularFromCore();
408
		$this->assertEquals('Plural Rule 2 (from core translated)', $coreSingular);
409
 
410
		$corePlurals = $this->_pluralFromCore();
411
		$this->assertTrue(in_array('0 = 0 or 1 (from core translated)', $corePlurals));
412
		$this->assertTrue(in_array('1 = 0 or 1 (from core translated)', $corePlurals));
413
		$this->assertTrue(in_array('2 > 1 (from core translated)', $corePlurals));
414
		$this->assertTrue(in_array('3 > 1 (from core translated)', $corePlurals));
415
		$this->assertTrue(in_array('4 > 1 (from core translated)', $corePlurals));
416
		$this->assertTrue(in_array('5 > 1 (from core translated)', $corePlurals));
417
		$this->assertTrue(in_array('6 > 1 (from core translated)', $corePlurals));
418
		$this->assertTrue(in_array('7 > 1 (from core translated)', $corePlurals));
419
		$this->assertTrue(in_array('8 > 1 (from core translated)', $corePlurals));
420
		$this->assertTrue(in_array('9 > 1 (from core translated)', $corePlurals));
421
		$this->assertTrue(in_array('10 > 1 (from core translated)', $corePlurals));
422
		$this->assertTrue(in_array('11 > 1 (from core translated)', $corePlurals));
423
		$this->assertTrue(in_array('12 > 1 (from core translated)', $corePlurals));
424
		$this->assertTrue(in_array('13 > 1 (from core translated)', $corePlurals));
425
		$this->assertTrue(in_array('14 > 1 (from core translated)', $corePlurals));
426
		$this->assertTrue(in_array('15 > 1 (from core translated)', $corePlurals));
427
		$this->assertTrue(in_array('16 > 1 (from core translated)', $corePlurals));
428
		$this->assertTrue(in_array('17 > 1 (from core translated)', $corePlurals));
429
		$this->assertTrue(in_array('18 > 1 (from core translated)', $corePlurals));
430
		$this->assertTrue(in_array('19 > 1 (from core translated)', $corePlurals));
431
		$this->assertTrue(in_array('20 > 1 (from core translated)', $corePlurals));
432
		$this->assertTrue(in_array('21 > 1 (from core translated)', $corePlurals));
433
		$this->assertTrue(in_array('22 > 1 (from core translated)', $corePlurals));
434
		$this->assertTrue(in_array('23 > 1 (from core translated)', $corePlurals));
435
		$this->assertTrue(in_array('24 > 1 (from core translated)', $corePlurals));
436
		$this->assertTrue(in_array('25 > 1 (from core translated)', $corePlurals));
437
	}
438
 
439
/**
440
 * testPoRulesThree method
441
 *
442
 * @return void
443
 */
444
	public function testPoRulesThree() {
445
		Configure::write('Config.language', 'rule_3_po');
446
		$this->assertRulesThree();
447
	}
448
 
449
/**
450
 * testMoRulesThree method
451
 *
452
 * @return void
453
 */
454
	public function testMoRulesThree() {
455
		Configure::write('Config.language', 'rule_3_mo');
456
		$this->assertRulesThree();
457
	}
458
 
459
/**
460
 * Assert rules for plural three.
461
 *
462
 * @return void
463
 */
464
	public function assertRulesThree() {
465
		$singular = $this->_singular();
466
		$this->assertEquals('Plural Rule 3 (translated)', $singular);
467
 
468
		$plurals = $this->_plural();
469
		$this->assertTrue(in_array('0 = 0 (translated)', $plurals));
470
		$this->assertTrue(in_array('1 ends 1 but not 11 (translated)', $plurals));
471
		$this->assertTrue(in_array('2 everything else (translated)', $plurals));
472
		$this->assertTrue(in_array('3 everything else (translated)', $plurals));
473
		$this->assertTrue(in_array('4 everything else (translated)', $plurals));
474
		$this->assertTrue(in_array('5 everything else (translated)', $plurals));
475
		$this->assertTrue(in_array('6 everything else (translated)', $plurals));
476
		$this->assertTrue(in_array('7 everything else (translated)', $plurals));
477
		$this->assertTrue(in_array('8 everything else (translated)', $plurals));
478
		$this->assertTrue(in_array('9 everything else (translated)', $plurals));
479
		$this->assertTrue(in_array('10 everything else (translated)', $plurals));
480
		$this->assertTrue(in_array('11 everything else (translated)', $plurals));
481
		$this->assertTrue(in_array('12 everything else (translated)', $plurals));
482
		$this->assertTrue(in_array('13 everything else (translated)', $plurals));
483
		$this->assertTrue(in_array('14 everything else (translated)', $plurals));
484
		$this->assertTrue(in_array('15 everything else (translated)', $plurals));
485
		$this->assertTrue(in_array('16 everything else (translated)', $plurals));
486
		$this->assertTrue(in_array('17 everything else (translated)', $plurals));
487
		$this->assertTrue(in_array('18 everything else (translated)', $plurals));
488
		$this->assertTrue(in_array('19 everything else (translated)', $plurals));
489
		$this->assertTrue(in_array('20 everything else (translated)', $plurals));
490
		$this->assertTrue(in_array('21 ends 1 but not 11 (translated)', $plurals));
491
		$this->assertTrue(in_array('22 everything else (translated)', $plurals));
492
		$this->assertTrue(in_array('23 everything else (translated)', $plurals));
493
		$this->assertTrue(in_array('24 everything else (translated)', $plurals));
494
		$this->assertTrue(in_array('25 everything else (translated)', $plurals));
495
 
496
		$coreSingular = $this->_singularFromCore();
497
		$this->assertEquals('Plural Rule 3 (from core translated)', $coreSingular);
498
 
499
		$corePlurals = $this->_pluralFromCore();
500
		$this->assertTrue(in_array('0 = 0 (from core translated)', $corePlurals));
501
		$this->assertTrue(in_array('1 ends 1 but not 11 (from core translated)', $corePlurals));
502
		$this->assertTrue(in_array('2 everything else (from core translated)', $corePlurals));
503
		$this->assertTrue(in_array('3 everything else (from core translated)', $corePlurals));
504
		$this->assertTrue(in_array('4 everything else (from core translated)', $corePlurals));
505
		$this->assertTrue(in_array('5 everything else (from core translated)', $corePlurals));
506
		$this->assertTrue(in_array('6 everything else (from core translated)', $corePlurals));
507
		$this->assertTrue(in_array('7 everything else (from core translated)', $corePlurals));
508
		$this->assertTrue(in_array('8 everything else (from core translated)', $corePlurals));
509
		$this->assertTrue(in_array('9 everything else (from core translated)', $corePlurals));
510
		$this->assertTrue(in_array('10 everything else (from core translated)', $corePlurals));
511
		$this->assertTrue(in_array('11 everything else (from core translated)', $corePlurals));
512
		$this->assertTrue(in_array('12 everything else (from core translated)', $corePlurals));
513
		$this->assertTrue(in_array('13 everything else (from core translated)', $corePlurals));
514
		$this->assertTrue(in_array('14 everything else (from core translated)', $corePlurals));
515
		$this->assertTrue(in_array('15 everything else (from core translated)', $corePlurals));
516
		$this->assertTrue(in_array('16 everything else (from core translated)', $corePlurals));
517
		$this->assertTrue(in_array('17 everything else (from core translated)', $corePlurals));
518
		$this->assertTrue(in_array('18 everything else (from core translated)', $corePlurals));
519
		$this->assertTrue(in_array('19 everything else (from core translated)', $corePlurals));
520
		$this->assertTrue(in_array('20 everything else (from core translated)', $corePlurals));
521
		$this->assertTrue(in_array('21 ends 1 but not 11 (from core translated)', $corePlurals));
522
		$this->assertTrue(in_array('22 everything else (from core translated)', $corePlurals));
523
		$this->assertTrue(in_array('23 everything else (from core translated)', $corePlurals));
524
		$this->assertTrue(in_array('24 everything else (from core translated)', $corePlurals));
525
		$this->assertTrue(in_array('25 everything else (from core translated)', $corePlurals));
526
	}
527
 
528
/**
529
 * testPoRulesFour method
530
 *
531
 * @return void
532
 */
533
	public function testPoRulesFour() {
534
		Configure::write('Config.language', 'rule_4_po');
535
		$this->assertRulesFour();
536
	}
537
 
538
/**
539
 * testMoRulesFour method
540
 *
541
 * @return void
542
 */
543
	public function testMoRulesFour() {
544
		Configure::write('Config.language', 'rule_4_mo');
545
		$this->assertRulesFour();
546
	}
547
 
548
/**
549
 * Run the assertions for Rule 4 plurals.
550
 *
551
 * @return void
552
 */
553
	public function assertRulesFour() {
554
		$singular = $this->_singular();
555
		$this->assertEquals('Plural Rule 4 (translated)', $singular);
556
 
557
		$plurals = $this->_plural();
558
		$this->assertTrue(in_array('0 everything else (translated)', $plurals));
559
		$this->assertTrue(in_array('1 = 1 (translated)', $plurals));
560
		$this->assertTrue(in_array('2 = 2 (translated)', $plurals));
561
		$this->assertTrue(in_array('3 everything else (translated)', $plurals));
562
		$this->assertTrue(in_array('4 everything else (translated)', $plurals));
563
		$this->assertTrue(in_array('5 everything else (translated)', $plurals));
564
		$this->assertTrue(in_array('6 everything else (translated)', $plurals));
565
		$this->assertTrue(in_array('7 everything else (translated)', $plurals));
566
		$this->assertTrue(in_array('8 everything else (translated)', $plurals));
567
		$this->assertTrue(in_array('9 everything else (translated)', $plurals));
568
		$this->assertTrue(in_array('10 everything else (translated)', $plurals));
569
		$this->assertTrue(in_array('11 everything else (translated)', $plurals));
570
		$this->assertTrue(in_array('12 everything else (translated)', $plurals));
571
		$this->assertTrue(in_array('13 everything else (translated)', $plurals));
572
		$this->assertTrue(in_array('14 everything else (translated)', $plurals));
573
		$this->assertTrue(in_array('15 everything else (translated)', $plurals));
574
		$this->assertTrue(in_array('16 everything else (translated)', $plurals));
575
		$this->assertTrue(in_array('17 everything else (translated)', $plurals));
576
		$this->assertTrue(in_array('18 everything else (translated)', $plurals));
577
		$this->assertTrue(in_array('19 everything else (translated)', $plurals));
578
		$this->assertTrue(in_array('20 everything else (translated)', $plurals));
579
		$this->assertTrue(in_array('21 everything else (translated)', $plurals));
580
		$this->assertTrue(in_array('22 everything else (translated)', $plurals));
581
		$this->assertTrue(in_array('23 everything else (translated)', $plurals));
582
		$this->assertTrue(in_array('24 everything else (translated)', $plurals));
583
		$this->assertTrue(in_array('25 everything else (translated)', $plurals));
584
 
585
		$coreSingular = $this->_singularFromCore();
586
		$this->assertEquals('Plural Rule 4 (from core translated)', $coreSingular);
587
 
588
		$corePlurals = $this->_pluralFromCore();
589
		$this->assertTrue(in_array('0 everything else (from core translated)', $corePlurals));
590
		$this->assertTrue(in_array('1 = 1 (from core translated)', $corePlurals));
591
		$this->assertTrue(in_array('2 = 2 (from core translated)', $corePlurals));
592
		$this->assertTrue(in_array('3 everything else (from core translated)', $corePlurals));
593
		$this->assertTrue(in_array('4 everything else (from core translated)', $corePlurals));
594
		$this->assertTrue(in_array('5 everything else (from core translated)', $corePlurals));
595
		$this->assertTrue(in_array('6 everything else (from core translated)', $corePlurals));
596
		$this->assertTrue(in_array('7 everything else (from core translated)', $corePlurals));
597
		$this->assertTrue(in_array('8 everything else (from core translated)', $corePlurals));
598
		$this->assertTrue(in_array('9 everything else (from core translated)', $corePlurals));
599
		$this->assertTrue(in_array('10 everything else (from core translated)', $corePlurals));
600
		$this->assertTrue(in_array('11 everything else (from core translated)', $corePlurals));
601
		$this->assertTrue(in_array('12 everything else (from core translated)', $corePlurals));
602
		$this->assertTrue(in_array('13 everything else (from core translated)', $corePlurals));
603
		$this->assertTrue(in_array('14 everything else (from core translated)', $corePlurals));
604
		$this->assertTrue(in_array('15 everything else (from core translated)', $corePlurals));
605
		$this->assertTrue(in_array('16 everything else (from core translated)', $corePlurals));
606
		$this->assertTrue(in_array('17 everything else (from core translated)', $corePlurals));
607
		$this->assertTrue(in_array('18 everything else (from core translated)', $corePlurals));
608
		$this->assertTrue(in_array('19 everything else (from core translated)', $corePlurals));
609
		$this->assertTrue(in_array('20 everything else (from core translated)', $corePlurals));
610
		$this->assertTrue(in_array('21 everything else (from core translated)', $corePlurals));
611
		$this->assertTrue(in_array('22 everything else (from core translated)', $corePlurals));
612
		$this->assertTrue(in_array('23 everything else (from core translated)', $corePlurals));
613
		$this->assertTrue(in_array('24 everything else (from core translated)', $corePlurals));
614
		$this->assertTrue(in_array('25 everything else (from core translated)', $corePlurals));
615
	}
616
 
617
/**
618
 * testPoRulesFive method
619
 *
620
 * @return void
621
 */
622
	public function testPoRulesFive() {
623
		Configure::write('Config.language', 'rule_5_po');
624
		$this->assertRulesFive();
625
	}
626
 
627
/**
628
 * testMoRulesFive method
629
 *
630
 * @return void
631
 */
632
	public function testMoRulesFive() {
633
		Configure::write('Config.language', 'rule_5_mo');
634
		$this->assertRulesFive();
635
	}
636
 
637
/**
638
 * Run the assertions for rule 5 plurals
639
 *
640
 * @return void
641
 */
642
	public function assertRulesFive() {
643
		$singular = $this->_singular();
644
		$this->assertEquals('Plural Rule 5 (translated)', $singular);
645
 
646
		$plurals = $this->_plural();
647
		$this->assertTrue(in_array('0 = 0 or ends in 01-19 (translated)', $plurals));
648
		$this->assertTrue(in_array('0 = 0 or ends in 01-19 (translated)', $plurals));
649
		$this->assertTrue(in_array('1 = 1 (translated)', $plurals));
650
		$this->assertTrue(in_array('2 = 0 or ends in 01-19 (translated)', $plurals));
651
		$this->assertTrue(in_array('3 = 0 or ends in 01-19 (translated)', $plurals));
652
		$this->assertTrue(in_array('4 = 0 or ends in 01-19 (translated)', $plurals));
653
		$this->assertTrue(in_array('5 = 0 or ends in 01-19 (translated)', $plurals));
654
		$this->assertTrue(in_array('6 = 0 or ends in 01-19 (translated)', $plurals));
655
		$this->assertTrue(in_array('7 = 0 or ends in 01-19 (translated)', $plurals));
656
		$this->assertTrue(in_array('8 = 0 or ends in 01-19 (translated)', $plurals));
657
		$this->assertTrue(in_array('9 = 0 or ends in 01-19 (translated)', $plurals));
658
		$this->assertTrue(in_array('10 = 0 or ends in 01-19 (translated)', $plurals));
659
		$this->assertTrue(in_array('11 = 0 or ends in 01-19 (translated)', $plurals));
660
		$this->assertTrue(in_array('12 = 0 or ends in 01-19 (translated)', $plurals));
661
		$this->assertTrue(in_array('13 = 0 or ends in 01-19 (translated)', $plurals));
662
		$this->assertTrue(in_array('14 = 0 or ends in 01-19 (translated)', $plurals));
663
		$this->assertTrue(in_array('15 = 0 or ends in 01-19 (translated)', $plurals));
664
		$this->assertTrue(in_array('16 = 0 or ends in 01-19 (translated)', $plurals));
665
		$this->assertTrue(in_array('17 = 0 or ends in 01-19 (translated)', $plurals));
666
		$this->assertTrue(in_array('18 = 0 or ends in 01-19 (translated)', $plurals));
667
		$this->assertTrue(in_array('19 = 0 or ends in 01-19 (translated)', $plurals));
668
		$this->assertTrue(in_array('20 everything else (translated)', $plurals));
669
		$this->assertTrue(in_array('21 everything else (translated)', $plurals));
670
		$this->assertTrue(in_array('22 everything else (translated)', $plurals));
671
		$this->assertTrue(in_array('23 everything else (translated)', $plurals));
672
		$this->assertTrue(in_array('24 everything else (translated)', $plurals));
673
		$this->assertTrue(in_array('25 everything else (translated)', $plurals));
674
 
675
		$coreSingular = $this->_singularFromCore();
676
		$this->assertEquals('Plural Rule 5 (from core translated)', $coreSingular);
677
 
678
		$corePlurals = $this->_pluralFromCore();
679
		$this->assertTrue(in_array('0 = 0 or ends in 01-19 (from core translated)', $corePlurals));
680
		$this->assertTrue(in_array('0 = 0 or ends in 01-19 (from core translated)', $corePlurals));
681
		$this->assertTrue(in_array('1 = 1 (from core translated)', $corePlurals));
682
		$this->assertTrue(in_array('2 = 0 or ends in 01-19 (from core translated)', $corePlurals));
683
		$this->assertTrue(in_array('3 = 0 or ends in 01-19 (from core translated)', $corePlurals));
684
		$this->assertTrue(in_array('4 = 0 or ends in 01-19 (from core translated)', $corePlurals));
685
		$this->assertTrue(in_array('5 = 0 or ends in 01-19 (from core translated)', $corePlurals));
686
		$this->assertTrue(in_array('6 = 0 or ends in 01-19 (from core translated)', $corePlurals));
687
		$this->assertTrue(in_array('7 = 0 or ends in 01-19 (from core translated)', $corePlurals));
688
		$this->assertTrue(in_array('8 = 0 or ends in 01-19 (from core translated)', $corePlurals));
689
		$this->assertTrue(in_array('9 = 0 or ends in 01-19 (from core translated)', $corePlurals));
690
		$this->assertTrue(in_array('10 = 0 or ends in 01-19 (from core translated)', $corePlurals));
691
		$this->assertTrue(in_array('11 = 0 or ends in 01-19 (from core translated)', $corePlurals));
692
		$this->assertTrue(in_array('12 = 0 or ends in 01-19 (from core translated)', $corePlurals));
693
		$this->assertTrue(in_array('13 = 0 or ends in 01-19 (from core translated)', $corePlurals));
694
		$this->assertTrue(in_array('14 = 0 or ends in 01-19 (from core translated)', $corePlurals));
695
		$this->assertTrue(in_array('15 = 0 or ends in 01-19 (from core translated)', $corePlurals));
696
		$this->assertTrue(in_array('16 = 0 or ends in 01-19 (from core translated)', $corePlurals));
697
		$this->assertTrue(in_array('17 = 0 or ends in 01-19 (from core translated)', $corePlurals));
698
		$this->assertTrue(in_array('18 = 0 or ends in 01-19 (from core translated)', $corePlurals));
699
		$this->assertTrue(in_array('19 = 0 or ends in 01-19 (from core translated)', $corePlurals));
700
		$this->assertTrue(in_array('20 everything else (from core translated)', $corePlurals));
701
		$this->assertTrue(in_array('21 everything else (from core translated)', $corePlurals));
702
		$this->assertTrue(in_array('22 everything else (from core translated)', $corePlurals));
703
		$this->assertTrue(in_array('23 everything else (from core translated)', $corePlurals));
704
		$this->assertTrue(in_array('24 everything else (from core translated)', $corePlurals));
705
		$this->assertTrue(in_array('25 everything else (from core translated)', $corePlurals));
706
	}
707
 
708
/**
709
 * testPoRulesSix method
710
 *
711
 * @return void
712
 */
713
	public function testPoRulesSix() {
714
		Configure::write('Config.language', 'rule_6_po');
715
		$this->assertRulesSix();
716
	}
717
 
718
/**
719
 * testMoRulesSix method
720
 *
721
 * @return void
722
 */
723
	public function testMoRulesSix() {
724
		Configure::write('Config.language', 'rule_6_mo');
725
		$this->assertRulesSix();
726
	}
727
 
728
/**
729
 * Assertions for the sixth plural rules.
730
 *
731
 * @return void
732
 */
733
	public function assertRulesSix() {
734
		$singular = $this->_singular();
735
		$this->assertEquals('Plural Rule 6 (translated)', $singular);
736
 
737
		$plurals = $this->_plural();
738
		$this->assertTrue(in_array('0 ends in 0 or ends in 10-20 (translated)', $plurals));
739
		$this->assertTrue(in_array('1 ends in 1, not 11 (translated)', $plurals));
740
		$this->assertTrue(in_array('2 everything else (translated)', $plurals));
741
		$this->assertTrue(in_array('3 everything else (translated)', $plurals));
742
		$this->assertTrue(in_array('4 everything else (translated)', $plurals));
743
		$this->assertTrue(in_array('5 everything else (translated)', $plurals));
744
		$this->assertTrue(in_array('6 everything else (translated)', $plurals));
745
		$this->assertTrue(in_array('7 everything else (translated)', $plurals));
746
		$this->assertTrue(in_array('8 everything else (translated)', $plurals));
747
		$this->assertTrue(in_array('9 everything else (translated)', $plurals));
748
		$this->assertTrue(in_array('10 ends in 0 or ends in 10-20 (translated)', $plurals));
749
		$this->assertTrue(in_array('11 ends in 0 or ends in 10-20 (translated)', $plurals));
750
		$this->assertTrue(in_array('12 ends in 0 or ends in 10-20 (translated)', $plurals));
751
		$this->assertTrue(in_array('13 ends in 0 or ends in 10-20 (translated)', $plurals));
752
		$this->assertTrue(in_array('14 ends in 0 or ends in 10-20 (translated)', $plurals));
753
		$this->assertTrue(in_array('15 ends in 0 or ends in 10-20 (translated)', $plurals));
754
		$this->assertTrue(in_array('16 ends in 0 or ends in 10-20 (translated)', $plurals));
755
		$this->assertTrue(in_array('17 ends in 0 or ends in 10-20 (translated)', $plurals));
756
		$this->assertTrue(in_array('18 ends in 0 or ends in 10-20 (translated)', $plurals));
757
		$this->assertTrue(in_array('19 ends in 0 or ends in 10-20 (translated)', $plurals));
758
		$this->assertTrue(in_array('20 ends in 0 or ends in 10-20 (translated)', $plurals));
759
		$this->assertTrue(in_array('21 ends in 1, not 11 (translated)', $plurals));
760
		$this->assertTrue(in_array('22 everything else (translated)', $plurals));
761
		$this->assertTrue(in_array('23 everything else (translated)', $plurals));
762
		$this->assertTrue(in_array('24 everything else (translated)', $plurals));
763
		$this->assertTrue(in_array('25 everything else (translated)', $plurals));
764
 
765
		$coreSingular = $this->_singularFromCore();
766
		$this->assertEquals('Plural Rule 6 (from core translated)', $coreSingular);
767
 
768
		$corePlurals = $this->_pluralFromCore();
769
		$this->assertTrue(in_array('0 ends in 0 or ends in 10-20 (from core translated)', $corePlurals));
770
		$this->assertTrue(in_array('1 ends in 1, not 11 (from core translated)', $corePlurals));
771
		$this->assertTrue(in_array('2 everything else (from core translated)', $corePlurals));
772
		$this->assertTrue(in_array('3 everything else (from core translated)', $corePlurals));
773
		$this->assertTrue(in_array('4 everything else (from core translated)', $corePlurals));
774
		$this->assertTrue(in_array('5 everything else (from core translated)', $corePlurals));
775
		$this->assertTrue(in_array('6 everything else (from core translated)', $corePlurals));
776
		$this->assertTrue(in_array('7 everything else (from core translated)', $corePlurals));
777
		$this->assertTrue(in_array('8 everything else (from core translated)', $corePlurals));
778
		$this->assertTrue(in_array('9 everything else (from core translated)', $corePlurals));
779
		$this->assertTrue(in_array('10 ends in 0 or ends in 10-20 (from core translated)', $corePlurals));
780
		$this->assertTrue(in_array('11 ends in 0 or ends in 10-20 (from core translated)', $corePlurals));
781
		$this->assertTrue(in_array('12 ends in 0 or ends in 10-20 (from core translated)', $corePlurals));
782
		$this->assertTrue(in_array('13 ends in 0 or ends in 10-20 (from core translated)', $corePlurals));
783
		$this->assertTrue(in_array('14 ends in 0 or ends in 10-20 (from core translated)', $corePlurals));
784
		$this->assertTrue(in_array('15 ends in 0 or ends in 10-20 (from core translated)', $corePlurals));
785
		$this->assertTrue(in_array('16 ends in 0 or ends in 10-20 (from core translated)', $corePlurals));
786
		$this->assertTrue(in_array('17 ends in 0 or ends in 10-20 (from core translated)', $corePlurals));
787
		$this->assertTrue(in_array('18 ends in 0 or ends in 10-20 (from core translated)', $corePlurals));
788
		$this->assertTrue(in_array('19 ends in 0 or ends in 10-20 (from core translated)', $corePlurals));
789
		$this->assertTrue(in_array('20 ends in 0 or ends in 10-20 (from core translated)', $corePlurals));
790
		$this->assertTrue(in_array('21 ends in 1, not 11 (from core translated)', $corePlurals));
791
		$this->assertTrue(in_array('22 everything else (from core translated)', $corePlurals));
792
		$this->assertTrue(in_array('23 everything else (from core translated)', $corePlurals));
793
		$this->assertTrue(in_array('24 everything else (from core translated)', $corePlurals));
794
		$this->assertTrue(in_array('25 everything else (from core translated)', $corePlurals));
795
	}
796
 
797
/**
798
 * testPoRulesSeven method
799
 *
800
 * @return void
801
 */
802
	public function testPoRulesSeven() {
803
		Configure::write('Config.language', 'rule_7_po');
804
		$this->assertRulesSeven();
805
	}
806
 
807
/**
808
 * testMoRulesSeven method
809
 *
810
 * @return void
811
 */
812
	public function testMoRulesSeven() {
813
		Configure::write('Config.language', 'rule_7_mo');
814
		$this->assertRulesSeven();
815
	}
816
 
817
/**
818
 * Run assertions for seventh plural rules
819
 *
820
 * @return void
821
 */
822
	public function assertRulesSeven() {
823
		$singular = $this->_singular();
824
		$this->assertEquals('Plural Rule 7 (translated)', $singular);
825
 
826
		$plurals = $this->_plural();
827
		$this->assertTrue(in_array('0 everything else (translated)', $plurals));
828
		$this->assertTrue(in_array('1 ends in 1, not 11 (translated)', $plurals));
829
		$this->assertTrue(in_array('2 ends in 2-4, not 12-14 (translated)', $plurals));
830
		$this->assertTrue(in_array('3 ends in 2-4, not 12-14 (translated)', $plurals));
831
		$this->assertTrue(in_array('4 ends in 2-4, not 12-14 (translated)', $plurals));
832
		$this->assertTrue(in_array('5 everything else (translated)', $plurals));
833
		$this->assertTrue(in_array('6 everything else (translated)', $plurals));
834
		$this->assertTrue(in_array('7 everything else (translated)', $plurals));
835
		$this->assertTrue(in_array('8 everything else (translated)', $plurals));
836
		$this->assertTrue(in_array('9 everything else (translated)', $plurals));
837
		$this->assertTrue(in_array('10 everything else (translated)', $plurals));
838
		$this->assertTrue(in_array('11 everything else (translated)', $plurals));
839
		$this->assertTrue(in_array('12 everything else (translated)', $plurals));
840
		$this->assertTrue(in_array('13 everything else (translated)', $plurals));
841
		$this->assertTrue(in_array('14 everything else (translated)', $plurals));
842
		$this->assertTrue(in_array('15 everything else (translated)', $plurals));
843
		$this->assertTrue(in_array('16 everything else (translated)', $plurals));
844
		$this->assertTrue(in_array('17 everything else (translated)', $plurals));
845
		$this->assertTrue(in_array('18 everything else (translated)', $plurals));
846
		$this->assertTrue(in_array('19 everything else (translated)', $plurals));
847
		$this->assertTrue(in_array('20 everything else (translated)', $plurals));
848
		$this->assertTrue(in_array('21 ends in 1, not 11 (translated)', $plurals));
849
		$this->assertTrue(in_array('22 ends in 2-4, not 12-14 (translated)', $plurals));
850
		$this->assertTrue(in_array('23 ends in 2-4, not 12-14 (translated)', $plurals));
851
		$this->assertTrue(in_array('24 ends in 2-4, not 12-14 (translated)', $plurals));
852
		$this->assertTrue(in_array('25 everything else (translated)', $plurals));
853
 
854
		$coreSingular = $this->_singularFromCore();
855
		$this->assertEquals('Plural Rule 7 (from core translated)', $coreSingular);
856
 
857
		$corePlurals = $this->_pluralFromCore();
858
		$this->assertTrue(in_array('0 everything else (from core translated)', $corePlurals));
859
		$this->assertTrue(in_array('1 ends in 1, not 11 (from core translated)', $corePlurals));
860
		$this->assertTrue(in_array('2 ends in 2-4, not 12-14 (from core translated)', $corePlurals));
861
		$this->assertTrue(in_array('3 ends in 2-4, not 12-14 (from core translated)', $corePlurals));
862
		$this->assertTrue(in_array('4 ends in 2-4, not 12-14 (from core translated)', $corePlurals));
863
		$this->assertTrue(in_array('5 everything else (from core translated)', $corePlurals));
864
		$this->assertTrue(in_array('6 everything else (from core translated)', $corePlurals));
865
		$this->assertTrue(in_array('7 everything else (from core translated)', $corePlurals));
866
		$this->assertTrue(in_array('8 everything else (from core translated)', $corePlurals));
867
		$this->assertTrue(in_array('9 everything else (from core translated)', $corePlurals));
868
		$this->assertTrue(in_array('10 everything else (from core translated)', $corePlurals));
869
		$this->assertTrue(in_array('11 everything else (from core translated)', $corePlurals));
870
		$this->assertTrue(in_array('12 everything else (from core translated)', $corePlurals));
871
		$this->assertTrue(in_array('13 everything else (from core translated)', $corePlurals));
872
		$this->assertTrue(in_array('14 everything else (from core translated)', $corePlurals));
873
		$this->assertTrue(in_array('15 everything else (from core translated)', $corePlurals));
874
		$this->assertTrue(in_array('16 everything else (from core translated)', $corePlurals));
875
		$this->assertTrue(in_array('17 everything else (from core translated)', $corePlurals));
876
		$this->assertTrue(in_array('18 everything else (from core translated)', $corePlurals));
877
		$this->assertTrue(in_array('19 everything else (from core translated)', $corePlurals));
878
		$this->assertTrue(in_array('20 everything else (from core translated)', $corePlurals));
879
		$this->assertTrue(in_array('21 ends in 1, not 11 (from core translated)', $corePlurals));
880
		$this->assertTrue(in_array('22 ends in 2-4, not 12-14 (from core translated)', $corePlurals));
881
		$this->assertTrue(in_array('23 ends in 2-4, not 12-14 (from core translated)', $corePlurals));
882
		$this->assertTrue(in_array('24 ends in 2-4, not 12-14 (from core translated)', $corePlurals));
883
		$this->assertTrue(in_array('25 everything else (from core translated)', $corePlurals));
884
	}
885
 
886
/**
887
 * testPoRulesEight method
888
 *
889
 * @return void
890
 */
891
	public function testPoRulesEight() {
892
		Configure::write('Config.language', 'rule_8_po');
893
		$this->assertRulesEight();
894
	}
895
 
896
/**
897
 * testMoRulesEight method
898
 *
899
 * @return void
900
 */
901
	public function testMoRulesEight() {
902
		Configure::write('Config.language', 'rule_8_mo');
903
		$this->assertRulesEight();
904
	}
905
 
906
/**
907
 * Run assertions for the eighth plural rule.
908
 *
909
 * @return void
910
 */
911
	public function assertRulesEight() {
912
		$singular = $this->_singular();
913
		$this->assertEquals('Plural Rule 8 (translated)', $singular);
914
 
915
		$plurals = $this->_plural();
916
		$this->assertTrue(in_array('0 everything else (translated)', $plurals));
917
		$this->assertTrue(in_array('1 is 1 (translated)', $plurals));
918
		$this->assertTrue(in_array('2 is 2-4 (translated)', $plurals));
919
		$this->assertTrue(in_array('3 is 2-4 (translated)', $plurals));
920
		$this->assertTrue(in_array('4 is 2-4 (translated)', $plurals));
921
		$this->assertTrue(in_array('5 everything else (translated)', $plurals));
922
		$this->assertTrue(in_array('6 everything else (translated)', $plurals));
923
		$this->assertTrue(in_array('7 everything else (translated)', $plurals));
924
		$this->assertTrue(in_array('8 everything else (translated)', $plurals));
925
		$this->assertTrue(in_array('9 everything else (translated)', $plurals));
926
		$this->assertTrue(in_array('10 everything else (translated)', $plurals));
927
		$this->assertTrue(in_array('11 everything else (translated)', $plurals));
928
		$this->assertTrue(in_array('12 everything else (translated)', $plurals));
929
		$this->assertTrue(in_array('13 everything else (translated)', $plurals));
930
		$this->assertTrue(in_array('14 everything else (translated)', $plurals));
931
		$this->assertTrue(in_array('15 everything else (translated)', $plurals));
932
		$this->assertTrue(in_array('16 everything else (translated)', $plurals));
933
		$this->assertTrue(in_array('17 everything else (translated)', $plurals));
934
		$this->assertTrue(in_array('18 everything else (translated)', $plurals));
935
		$this->assertTrue(in_array('19 everything else (translated)', $plurals));
936
		$this->assertTrue(in_array('20 everything else (translated)', $plurals));
937
		$this->assertTrue(in_array('21 everything else (translated)', $plurals));
938
		$this->assertTrue(in_array('22 everything else (translated)', $plurals));
939
		$this->assertTrue(in_array('23 everything else (translated)', $plurals));
940
		$this->assertTrue(in_array('24 everything else (translated)', $plurals));
941
		$this->assertTrue(in_array('25 everything else (translated)', $plurals));
942
 
943
		$coreSingular = $this->_singularFromCore();
944
		$this->assertEquals('Plural Rule 8 (from core translated)', $coreSingular);
945
 
946
		$corePlurals = $this->_pluralFromCore();
947
		$this->assertTrue(in_array('0 everything else (from core translated)', $corePlurals));
948
		$this->assertTrue(in_array('1 is 1 (from core translated)', $corePlurals));
949
		$this->assertTrue(in_array('2 is 2-4 (from core translated)', $corePlurals));
950
		$this->assertTrue(in_array('3 is 2-4 (from core translated)', $corePlurals));
951
		$this->assertTrue(in_array('4 is 2-4 (from core translated)', $corePlurals));
952
		$this->assertTrue(in_array('5 everything else (from core translated)', $corePlurals));
953
		$this->assertTrue(in_array('6 everything else (from core translated)', $corePlurals));
954
		$this->assertTrue(in_array('7 everything else (from core translated)', $corePlurals));
955
		$this->assertTrue(in_array('8 everything else (from core translated)', $corePlurals));
956
		$this->assertTrue(in_array('9 everything else (from core translated)', $corePlurals));
957
		$this->assertTrue(in_array('10 everything else (from core translated)', $corePlurals));
958
		$this->assertTrue(in_array('11 everything else (from core translated)', $corePlurals));
959
		$this->assertTrue(in_array('12 everything else (from core translated)', $corePlurals));
960
		$this->assertTrue(in_array('13 everything else (from core translated)', $corePlurals));
961
		$this->assertTrue(in_array('14 everything else (from core translated)', $corePlurals));
962
		$this->assertTrue(in_array('15 everything else (from core translated)', $corePlurals));
963
		$this->assertTrue(in_array('16 everything else (from core translated)', $corePlurals));
964
		$this->assertTrue(in_array('17 everything else (from core translated)', $corePlurals));
965
		$this->assertTrue(in_array('18 everything else (from core translated)', $corePlurals));
966
		$this->assertTrue(in_array('19 everything else (from core translated)', $corePlurals));
967
		$this->assertTrue(in_array('20 everything else (from core translated)', $corePlurals));
968
		$this->assertTrue(in_array('21 everything else (from core translated)', $corePlurals));
969
		$this->assertTrue(in_array('22 everything else (from core translated)', $corePlurals));
970
		$this->assertTrue(in_array('23 everything else (from core translated)', $corePlurals));
971
		$this->assertTrue(in_array('24 everything else (from core translated)', $corePlurals));
972
		$this->assertTrue(in_array('25 everything else (from core translated)', $corePlurals));
973
	}
974
 
975
/**
976
 * testPoRulesNine method
977
 *
978
 * @return void
979
 */
980
	public function testPoRulesNine() {
981
		Configure::write('Config.language', 'rule_9_po');
982
		$this->assertRulesNine();
983
	}
984
 
985
/**
986
 * testMoRulesNine method
987
 *
988
 * @return void
989
 */
990
	public function testMoRulesNine() {
991
		Configure::write('Config.language', 'rule_9_mo');
992
		$this->assertRulesNine();
993
	}
994
 
995
/**
996
 * Assert plural rules nine
997
 *
998
 * @return void
999
 */
1000
	public function assertRulesNine() {
1001
		$singular = $this->_singular();
1002
		$this->assertEquals('Plural Rule 9 (translated)', $singular);
1003
 
1004
		$plurals = $this->_plural();
1005
		$this->assertTrue(in_array('0 everything else (translated)', $plurals));
1006
		$this->assertTrue(in_array('0 everything else (translated)', $plurals));
1007
		$this->assertTrue(in_array('1 is 1 (translated)', $plurals));
1008
		$this->assertTrue(in_array('2 ends in 2-4, not 12-14 (translated)', $plurals));
1009
		$this->assertTrue(in_array('3 ends in 2-4, not 12-14 (translated)', $plurals));
1010
		$this->assertTrue(in_array('4 ends in 2-4, not 12-14 (translated)', $plurals));
1011
		$this->assertTrue(in_array('5 everything else (translated)', $plurals));
1012
		$this->assertTrue(in_array('6 everything else (translated)', $plurals));
1013
		$this->assertTrue(in_array('7 everything else (translated)', $plurals));
1014
		$this->assertTrue(in_array('8 everything else (translated)', $plurals));
1015
		$this->assertTrue(in_array('9 everything else (translated)', $plurals));
1016
		$this->assertTrue(in_array('10 everything else (translated)', $plurals));
1017
		$this->assertTrue(in_array('11 everything else (translated)', $plurals));
1018
		$this->assertTrue(in_array('12 everything else (translated)', $plurals));
1019
		$this->assertTrue(in_array('13 everything else (translated)', $plurals));
1020
		$this->assertTrue(in_array('14 everything else (translated)', $plurals));
1021
		$this->assertTrue(in_array('15 everything else (translated)', $plurals));
1022
		$this->assertTrue(in_array('16 everything else (translated)', $plurals));
1023
		$this->assertTrue(in_array('17 everything else (translated)', $plurals));
1024
		$this->assertTrue(in_array('18 everything else (translated)', $plurals));
1025
		$this->assertTrue(in_array('19 everything else (translated)', $plurals));
1026
		$this->assertTrue(in_array('20 everything else (translated)', $plurals));
1027
		$this->assertTrue(in_array('21 everything else (translated)', $plurals));
1028
		$this->assertTrue(in_array('22 ends in 2-4, not 12-14 (translated)', $plurals));
1029
		$this->assertTrue(in_array('23 ends in 2-4, not 12-14 (translated)', $plurals));
1030
		$this->assertTrue(in_array('24 ends in 2-4, not 12-14 (translated)', $plurals));
1031
		$this->assertTrue(in_array('25 everything else (translated)', $plurals));
1032
 
1033
		$coreSingular = $this->_singularFromCore();
1034
		$this->assertEquals('Plural Rule 9 (from core translated)', $coreSingular);
1035
 
1036
		$corePlurals = $this->_pluralFromCore();
1037
		$this->assertTrue(in_array('0 everything else (from core translated)', $corePlurals));
1038
		$this->assertTrue(in_array('0 everything else (from core translated)', $corePlurals));
1039
		$this->assertTrue(in_array('0 everything else (from core translated)', $corePlurals));
1040
		$this->assertTrue(in_array('1 is 1 (from core translated)', $corePlurals));
1041
		$this->assertTrue(in_array('2 ends in 2-4, not 12-14 (from core translated)', $corePlurals));
1042
		$this->assertTrue(in_array('3 ends in 2-4, not 12-14 (from core translated)', $corePlurals));
1043
		$this->assertTrue(in_array('4 ends in 2-4, not 12-14 (from core translated)', $corePlurals));
1044
		$this->assertTrue(in_array('5 everything else (from core translated)', $corePlurals));
1045
		$this->assertTrue(in_array('6 everything else (from core translated)', $corePlurals));
1046
		$this->assertTrue(in_array('7 everything else (from core translated)', $corePlurals));
1047
		$this->assertTrue(in_array('8 everything else (from core translated)', $corePlurals));
1048
		$this->assertTrue(in_array('9 everything else (from core translated)', $corePlurals));
1049
		$this->assertTrue(in_array('10 everything else (from core translated)', $corePlurals));
1050
		$this->assertTrue(in_array('11 everything else (from core translated)', $corePlurals));
1051
		$this->assertTrue(in_array('12 everything else (from core translated)', $corePlurals));
1052
		$this->assertTrue(in_array('13 everything else (from core translated)', $corePlurals));
1053
		$this->assertTrue(in_array('14 everything else (from core translated)', $corePlurals));
1054
		$this->assertTrue(in_array('15 everything else (from core translated)', $corePlurals));
1055
		$this->assertTrue(in_array('16 everything else (from core translated)', $corePlurals));
1056
		$this->assertTrue(in_array('17 everything else (from core translated)', $corePlurals));
1057
		$this->assertTrue(in_array('18 everything else (from core translated)', $corePlurals));
1058
		$this->assertTrue(in_array('19 everything else (from core translated)', $corePlurals));
1059
		$this->assertTrue(in_array('20 everything else (from core translated)', $corePlurals));
1060
		$this->assertTrue(in_array('21 everything else (from core translated)', $corePlurals));
1061
		$this->assertTrue(in_array('22 ends in 2-4, not 12-14 (from core translated)', $corePlurals));
1062
		$this->assertTrue(in_array('23 ends in 2-4, not 12-14 (from core translated)', $corePlurals));
1063
		$this->assertTrue(in_array('24 ends in 2-4, not 12-14 (from core translated)', $corePlurals));
1064
		$this->assertTrue(in_array('25 everything else (from core translated)', $corePlurals));
1065
	}
1066
 
1067
/**
1068
 * testPoRulesTen method
1069
 *
1070
 * @return void
1071
 */
1072
	public function testPoRulesTen() {
1073
		Configure::write('Config.language', 'rule_10_po');
1074
		$this->assertRulesTen();
1075
	}
1076
 
1077
/**
1078
 * testMoRulesTen method
1079
 *
1080
 * @return void
1081
 */
1082
	public function testMoRulesTen() {
1083
		Configure::write('Config.language', 'rule_10_mo');
1084
		$this->assertRulesTen();
1085
	}
1086
 
1087
/**
1088
 * Assertions for plural rules 10
1089
 *
1090
 * @return void
1091
 */
1092
	public function assertRulesTen() {
1093
		$singular = $this->_singular();
1094
		$this->assertEquals('Plural Rule 10 (translated)', $singular);
1095
 
1096
		$plurals = $this->_plural();
1097
		$this->assertTrue(in_array('0 everything else (translated)', $plurals));
1098
		$this->assertTrue(in_array('0 everything else (translated)', $plurals));
1099
		$this->assertTrue(in_array('1 ends in 1 (translated)', $plurals));
1100
		$this->assertTrue(in_array('2 ends in 2 (translated)', $plurals));
1101
		$this->assertTrue(in_array('3 ends in 03-04 (translated)', $plurals));
1102
		$this->assertTrue(in_array('4 ends in 03-04 (translated)', $plurals));
1103
		$this->assertTrue(in_array('5 everything else (translated)', $plurals));
1104
		$this->assertTrue(in_array('6 everything else (translated)', $plurals));
1105
		$this->assertTrue(in_array('7 everything else (translated)', $plurals));
1106
		$this->assertTrue(in_array('8 everything else (translated)', $plurals));
1107
		$this->assertTrue(in_array('9 everything else (translated)', $plurals));
1108
		$this->assertTrue(in_array('10 everything else (translated)', $plurals));
1109
		$this->assertTrue(in_array('11 everything else (translated)', $plurals));
1110
		$this->assertTrue(in_array('12 everything else (translated)', $plurals));
1111
		$this->assertTrue(in_array('13 everything else (translated)', $plurals));
1112
		$this->assertTrue(in_array('14 everything else (translated)', $plurals));
1113
		$this->assertTrue(in_array('15 everything else (translated)', $plurals));
1114
		$this->assertTrue(in_array('16 everything else (translated)', $plurals));
1115
		$this->assertTrue(in_array('17 everything else (translated)', $plurals));
1116
		$this->assertTrue(in_array('18 everything else (translated)', $plurals));
1117
		$this->assertTrue(in_array('19 everything else (translated)', $plurals));
1118
		$this->assertTrue(in_array('20 everything else (translated)', $plurals));
1119
		$this->assertTrue(in_array('21 everything else (translated)', $plurals));
1120
		$this->assertTrue(in_array('22 everything else (translated)', $plurals));
1121
		$this->assertTrue(in_array('23 everything else (translated)', $plurals));
1122
		$this->assertTrue(in_array('24 everything else (translated)', $plurals));
1123
		$this->assertTrue(in_array('25 everything else (translated)', $plurals));
1124
 
1125
		$coreSingular = $this->_singularFromCore();
1126
		$this->assertEquals('Plural Rule 10 (from core translated)', $coreSingular);
1127
 
1128
		$corePlurals = $this->_pluralFromCore();
1129
		$this->assertTrue(in_array('0 everything else (from core translated)', $corePlurals));
1130
		$this->assertTrue(in_array('0 everything else (from core translated)', $corePlurals));
1131
		$this->assertTrue(in_array('1 ends in 1 (from core translated)', $corePlurals));
1132
		$this->assertTrue(in_array('2 ends in 2 (from core translated)', $corePlurals));
1133
		$this->assertTrue(in_array('3 ends in 03-04 (from core translated)', $corePlurals));
1134
		$this->assertTrue(in_array('4 ends in 03-04 (from core translated)', $corePlurals));
1135
		$this->assertTrue(in_array('5 everything else (from core translated)', $corePlurals));
1136
		$this->assertTrue(in_array('6 everything else (from core translated)', $corePlurals));
1137
		$this->assertTrue(in_array('7 everything else (from core translated)', $corePlurals));
1138
		$this->assertTrue(in_array('8 everything else (from core translated)', $corePlurals));
1139
		$this->assertTrue(in_array('9 everything else (from core translated)', $corePlurals));
1140
		$this->assertTrue(in_array('10 everything else (from core translated)', $corePlurals));
1141
		$this->assertTrue(in_array('11 everything else (from core translated)', $corePlurals));
1142
		$this->assertTrue(in_array('12 everything else (from core translated)', $corePlurals));
1143
		$this->assertTrue(in_array('13 everything else (from core translated)', $corePlurals));
1144
		$this->assertTrue(in_array('14 everything else (from core translated)', $corePlurals));
1145
		$this->assertTrue(in_array('15 everything else (from core translated)', $corePlurals));
1146
		$this->assertTrue(in_array('16 everything else (from core translated)', $corePlurals));
1147
		$this->assertTrue(in_array('17 everything else (from core translated)', $corePlurals));
1148
		$this->assertTrue(in_array('18 everything else (from core translated)', $corePlurals));
1149
		$this->assertTrue(in_array('19 everything else (from core translated)', $corePlurals));
1150
		$this->assertTrue(in_array('20 everything else (from core translated)', $corePlurals));
1151
		$this->assertTrue(in_array('21 everything else (from core translated)', $corePlurals));
1152
		$this->assertTrue(in_array('22 everything else (from core translated)', $corePlurals));
1153
		$this->assertTrue(in_array('23 everything else (from core translated)', $corePlurals));
1154
		$this->assertTrue(in_array('24 everything else (from core translated)', $corePlurals));
1155
		$this->assertTrue(in_array('25 everything else (from core translated)', $corePlurals));
1156
	}
1157
 
1158
/**
1159
 * testPoRulesEleven method
1160
 *
1161
 * @return void
1162
 */
1163
	public function testPoRulesEleven() {
1164
		Configure::write('Config.language', 'rule_11_po');
1165
		$this->assertRulesEleven();
1166
	}
1167
 
1168
/**
1169
 * testMoRulesEleven method
1170
 *
1171
 * @return void
1172
 */
1173
	public function testMoRulesEleven() {
1174
		Configure::write('Config.language', 'rule_11_mo');
1175
		$this->assertRulesEleven();
1176
	}
1177
 
1178
/**
1179
 * Assertions for plural rules eleven
1180
 *
1181
 * @return void
1182
 */
1183
	public function assertRulesEleven() {
1184
		$singular = $this->_singular();
1185
		$this->assertEquals('Plural Rule 11 (translated)', $singular);
1186
 
1187
		$plurals = $this->_plural();
1188
		$this->assertTrue(in_array('0 everything else (translated)', $plurals));
1189
		$this->assertTrue(in_array('1 is 1 (translated)', $plurals));
1190
		$this->assertTrue(in_array('2 is 2 (translated)', $plurals));
1191
		$this->assertTrue(in_array('3 is 3-6 (translated)', $plurals));
1192
		$this->assertTrue(in_array('4 is 3-6 (translated)', $plurals));
1193
		$this->assertTrue(in_array('5 is 3-6 (translated)', $plurals));
1194
		$this->assertTrue(in_array('6 is 3-6 (translated)', $plurals));
1195
		$this->assertTrue(in_array('7 is 7-10 (translated)', $plurals));
1196
		$this->assertTrue(in_array('8 is 7-10 (translated)', $plurals));
1197
		$this->assertTrue(in_array('9 is 7-10 (translated)', $plurals));
1198
		$this->assertTrue(in_array('10 is 7-10 (translated)', $plurals));
1199
		$this->assertTrue(in_array('11 everything else (translated)', $plurals));
1200
		$this->assertTrue(in_array('12 everything else (translated)', $plurals));
1201
		$this->assertTrue(in_array('13 everything else (translated)', $plurals));
1202
		$this->assertTrue(in_array('14 everything else (translated)', $plurals));
1203
		$this->assertTrue(in_array('15 everything else (translated)', $plurals));
1204
		$this->assertTrue(in_array('16 everything else (translated)', $plurals));
1205
		$this->assertTrue(in_array('17 everything else (translated)', $plurals));
1206
		$this->assertTrue(in_array('18 everything else (translated)', $plurals));
1207
		$this->assertTrue(in_array('19 everything else (translated)', $plurals));
1208
		$this->assertTrue(in_array('20 everything else (translated)', $plurals));
1209
		$this->assertTrue(in_array('21 everything else (translated)', $plurals));
1210
		$this->assertTrue(in_array('22 everything else (translated)', $plurals));
1211
		$this->assertTrue(in_array('23 everything else (translated)', $plurals));
1212
		$this->assertTrue(in_array('24 everything else (translated)', $plurals));
1213
		$this->assertTrue(in_array('25 everything else (translated)', $plurals));
1214
 
1215
		$coreSingular = $this->_singularFromCore();
1216
		$this->assertEquals('Plural Rule 11 (from core translated)', $coreSingular);
1217
 
1218
		$corePlurals = $this->_pluralFromCore();
1219
		$this->assertTrue(in_array('0 everything else (from core translated)', $corePlurals));
1220
		$this->assertTrue(in_array('1 is 1 (from core translated)', $corePlurals));
1221
		$this->assertTrue(in_array('2 is 2 (from core translated)', $corePlurals));
1222
		$this->assertTrue(in_array('3 is 3-6 (from core translated)', $corePlurals));
1223
		$this->assertTrue(in_array('4 is 3-6 (from core translated)', $corePlurals));
1224
		$this->assertTrue(in_array('5 is 3-6 (from core translated)', $corePlurals));
1225
		$this->assertTrue(in_array('6 is 3-6 (from core translated)', $corePlurals));
1226
		$this->assertTrue(in_array('7 is 7-10 (from core translated)', $corePlurals));
1227
		$this->assertTrue(in_array('8 is 7-10 (from core translated)', $corePlurals));
1228
		$this->assertTrue(in_array('9 is 7-10 (from core translated)', $corePlurals));
1229
		$this->assertTrue(in_array('10 is 7-10 (from core translated)', $corePlurals));
1230
		$this->assertTrue(in_array('11 everything else (from core translated)', $corePlurals));
1231
		$this->assertTrue(in_array('12 everything else (from core translated)', $corePlurals));
1232
		$this->assertTrue(in_array('13 everything else (from core translated)', $corePlurals));
1233
		$this->assertTrue(in_array('14 everything else (from core translated)', $corePlurals));
1234
		$this->assertTrue(in_array('15 everything else (from core translated)', $corePlurals));
1235
		$this->assertTrue(in_array('16 everything else (from core translated)', $corePlurals));
1236
		$this->assertTrue(in_array('17 everything else (from core translated)', $corePlurals));
1237
		$this->assertTrue(in_array('18 everything else (from core translated)', $corePlurals));
1238
		$this->assertTrue(in_array('19 everything else (from core translated)', $corePlurals));
1239
		$this->assertTrue(in_array('20 everything else (from core translated)', $corePlurals));
1240
		$this->assertTrue(in_array('21 everything else (from core translated)', $corePlurals));
1241
		$this->assertTrue(in_array('22 everything else (from core translated)', $corePlurals));
1242
		$this->assertTrue(in_array('23 everything else (from core translated)', $corePlurals));
1243
		$this->assertTrue(in_array('24 everything else (from core translated)', $corePlurals));
1244
		$this->assertTrue(in_array('25 everything else (from core translated)', $corePlurals));
1245
	}
1246
 
1247
/**
1248
 * testPoRulesTwelve method
1249
 *
1250
 * @return void
1251
 */
1252
	public function testPoRulesTwelve() {
1253
		Configure::write('Config.language', 'rule_12_po');
1254
		$this->assertRulesTwelve();
1255
	}
1256
 
1257
/**
1258
 * testMoRulesTwelve method
1259
 *
1260
 * @return void
1261
 */
1262
	public function testMoRulesTwelve() {
1263
		Configure::write('Config.language', 'rule_12_mo');
1264
		$this->assertRulesTwelve();
1265
	}
1266
 
1267
/**
1268
 * Assertions for plural rules twelve
1269
 *
1270
 * @return void
1271
 */
1272
	public function assertRulesTwelve() {
1273
		$singular = $this->_singular();
1274
		$this->assertEquals('Plural Rule 12 (translated)', $singular);
1275
 
1276
		$plurals = $this->_plural();
1277
		$this->assertTrue(in_array('0 is 0 or 3-10 (translated)', $plurals));
1278
		$this->assertTrue(in_array('1 is 1 (translated)', $plurals));
1279
		$this->assertTrue(in_array('2 is 2 (translated)', $plurals));
1280
		$this->assertTrue(in_array('3 is 0 or 3-10 (translated)', $plurals));
1281
		$this->assertTrue(in_array('4 is 0 or 3-10 (translated)', $plurals));
1282
		$this->assertTrue(in_array('5 is 0 or 3-10 (translated)', $plurals));
1283
		$this->assertTrue(in_array('6 is 0 or 3-10 (translated)', $plurals));
1284
		$this->assertTrue(in_array('7 is 0 or 3-10 (translated)', $plurals));
1285
		$this->assertTrue(in_array('8 is 0 or 3-10 (translated)', $plurals));
1286
		$this->assertTrue(in_array('9 is 0 or 3-10 (translated)', $plurals));
1287
		$this->assertTrue(in_array('10 is 0 or 3-10 (translated)', $plurals));
1288
		$this->assertTrue(in_array('11 everything else (translated)', $plurals));
1289
		$this->assertTrue(in_array('12 everything else (translated)', $plurals));
1290
		$this->assertTrue(in_array('13 everything else (translated)', $plurals));
1291
		$this->assertTrue(in_array('14 everything else (translated)', $plurals));
1292
		$this->assertTrue(in_array('15 everything else (translated)', $plurals));
1293
		$this->assertTrue(in_array('16 everything else (translated)', $plurals));
1294
		$this->assertTrue(in_array('17 everything else (translated)', $plurals));
1295
		$this->assertTrue(in_array('18 everything else (translated)', $plurals));
1296
		$this->assertTrue(in_array('19 everything else (translated)', $plurals));
1297
		$this->assertTrue(in_array('20 everything else (translated)', $plurals));
1298
		$this->assertTrue(in_array('21 everything else (translated)', $plurals));
1299
		$this->assertTrue(in_array('22 everything else (translated)', $plurals));
1300
		$this->assertTrue(in_array('23 everything else (translated)', $plurals));
1301
		$this->assertTrue(in_array('24 everything else (translated)', $plurals));
1302
		$this->assertTrue(in_array('25 everything else (translated)', $plurals));
1303
 
1304
		$coreSingular = $this->_singularFromCore();
1305
		$this->assertEquals('Plural Rule 12 (from core translated)', $coreSingular);
1306
 
1307
		$corePlurals = $this->_pluralFromCore();
1308
		$this->assertTrue(in_array('0 is 0 or 3-10 (from core translated)', $corePlurals));
1309
		$this->assertTrue(in_array('1 is 1 (from core translated)', $corePlurals));
1310
		$this->assertTrue(in_array('2 is 2 (from core translated)', $corePlurals));
1311
		$this->assertTrue(in_array('3 is 0 or 3-10 (from core translated)', $corePlurals));
1312
		$this->assertTrue(in_array('4 is 0 or 3-10 (from core translated)', $corePlurals));
1313
		$this->assertTrue(in_array('5 is 0 or 3-10 (from core translated)', $corePlurals));
1314
		$this->assertTrue(in_array('6 is 0 or 3-10 (from core translated)', $corePlurals));
1315
		$this->assertTrue(in_array('7 is 0 or 3-10 (from core translated)', $corePlurals));
1316
		$this->assertTrue(in_array('8 is 0 or 3-10 (from core translated)', $corePlurals));
1317
		$this->assertTrue(in_array('9 is 0 or 3-10 (from core translated)', $corePlurals));
1318
		$this->assertTrue(in_array('10 is 0 or 3-10 (from core translated)', $corePlurals));
1319
		$this->assertTrue(in_array('11 everything else (from core translated)', $corePlurals));
1320
		$this->assertTrue(in_array('12 everything else (from core translated)', $corePlurals));
1321
		$this->assertTrue(in_array('13 everything else (from core translated)', $corePlurals));
1322
		$this->assertTrue(in_array('14 everything else (from core translated)', $corePlurals));
1323
		$this->assertTrue(in_array('15 everything else (from core translated)', $corePlurals));
1324
		$this->assertTrue(in_array('16 everything else (from core translated)', $corePlurals));
1325
		$this->assertTrue(in_array('17 everything else (from core translated)', $corePlurals));
1326
		$this->assertTrue(in_array('18 everything else (from core translated)', $corePlurals));
1327
		$this->assertTrue(in_array('19 everything else (from core translated)', $corePlurals));
1328
		$this->assertTrue(in_array('20 everything else (from core translated)', $corePlurals));
1329
		$this->assertTrue(in_array('21 everything else (from core translated)', $corePlurals));
1330
		$this->assertTrue(in_array('22 everything else (from core translated)', $corePlurals));
1331
		$this->assertTrue(in_array('23 everything else (from core translated)', $corePlurals));
1332
		$this->assertTrue(in_array('24 everything else (from core translated)', $corePlurals));
1333
		$this->assertTrue(in_array('25 everything else (from core translated)', $corePlurals));
1334
	}
1335
 
1336
/**
1337
 * testMoRulesThirteen method
1338
 *
1339
 * @return void
1340
 */
1341
	public function testmoRulesThirteen() {
1342
		Configure::write('Config.language', 'rule_13_mo');
1343
		$this->assertRulesThirteen();
1344
	}
1345
 
1346
/**
1347
 * testPoRulesThirteen method
1348
 *
1349
 * @return void
1350
 */
1351
	public function testPoRulesThirteen() {
1352
		Configure::write('Config.language', 'rule_13_po');
1353
		$this->assertRulesThirteen();
1354
	}
1355
 
1356
/**
1357
 * Assertions for plural rules thirteen
1358
 *
1359
 * @return void
1360
 */
1361
	public function assertRulesThirteen() {
1362
		$singular = $this->_singular();
1363
		$this->assertEquals('Plural Rule 13 (translated)', $singular);
1364
 
1365
		$plurals = $this->_plural();
1366
		$this->assertTrue(in_array('0 is 0 or ends in 01-10 (translated)', $plurals));
1367
		$this->assertTrue(in_array('1 is 1 (translated)', $plurals));
1368
		$this->assertTrue(in_array('2 is 0 or ends in 01-10 (translated)', $plurals));
1369
		$this->assertTrue(in_array('3 is 0 or ends in 01-10 (translated)', $plurals));
1370
		$this->assertTrue(in_array('4 is 0 or ends in 01-10 (translated)', $plurals));
1371
		$this->assertTrue(in_array('5 is 0 or ends in 01-10 (translated)', $plurals));
1372
		$this->assertTrue(in_array('6 is 0 or ends in 01-10 (translated)', $plurals));
1373
		$this->assertTrue(in_array('7 is 0 or ends in 01-10 (translated)', $plurals));
1374
		$this->assertTrue(in_array('8 is 0 or ends in 01-10 (translated)', $plurals));
1375
		$this->assertTrue(in_array('9 is 0 or ends in 01-10 (translated)', $plurals));
1376
		$this->assertTrue(in_array('10 is 0 or ends in 01-10 (translated)', $plurals));
1377
		$this->assertTrue(in_array('11 ends in 11-20 (translated)', $plurals));
1378
		$this->assertTrue(in_array('12 ends in 11-20 (translated)', $plurals));
1379
		$this->assertTrue(in_array('13 ends in 11-20 (translated)', $plurals));
1380
		$this->assertTrue(in_array('14 ends in 11-20 (translated)', $plurals));
1381
		$this->assertTrue(in_array('15 ends in 11-20 (translated)', $plurals));
1382
		$this->assertTrue(in_array('16 ends in 11-20 (translated)', $plurals));
1383
		$this->assertTrue(in_array('17 ends in 11-20 (translated)', $plurals));
1384
		$this->assertTrue(in_array('18 ends in 11-20 (translated)', $plurals));
1385
		$this->assertTrue(in_array('19 ends in 11-20 (translated)', $plurals));
1386
		$this->assertTrue(in_array('20 ends in 11-20 (translated)', $plurals));
1387
		$this->assertTrue(in_array('21 everything else (translated)', $plurals));
1388
		$this->assertTrue(in_array('22 everything else (translated)', $plurals));
1389
		$this->assertTrue(in_array('23 everything else (translated)', $plurals));
1390
		$this->assertTrue(in_array('24 everything else (translated)', $plurals));
1391
		$this->assertTrue(in_array('25 everything else (translated)', $plurals));
1392
 
1393
		$coreSingular = $this->_singularFromCore();
1394
		$this->assertEquals('Plural Rule 13 (from core translated)', $coreSingular);
1395
 
1396
		$corePlurals = $this->_pluralFromCore();
1397
		$this->assertTrue(in_array('0 is 0 or ends in 01-10 (from core translated)', $corePlurals));
1398
		$this->assertTrue(in_array('1 is 1 (from core translated)', $corePlurals));
1399
		$this->assertTrue(in_array('2 is 0 or ends in 01-10 (from core translated)', $corePlurals));
1400
		$this->assertTrue(in_array('3 is 0 or ends in 01-10 (from core translated)', $corePlurals));
1401
		$this->assertTrue(in_array('4 is 0 or ends in 01-10 (from core translated)', $corePlurals));
1402
		$this->assertTrue(in_array('5 is 0 or ends in 01-10 (from core translated)', $corePlurals));
1403
		$this->assertTrue(in_array('6 is 0 or ends in 01-10 (from core translated)', $corePlurals));
1404
		$this->assertTrue(in_array('7 is 0 or ends in 01-10 (from core translated)', $corePlurals));
1405
		$this->assertTrue(in_array('8 is 0 or ends in 01-10 (from core translated)', $corePlurals));
1406
		$this->assertTrue(in_array('9 is 0 or ends in 01-10 (from core translated)', $corePlurals));
1407
		$this->assertTrue(in_array('10 is 0 or ends in 01-10 (from core translated)', $corePlurals));
1408
		$this->assertTrue(in_array('11 ends in 11-20 (from core translated)', $corePlurals));
1409
		$this->assertTrue(in_array('12 ends in 11-20 (from core translated)', $corePlurals));
1410
		$this->assertTrue(in_array('13 ends in 11-20 (from core translated)', $corePlurals));
1411
		$this->assertTrue(in_array('14 ends in 11-20 (from core translated)', $corePlurals));
1412
		$this->assertTrue(in_array('15 ends in 11-20 (from core translated)', $corePlurals));
1413
		$this->assertTrue(in_array('16 ends in 11-20 (from core translated)', $corePlurals));
1414
		$this->assertTrue(in_array('17 ends in 11-20 (from core translated)', $corePlurals));
1415
		$this->assertTrue(in_array('18 ends in 11-20 (from core translated)', $corePlurals));
1416
		$this->assertTrue(in_array('19 ends in 11-20 (from core translated)', $corePlurals));
1417
		$this->assertTrue(in_array('20 ends in 11-20 (from core translated)', $corePlurals));
1418
		$this->assertTrue(in_array('21 everything else (from core translated)', $corePlurals));
1419
		$this->assertTrue(in_array('22 everything else (from core translated)', $corePlurals));
1420
		$this->assertTrue(in_array('23 everything else (from core translated)', $corePlurals));
1421
		$this->assertTrue(in_array('24 everything else (from core translated)', $corePlurals));
1422
		$this->assertTrue(in_array('25 everything else (from core translated)', $corePlurals));
1423
	}
1424
 
1425
/**
1426
 * testMoRulesFourteen method
1427
 *
1428
 * @return void
1429
 */
1430
	public function testMoRulesFourteen() {
1431
		Configure::write('Config.language', 'rule_14_mo');
1432
		$this->assertRulesFourteen();
1433
	}
1434
 
1435
/**
1436
 * testPoRulesFourteen method
1437
 *
1438
 * @return void
1439
 */
1440
	public function testPoRulesFourteen() {
1441
		Configure::write('Config.language', 'rule_14_po');
1442
		$this->assertRulesFourteen();
1443
	}
1444
 
1445
/**
1446
 * Assertions for plural rules fourteen
1447
 *
1448
 * @return void
1449
 */
1450
	public function assertRulesFourteen() {
1451
		$singular = $this->_singular();
1452
		$this->assertEquals('Plural Rule 14 (translated)', $singular);
1453
 
1454
		$plurals = $this->_plural();
1455
		$this->assertTrue(in_array('0 everything else (translated)', $plurals));
1456
		$this->assertTrue(in_array('1 ends in 1 (translated)', $plurals));
1457
		$this->assertTrue(in_array('2 ends in 2 (translated)', $plurals));
1458
		$this->assertTrue(in_array('3 everything else (translated)', $plurals));
1459
		$this->assertTrue(in_array('4 everything else (translated)', $plurals));
1460
		$this->assertTrue(in_array('5 everything else (translated)', $plurals));
1461
		$this->assertTrue(in_array('6 everything else (translated)', $plurals));
1462
		$this->assertTrue(in_array('7 everything else (translated)', $plurals));
1463
		$this->assertTrue(in_array('8 everything else (translated)', $plurals));
1464
		$this->assertTrue(in_array('9 everything else (translated)', $plurals));
1465
		$this->assertTrue(in_array('10 everything else (translated)', $plurals));
1466
		$this->assertTrue(in_array('11 ends in 1 (translated)', $plurals));
1467
		$this->assertTrue(in_array('12 ends in 2 (translated)', $plurals));
1468
		$this->assertTrue(in_array('13 everything else (translated)', $plurals));
1469
		$this->assertTrue(in_array('14 everything else (translated)', $plurals));
1470
		$this->assertTrue(in_array('15 everything else (translated)', $plurals));
1471
		$this->assertTrue(in_array('16 everything else (translated)', $plurals));
1472
		$this->assertTrue(in_array('17 everything else (translated)', $plurals));
1473
		$this->assertTrue(in_array('18 everything else (translated)', $plurals));
1474
		$this->assertTrue(in_array('19 everything else (translated)', $plurals));
1475
		$this->assertTrue(in_array('20 everything else (translated)', $plurals));
1476
		$this->assertTrue(in_array('21 ends in 1 (translated)', $plurals));
1477
		$this->assertTrue(in_array('22 ends in 2 (translated)', $plurals));
1478
		$this->assertTrue(in_array('23 everything else (translated)', $plurals));
1479
		$this->assertTrue(in_array('24 everything else (translated)', $plurals));
1480
		$this->assertTrue(in_array('25 everything else (translated)', $plurals));
1481
 
1482
		$coreSingular = $this->_singularFromCore();
1483
		$this->assertEquals('Plural Rule 14 (from core translated)', $coreSingular);
1484
 
1485
		$corePlurals = $this->_pluralFromCore();
1486
		$this->assertTrue(in_array('0 everything else (from core translated)', $corePlurals));
1487
		$this->assertTrue(in_array('1 ends in 1 (from core translated)', $corePlurals));
1488
		$this->assertTrue(in_array('2 ends in 2 (from core translated)', $corePlurals));
1489
		$this->assertTrue(in_array('3 everything else (from core translated)', $corePlurals));
1490
		$this->assertTrue(in_array('4 everything else (from core translated)', $corePlurals));
1491
		$this->assertTrue(in_array('5 everything else (from core translated)', $corePlurals));
1492
		$this->assertTrue(in_array('6 everything else (from core translated)', $corePlurals));
1493
		$this->assertTrue(in_array('7 everything else (from core translated)', $corePlurals));
1494
		$this->assertTrue(in_array('8 everything else (from core translated)', $corePlurals));
1495
		$this->assertTrue(in_array('9 everything else (from core translated)', $corePlurals));
1496
		$this->assertTrue(in_array('10 everything else (from core translated)', $corePlurals));
1497
		$this->assertTrue(in_array('11 ends in 1 (from core translated)', $corePlurals));
1498
		$this->assertTrue(in_array('12 ends in 2 (from core translated)', $corePlurals));
1499
		$this->assertTrue(in_array('13 everything else (from core translated)', $corePlurals));
1500
		$this->assertTrue(in_array('14 everything else (from core translated)', $corePlurals));
1501
		$this->assertTrue(in_array('15 everything else (from core translated)', $corePlurals));
1502
		$this->assertTrue(in_array('16 everything else (from core translated)', $corePlurals));
1503
		$this->assertTrue(in_array('17 everything else (from core translated)', $corePlurals));
1504
		$this->assertTrue(in_array('18 everything else (from core translated)', $corePlurals));
1505
		$this->assertTrue(in_array('19 everything else (from core translated)', $corePlurals));
1506
		$this->assertTrue(in_array('20 everything else (from core translated)', $corePlurals));
1507
		$this->assertTrue(in_array('21 ends in 1 (from core translated)', $corePlurals));
1508
		$this->assertTrue(in_array('22 ends in 2 (from core translated)', $corePlurals));
1509
		$this->assertTrue(in_array('23 everything else (from core translated)', $corePlurals));
1510
		$this->assertTrue(in_array('24 everything else (from core translated)', $corePlurals));
1511
		$this->assertTrue(in_array('25 everything else (from core translated)', $corePlurals));
1512
	}
1513
 
1514
/**
1515
 * testSetLanguageWithSession method
1516
 *
1517
 * @return void
1518
 */
1519
	public function testSetLanguageWithSession() {
1520
		$_SESSION['Config']['language'] = 'po';
1521
		$singular = $this->_singular();
1522
		$this->assertEquals('Po (translated)', $singular);
1523
 
1524
		$plurals = $this->_plural();
1525
		$this->assertTrue(in_array('0 everything else (po translated)', $plurals));
1526
		$this->assertTrue(in_array('1 is 1 (po translated)', $plurals));
1527
		$this->assertTrue(in_array('2 is 2-4 (po translated)', $plurals));
1528
		$this->assertTrue(in_array('3 is 2-4 (po translated)', $plurals));
1529
		$this->assertTrue(in_array('4 is 2-4 (po translated)', $plurals));
1530
		$this->assertTrue(in_array('5 everything else (po translated)', $plurals));
1531
		$this->assertTrue(in_array('6 everything else (po translated)', $plurals));
1532
		$this->assertTrue(in_array('7 everything else (po translated)', $plurals));
1533
		$this->assertTrue(in_array('8 everything else (po translated)', $plurals));
1534
		$this->assertTrue(in_array('9 everything else (po translated)', $plurals));
1535
		$this->assertTrue(in_array('10 everything else (po translated)', $plurals));
1536
		$this->assertTrue(in_array('11 everything else (po translated)', $plurals));
1537
		$this->assertTrue(in_array('12 everything else (po translated)', $plurals));
1538
		$this->assertTrue(in_array('13 everything else (po translated)', $plurals));
1539
		$this->assertTrue(in_array('14 everything else (po translated)', $plurals));
1540
		$this->assertTrue(in_array('15 everything else (po translated)', $plurals));
1541
		$this->assertTrue(in_array('16 everything else (po translated)', $plurals));
1542
		$this->assertTrue(in_array('17 everything else (po translated)', $plurals));
1543
		$this->assertTrue(in_array('18 everything else (po translated)', $plurals));
1544
		$this->assertTrue(in_array('19 everything else (po translated)', $plurals));
1545
		$this->assertTrue(in_array('20 everything else (po translated)', $plurals));
1546
		$this->assertTrue(in_array('21 everything else (po translated)', $plurals));
1547
		$this->assertTrue(in_array('22 everything else (po translated)', $plurals));
1548
		$this->assertTrue(in_array('23 everything else (po translated)', $plurals));
1549
		$this->assertTrue(in_array('24 everything else (po translated)', $plurals));
1550
		$this->assertTrue(in_array('25 everything else (po translated)', $plurals));
1551
		unset($_SESSION['Config']['language']);
1552
	}
1553
 
1554
/**
1555
 * testNoCoreTranslation method
1556
 *
1557
 * @return void
1558
 */
1559
	public function testNoCoreTranslation() {
1560
		Configure::write('Config.language', 'po');
1561
		$singular = $this->_singular();
1562
		$this->assertEquals('Po (translated)', $singular);
1563
 
1564
		$coreSingular = $this->_singularFromCore();
1565
		$this->assertNotEquals('Po (from core translated)', $coreSingular);
1566
 
1567
		$corePlurals = $this->_pluralFromCore();
1568
		$this->assertFalse(in_array('0 everything else (from core translated)', $corePlurals));
1569
		$this->assertFalse(in_array('1 is 1 (from core translated)', $corePlurals));
1570
		$this->assertFalse(in_array('2 is 2-4 (from core translated)', $corePlurals));
1571
		$this->assertFalse(in_array('3 is 2-4 (from core translated)', $corePlurals));
1572
		$this->assertFalse(in_array('4 is 2-4 (from core translated)', $corePlurals));
1573
		$this->assertFalse(in_array('5 everything else (from core translated)', $corePlurals));
1574
		$this->assertFalse(in_array('6 everything else (from core translated)', $corePlurals));
1575
		$this->assertFalse(in_array('7 everything else (from core translated)', $corePlurals));
1576
		$this->assertFalse(in_array('8 everything else (from core translated)', $corePlurals));
1577
		$this->assertFalse(in_array('9 everything else (from core translated)', $corePlurals));
1578
		$this->assertFalse(in_array('10 everything else (from core translated)', $corePlurals));
1579
		$this->assertFalse(in_array('11 everything else (from core translated)', $corePlurals));
1580
		$this->assertFalse(in_array('12 everything else (from core translated)', $corePlurals));
1581
		$this->assertFalse(in_array('13 everything else (from core translated)', $corePlurals));
1582
		$this->assertFalse(in_array('14 everything else (from core translated)', $corePlurals));
1583
		$this->assertFalse(in_array('15 everything else (from core translated)', $corePlurals));
1584
		$this->assertFalse(in_array('16 everything else (from core translated)', $corePlurals));
1585
		$this->assertFalse(in_array('17 everything else (from core translated)', $corePlurals));
1586
		$this->assertFalse(in_array('18 everything else (from core translated)', $corePlurals));
1587
		$this->assertFalse(in_array('19 everything else (from core translated)', $corePlurals));
1588
		$this->assertFalse(in_array('20 everything else (from core translated)', $corePlurals));
1589
		$this->assertFalse(in_array('21 everything else (from core translated)', $corePlurals));
1590
		$this->assertFalse(in_array('22 everything else (from core translated)', $corePlurals));
1591
		$this->assertFalse(in_array('23 everything else (from core translated)', $corePlurals));
1592
		$this->assertFalse(in_array('24 everything else (from core translated)', $corePlurals));
1593
		$this->assertFalse(in_array('25 everything else (from core translated)', $corePlurals));
1594
	}
1595
 
1596
/**
1597
 * testPluginTranslation method
1598
 *
1599
 * @return void
1600
 */
1601
	public function testPluginTranslation() {
1602
		App::build(array(
1603
			'Plugin' => array(CAKE . 'Test' . DS . 'test_app' . DS . 'Plugin' . DS)
1604
		));
1605
 
1606
		Configure::write('Config.language', 'po');
1607
		$singular = $this->_domainSingular();
1608
		$this->assertEquals('Plural Rule 1 (from plugin)', $singular);
1609
 
1610
		$plurals = $this->_domainPlural();
1611
		$this->assertTrue(in_array('0 = 0 or > 1 (from plugin)', $plurals));
1612
		$this->assertTrue(in_array('1 = 1 (from plugin)', $plurals));
1613
		$this->assertTrue(in_array('2 = 0 or > 1 (from plugin)', $plurals));
1614
		$this->assertTrue(in_array('3 = 0 or > 1 (from plugin)', $plurals));
1615
		$this->assertTrue(in_array('4 = 0 or > 1 (from plugin)', $plurals));
1616
		$this->assertTrue(in_array('5 = 0 or > 1 (from plugin)', $plurals));
1617
		$this->assertTrue(in_array('6 = 0 or > 1 (from plugin)', $plurals));
1618
		$this->assertTrue(in_array('7 = 0 or > 1 (from plugin)', $plurals));
1619
		$this->assertTrue(in_array('8 = 0 or > 1 (from plugin)', $plurals));
1620
		$this->assertTrue(in_array('9 = 0 or > 1 (from plugin)', $plurals));
1621
		$this->assertTrue(in_array('10 = 0 or > 1 (from plugin)', $plurals));
1622
		$this->assertTrue(in_array('11 = 0 or > 1 (from plugin)', $plurals));
1623
		$this->assertTrue(in_array('12 = 0 or > 1 (from plugin)', $plurals));
1624
		$this->assertTrue(in_array('13 = 0 or > 1 (from plugin)', $plurals));
1625
		$this->assertTrue(in_array('14 = 0 or > 1 (from plugin)', $plurals));
1626
		$this->assertTrue(in_array('15 = 0 or > 1 (from plugin)', $plurals));
1627
		$this->assertTrue(in_array('16 = 0 or > 1 (from plugin)', $plurals));
1628
		$this->assertTrue(in_array('17 = 0 or > 1 (from plugin)', $plurals));
1629
		$this->assertTrue(in_array('18 = 0 or > 1 (from plugin)', $plurals));
1630
		$this->assertTrue(in_array('19 = 0 or > 1 (from plugin)', $plurals));
1631
		$this->assertTrue(in_array('20 = 0 or > 1 (from plugin)', $plurals));
1632
		$this->assertTrue(in_array('21 = 0 or > 1 (from plugin)', $plurals));
1633
		$this->assertTrue(in_array('22 = 0 or > 1 (from plugin)', $plurals));
1634
		$this->assertTrue(in_array('23 = 0 or > 1 (from plugin)', $plurals));
1635
		$this->assertTrue(in_array('24 = 0 or > 1 (from plugin)', $plurals));
1636
		$this->assertTrue(in_array('25 = 0 or > 1 (from plugin)', $plurals));
1637
	}
1638
 
1639
/**
1640
 * testPoMultipleLineTranslation method
1641
 *
1642
 * @return void
1643
 */
1644
	public function testPoMultipleLineTranslation() {
1645
		Configure::write('Config.language', 'po');
1646
 
1647
		$string = "This is a multiline translation\n";
1648
		$string .= "broken up over multiple lines.\n";
1649
		$string .= "This is the third line.\n";
1650
		$string .= "This is the forth line.";
1651
		$result = __($string);
1652
 
1653
		$expected = "This is a multiline translation\n";
1654
		$expected .= "broken up over multiple lines.\n";
1655
		$expected .= "This is the third line.\n";
1656
		$expected .= "This is the forth line. (translated)";
1657
		$this->assertEquals($expected, $result);
1658
 
1659
		// Windows Newline is \r\n
1660
		$string = "This is a multiline translation\r\n";
1661
		$string .= "broken up over multiple lines.\r\n";
1662
		$string .= "This is the third line.\r\n";
1663
		$string .= "This is the forth line.";
1664
		$result = __($string);
1665
		$this->assertEquals($expected, $result);
1666
 
1667
		$singular = "valid\nsecond line";
1668
		$plural = "valids\nsecond line";
1669
 
1670
		$result = __n($singular, $plural, 1);
1671
		$expected = "v\nsecond line";
1672
		$this->assertEquals($expected, $result);
1673
 
1674
		$result = __n($singular, $plural, 2);
1675
		$expected = "vs\nsecond line";
1676
		$this->assertEquals($expected, $result);
1677
 
1678
		$string = "This is a multiline translation\n";
1679
		$string .= "broken up over multiple lines.\n";
1680
		$string .= "This is the third line.\n";
1681
		$string .= "This is the forth line.";
1682
 
1683
		$singular = "%d = 1\n" . $string;
1684
		$plural = "%d = 0 or > 1\n" . $string;
1685
 
1686
		$result = __n($singular, $plural, 1);
1687
		$expected = "%d is 1\n" . $string;
1688
		$this->assertEquals($expected, $result);
1689
 
1690
		$result = __n($singular, $plural, 2);
1691
		$expected = "%d is 2-4\n" . $string;
1692
		$this->assertEquals($expected, $result);
1693
 
1694
		// Windows Newline is \r\n
1695
		$string = "This is a multiline translation\r\n";
1696
		$string .= "broken up over multiple lines.\r\n";
1697
		$string .= "This is the third line.\r\n";
1698
		$string .= "This is the forth line.";
1699
 
1700
		$singular = "%d = 1\r\n" . $string;
1701
		$plural = "%d = 0 or > 1\r\n" . $string;
1702
 
1703
		$result = __n($singular, $plural, 1);
1704
		$expected = "%d is 1\n" . str_replace("\r\n", "\n", $string);
1705
		$this->assertEquals($expected, $result);
1706
 
1707
		$result = __n($singular, $plural, 2);
1708
		$expected = "%d is 2-4\n" . str_replace("\r\n", "\n", $string);
1709
		$this->assertEquals($expected, $result);
1710
	}
1711
 
1712
/**
1713
 * testPoNoTranslationNeeded method
1714
 *
1715
 * @return void
1716
 */
1717
	public function testPoNoTranslationNeeded() {
1718
		Configure::write('Config.language', 'po');
1719
		$result = __('No Translation needed');
1720
		$this->assertEquals('No Translation needed', $result);
1721
	}
1722
 
1723
/**
1724
 * testPoQuotedString method
1725
 *
1726
 * @return void
1727
 */
1728
	public function testPoQuotedString() {
1729
		Configure::write('Config.language', 'po');
1730
		$expected = 'this is a "quoted string" (translated)';
1731
		$this->assertEquals($expected, __('this is a "quoted string"'));
1732
	}
1733
 
1734
/**
1735
 * testFloatValue method
1736
 *
1737
 * @return void
1738
 */
1739
	public function testFloatValue() {
1740
		Configure::write('Config.language', 'rule_9_po');
1741
 
1742
		$result = __n('%d = 1', '%d = 0 or > 1', (float)1);
1743
		$expected = '%d is 1 (translated)';
1744
		$this->assertEquals($expected, $result);
1745
 
1746
		$result = __n('%d = 1', '%d = 0 or > 1', (float)2);
1747
		$expected = "%d ends in 2-4, not 12-14 (translated)";
1748
		$this->assertEquals($expected, $result);
1749
 
1750
		$result = __n('%d = 1', '%d = 0 or > 1', (float)5);
1751
		$expected = "%d everything else (translated)";
1752
		$this->assertEquals($expected, $result);
1753
	}
1754
 
1755
/**
1756
 * testCategory method
1757
 *
1758
 * @return void
1759
 */
1760
	public function testCategory() {
1761
		Configure::write('Config.language', 'po');
1762
		$category = $this->_category();
1763
		$this->assertEquals('Monetary Po (translated)', $category);
1764
	}
1765
 
1766
/**
1767
 * testPluginCategory method
1768
 *
1769
 * @return void
1770
 */
1771
	public function testPluginCategory() {
1772
		Configure::write('Config.language', 'po');
1773
 
1774
		$singular = $this->_domainCategorySingular();
1775
		$this->assertEquals('Monetary Plural Rule 1 (from plugin)', $singular);
1776
 
1777
		$plurals = $this->_domainCategoryPlural();
1778
		$this->assertTrue(in_array('Monetary 0 = 0 or > 1 (from plugin)', $plurals));
1779
		$this->assertTrue(in_array('Monetary 1 = 1 (from plugin)', $plurals));
1780
	}
1781
 
1782
/**
1783
 * testCategoryThenSingular method
1784
 *
1785
 * @return void
1786
 */
1787
	public function testCategoryThenSingular() {
1788
		Configure::write('Config.language', 'po');
1789
		$category = $this->_category();
1790
		$this->assertEquals('Monetary Po (translated)', $category);
1791
 
1792
		$singular = $this->_singular();
1793
		$this->assertEquals('Po (translated)', $singular);
1794
	}
1795
 
1796
/**
1797
 * testTimeDefinition method
1798
 *
1799
 * @return void
1800
 */
1801
	public function testTimeDefinition() {
1802
		Configure::write('Config.language', 'po');
1803
		$result = __c('d_fmt', 5);
1804
		$expected = '%m/%d/%Y';
1805
		$this->assertEquals($expected, $result);
1806
 
1807
		$result = __c('am_pm', 5);
1808
		$expected = array('AM', 'PM');
1809
		$this->assertEquals($expected, $result);
1810
 
1811
		$result = __c('abmon', 5);
1812
		$expected = array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
1813
		$this->assertEquals($expected, $result);
1814
	}
1815
 
1816
/**
1817
 * testTimeDefinitionJapanese method
1818
 *
1819
 * @return void
1820
 */
1821
	public function testTimeDefinitionJapanese() {
1822
		Configure::write('Config.language', 'ja_jp');
1823
		$result = __c('d_fmt', 5);
1824
 
1825
		$expected = "%Y年%m月%d日";
1826
 
1827
		$this->assertEquals($expected, $result);
1828
 
1829
		$result = __c('am_pm', 5);
1830
		$expected = array("午前", "午後");
1831
		$this->assertEquals($expected, $result);
1832
 
1833
		$result = __c('abmon', 5);
1834
		$expected = array(" 1月", " 2月", " 3月", " 4月", " 5月", " 6月", " 7月", " 8月", " 9月", "10月", "11月", "12月");
1835
		$this->assertEquals($expected, $result);
1836
	}
1837
 
1838
/**
1839
 * testTranslateLanguageParam method
1840
 *
1841
 * @return void
1842
 */
1843
	public function testTranslateLanguageParam() {
1844
		Configure::write('Config.language', 'rule_0_po');
1845
 
1846
		$result = I18n::translate('Plural Rule 1', null, null, 6);
1847
		$expected = 'Plural Rule 0 (translated)';
1848
		$this->assertEquals($expected, $result);
1849
 
1850
		$result = I18n::translate('Plural Rule 1', null, null, 6, null, 'rule_1_po');
1851
		$expected = 'Plural Rule 1 (translated)';
1852
		$this->assertEquals($expected, $result);
1853
	}
1854
 
1855
/**
1856
 * Test that the '' domain causes exceptions.
1857
 *
1858
 * @expectedException CakeException
1859
 * @return void
1860
 */
1861
	public function testTranslateEmptyDomain() {
1862
		I18n::translate('Plural Rule 1', null, '');
1863
	}
1864
 
1865
/**
1866
 * testLoadLocaleDefinition method
1867
 *
1868
 * @return void
1869
 */
1870
	public function testLoadLocaleDefinition() {
1871
		$path = current(App::path('locales'));
1872
		$result = I18n::loadLocaleDefinition($path . 'nld' . DS . 'LC_TIME');
1873
		$expected = array('zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag');
1874
		$this->assertSame($expected, $result['day']);
1875
	}
1876
 
1877
/**
1878
 * Singular method
1879
 *
1880
 * @return void
1881
 */
1882
	protected function _domainCategorySingular($domain = 'test_plugin', $category = 3) {
1883
		$singular = __dc($domain, 'Plural Rule 1', $category);
1884
		return $singular;
1885
	}
1886
 
1887
/**
1888
 * Plural method
1889
 *
1890
 * @return void
1891
 */
1892
	protected function _domainCategoryPlural($domain = 'test_plugin', $category = 3) {
1893
		$plurals = array();
1894
		for ($number = 0; $number <= 25; $number++) {
1895
			$plurals[] = sprintf(__dcn($domain, '%d = 1', '%d = 0 or > 1', (float)$number, $category), (float)$number);
1896
		}
1897
		return $plurals;
1898
	}
1899
 
1900
/**
1901
 * Singular method
1902
 *
1903
 * @return void
1904
 */
1905
	protected function _domainSingular($domain = 'test_plugin') {
1906
		$singular = __d($domain, 'Plural Rule 1');
1907
		return $singular;
1908
	}
1909
 
1910
/**
1911
 * Plural method
1912
 *
1913
 * @return void
1914
 */
1915
	protected function _domainPlural($domain = 'test_plugin') {
1916
		$plurals = array();
1917
		for ($number = 0; $number <= 25; $number++) {
1918
			$plurals[] = sprintf(__dn($domain, '%d = 1', '%d = 0 or > 1', (float)$number), (float)$number);
1919
		}
1920
		return $plurals;
1921
	}
1922
 
1923
/**
1924
 * category method
1925
 *
1926
 * @return void
1927
 */
1928
	protected function _category($category = 3) {
1929
		$singular = __c('Plural Rule 1', $category);
1930
		return $singular;
1931
	}
1932
 
1933
/**
1934
 * Singular method
1935
 *
1936
 * @return void
1937
 */
1938
	protected function _singular() {
1939
		$singular = __('Plural Rule 1');
1940
		return $singular;
1941
	}
1942
 
1943
/**
1944
 * Plural method
1945
 *
1946
 * @return void
1947
 */
1948
	protected function _plural() {
1949
		$plurals = array();
1950
		for ($number = 0; $number <= 25; $number++) {
1951
			$plurals[] = sprintf(__n('%d = 1', '%d = 0 or > 1', (float)$number), (float)$number);
1952
		}
1953
		return $plurals;
1954
	}
1955
 
1956
/**
1957
 * singularFromCore method
1958
 *
1959
 * @return void
1960
 */
1961
	protected function _singularFromCore() {
1962
		$singular = __('Plural Rule 1 (from core)');
1963
		return $singular;
1964
	}
1965
 
1966
/**
1967
 * pluralFromCore method
1968
 *
1969
 * @return void
1970
 */
1971
	protected function _pluralFromCore() {
1972
		$plurals = array();
1973
		for ($number = 0; $number <= 25; $number++) {
1974
			$plurals[] = sprintf(__n('%d = 1 (from core)', '%d = 0 or > 1 (from core)', (float)$number), (float)$number);
1975
		}
1976
		return $plurals;
1977
	}
1978
}