16
16
17
17
class TranslatorTest extends \PHPUnit_Framework_TestCase
18
18
{
19
+
20
+ /**
21
+ * @dataProvider getInvalidLocalesTests
22
+ * @expectedException \InvalidArgumentException
23
+ */
24
+ public function testConstructorInvalidLocale ($ locale )
25
+ {
26
+ $ translator = new Translator ($ locale , new MessageSelector ());
27
+ }
28
+
29
+ /**
30
+ * @dataProvider getValidLocalesTests
31
+ */
32
+ public function testConstructorValidLocale ($ locale )
33
+ {
34
+ $ translator = new Translator ($ locale , new MessageSelector ());
35
+
36
+ $ this ->assertEquals ($ locale , $ translator ->getLocale ());
37
+ }
38
+
39
+ public function testConstructorWithoutLocale ()
40
+ {
41
+ $ translator = new Translator (null , new MessageSelector ());
42
+
43
+ $ this ->assertNull ($ translator ->getLocale ());
44
+ }
45
+
19
46
public function testSetGetLocale ()
20
47
{
21
48
$ translator = new Translator ('en ' );
@@ -26,6 +53,27 @@ public function testSetGetLocale()
26
53
$ this ->assertEquals ('fr ' , $ translator ->getLocale ());
27
54
}
28
55
56
+ /**
57
+ * @dataProvider getInvalidLocalesTests
58
+ * @expectedException \InvalidArgumentException
59
+ */
60
+ public function testSetInvalidLocale ($ locale )
61
+ {
62
+ $ translator = new Translator ('fr ' , new MessageSelector ());
63
+ $ translator ->setLocale ($ locale );
64
+ }
65
+
66
+ /**
67
+ * @dataProvider getValidLocalesTests
68
+ */
69
+ public function testSetValidLocale ($ locale )
70
+ {
71
+ $ translator = new Translator ($ locale , new MessageSelector ());
72
+ $ translator ->setLocale ($ locale );
73
+
74
+ $ this ->assertEquals ($ locale , $ translator ->getLocale ());
75
+ }
76
+
29
77
public function testSetFallbackLocales ()
30
78
{
31
79
$ translator = new Translator ('en ' );
@@ -54,6 +102,27 @@ public function testSetFallbackLocalesMultiple()
54
102
$ this ->assertEquals ('bar (fr) ' , $ translator ->trans ('bar ' ));
55
103
}
56
104
105
+
106
+ /**
107
+ * @dataProvider getInvalidLocalesTests
108
+ * @expectedException \InvalidArgumentException
109
+ */
110
+ public function testSetFallbackInvalidLocales ($ locale )
111
+ {
112
+ $ translator = new Translator ('fr ' , new MessageSelector ());
113
+ $ translator ->setFallbackLocales (array ('fr ' , $ locale ));
114
+ }
115
+
116
+ /**
117
+ * @dataProvider getValidLocalesTests
118
+ */
119
+ public function testSetFallbackValidLocales ($ locale )
120
+ {
121
+ $ translator = new Translator ($ locale , new MessageSelector ());
122
+ $ translator ->setFallbackLocales (array ('fr ' , $ locale ));
123
+ // no assertion. this method just asserts that no exception is thrown
124
+ }
125
+
57
126
public function testTransWithFallbackLocale ()
58
127
{
59
128
$ translator = new Translator ('fr_FR ' );
@@ -66,6 +135,26 @@ public function testTransWithFallbackLocale()
66
135
$ this ->assertEquals ('foobar ' , $ translator ->trans ('bar ' ));
67
136
}
68
137
138
+ /**
139
+ * @dataProvider getInvalidLocalesTests
140
+ * @expectedException \InvalidArgumentException
141
+ */
142
+ public function testAddResourceInvalidLocales ($ locale )
143
+ {
144
+ $ translator = new Translator ('fr ' , new MessageSelector ());
145
+ $ translator ->addResource ('array ' , array ('foo ' => 'foofoo ' ), $ locale );
146
+ }
147
+
148
+ /**
149
+ * @dataProvider getValidLocalesTests
150
+ */
151
+ public function testAddResourceValidLocales ($ locale )
152
+ {
153
+ $ translator = new Translator ('fr ' , new MessageSelector ());
154
+ $ translator ->addResource ('array ' , array ('foo ' => 'foofoo ' ), $ locale );
155
+ // no assertion. this method just asserts that no exception is thrown
156
+ }
157
+
69
158
public function testAddResourceAfterTrans ()
70
159
{
71
160
$ translator = new Translator ('fr ' );
@@ -163,6 +252,32 @@ public function testTrans($expected, $id, $translation, $parameters, $locale, $d
163
252
$ this ->assertEquals ($ expected , $ translator ->trans ($ id , $ parameters , $ domain , $ locale ));
164
253
}
165
254
255
+ /**
256
+ * @dataProvider getInvalidLocalesTests
257
+ * @expectedException \InvalidArgumentException
258
+ */
259
+ public function testTransInvalidLocale ($ locale )
260
+ {
261
+ $ translator = new Translator ('en ' , new MessageSelector ());
262
+ $ translator ->addLoader ('array ' , new ArrayLoader ());
263
+ $ translator ->addResource ('array ' , array ('foo ' => 'foofoo ' ), 'en ' );
264
+
265
+ $ translator ->trans ('foo ' , array (), '' , $ locale );
266
+ }
267
+
268
+ /**
269
+ * @dataProvider getValidLocalesTests
270
+ */
271
+ public function testTransValidLocale ($ locale )
272
+ {
273
+ $ translator = new Translator ('en ' , new MessageSelector ());
274
+ $ translator ->addLoader ('array ' , new ArrayLoader ());
275
+ $ translator ->addResource ('array ' , array ('foo ' => 'foofoo ' ), 'en ' );
276
+
277
+ $ translator ->trans ('foo ' , array (), '' , $ locale );
278
+ // no assertion. this method just asserts that no exception is thrown
279
+ }
280
+
166
281
/**
167
282
* @dataProvider getFlattenedTransTests
168
283
*/
@@ -187,6 +302,33 @@ public function testTransChoice($expected, $id, $translation, $number, $paramete
187
302
$ this ->assertEquals ($ expected , $ translator ->transChoice ($ id , $ number , $ parameters , $ domain , $ locale ));
188
303
}
189
304
305
+ /**
306
+ * @dataProvider getInvalidLocalesTests
307
+ * @expectedException \InvalidArgumentException
308
+ */
309
+ public function testTransChoiceInvalidLocale ($ locale )
310
+ {
311
+ $ translator = new Translator ('en ' , new MessageSelector ());
312
+ $ translator ->addLoader ('array ' , new ArrayLoader ());
313
+ $ translator ->addResource ('array ' , array ('foo ' => 'foofoo ' ), 'en ' );
314
+
315
+ $ translator ->transChoice ('foo ' , 1 , array (), '' , $ locale );
316
+ }
317
+
318
+ /**
319
+ * @dataProvider getValidLocalesTests
320
+ */
321
+ public function testTransChoiceValidLocale ($ locale )
322
+ {
323
+ $ translator = new Translator ('en ' , new MessageSelector ());
324
+ $ translator ->addLoader ('array ' , new ArrayLoader ());
325
+ $ translator ->addResource ('array ' , array ('foo ' => 'foofoo ' ), 'en ' );
326
+
327
+ $ translator ->transChoice ('foo ' , 1 , array (), '' , $ locale );
328
+ // no assertion. this method just asserts that no exception is thrown
329
+ }
330
+
331
+
190
332
public function getTransFileTests ()
191
333
{
192
334
return array (
@@ -257,6 +399,39 @@ public function getTransChoiceTests()
257
399
);
258
400
}
259
401
402
+ public function getInvalidLocalesTests ()
403
+ {
404
+ return array (
405
+ array ('fr FR ' ),
406
+ array ('français ' ),
407
+ array ('fr+en ' ),
408
+ array ('utf#8 ' ),
409
+ array ('fr&en ' ),
410
+ array ('fr~FR ' ),
411
+ array (' fr ' ),
412
+ array ('fr ' ),
413
+ array ('fr* ' ),
414
+ array ('fr/FR ' ),
415
+ array ('fr \\FR ' ),
416
+ );
417
+ }
418
+
419
+ public function getValidLocalesTests ()
420
+ {
421
+ return array (
422
+ array ('' ),
423
+ array (null ),
424
+ array ('fr ' ),
425
+ array ('francais ' ),
426
+ array ('FR ' ),
427
+ array ('frFR ' ),
428
+ array ('fr-FR ' ),
429
+ array ('fr_FR ' ),
430
+ array ('fr.FR ' ),
431
+ array ('fr-FR.UTF8 ' ),
432
+ );
433
+ }
434
+
260
435
public function testTransChoiceFallback ()
261
436
{
262
437
$ translator = new Translator ('ru ' );
0 commit comments