diff options
Diffstat (limited to 'vendor/symfony/form/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/DateTimeToArrayTransformerTest.php')
-rw-r--r-- | vendor/symfony/form/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/DateTimeToArrayTransformerTest.php | 512 |
1 files changed, 512 insertions, 0 deletions
diff --git a/vendor/symfony/form/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/DateTimeToArrayTransformerTest.php b/vendor/symfony/form/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/DateTimeToArrayTransformerTest.php new file mode 100644 index 00000000..4898b88d --- /dev/null +++ b/vendor/symfony/form/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/DateTimeToArrayTransformerTest.php | |||
@@ -0,0 +1,512 @@ | |||
1 | <?php | ||
2 | |||
3 | /* | ||
4 | * This file is part of the Symfony package. | ||
5 | * | ||
6 | * (c) Fabien Potencier <fabien@symfony.com> | ||
7 | * | ||
8 | * For the full copyright and license information, please view the LICENSE | ||
9 | * file that was distributed with this source code. | ||
10 | */ | ||
11 | |||
12 | namespace Symfony\Component\Form\Tests\Extension\Core\DataTransformer; | ||
13 | |||
14 | use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToArrayTransformer; | ||
15 | |||
16 | class DateTimeToArrayTransformerTest extends DateTimeTestCase | ||
17 | { | ||
18 | public function testTransform() | ||
19 | { | ||
20 | $transformer = new DateTimeToArrayTransformer('UTC', 'UTC'); | ||
21 | |||
22 | $input = new \DateTime('2010-02-03 04:05:06 UTC'); | ||
23 | |||
24 | $output = array( | ||
25 | 'year' => '2010', | ||
26 | 'month' => '2', | ||
27 | 'day' => '3', | ||
28 | 'hour' => '4', | ||
29 | 'minute' => '5', | ||
30 | 'second' => '6', | ||
31 | ); | ||
32 | |||
33 | $this->assertSame($output, $transformer->transform($input)); | ||
34 | } | ||
35 | |||
36 | public function testTransformEmpty() | ||
37 | { | ||
38 | $transformer = new DateTimeToArrayTransformer(); | ||
39 | |||
40 | $output = array( | ||
41 | 'year' => '', | ||
42 | 'month' => '', | ||
43 | 'day' => '', | ||
44 | 'hour' => '', | ||
45 | 'minute' => '', | ||
46 | 'second' => '', | ||
47 | ); | ||
48 | |||
49 | $this->assertSame($output, $transformer->transform(null)); | ||
50 | } | ||
51 | |||
52 | public function testTransformEmptyWithFields() | ||
53 | { | ||
54 | $transformer = new DateTimeToArrayTransformer(null, null, array('year', 'minute', 'second')); | ||
55 | |||
56 | $output = array( | ||
57 | 'year' => '', | ||
58 | 'minute' => '', | ||
59 | 'second' => '', | ||
60 | ); | ||
61 | |||
62 | $this->assertSame($output, $transformer->transform(null)); | ||
63 | } | ||
64 | |||
65 | public function testTransformWithFields() | ||
66 | { | ||
67 | $transformer = new DateTimeToArrayTransformer('UTC', 'UTC', array('year', 'month', 'minute', 'second')); | ||
68 | |||
69 | $input = new \DateTime('2010-02-03 04:05:06 UTC'); | ||
70 | |||
71 | $output = array( | ||
72 | 'year' => '2010', | ||
73 | 'month' => '2', | ||
74 | 'minute' => '5', | ||
75 | 'second' => '6', | ||
76 | ); | ||
77 | |||
78 | $this->assertSame($output, $transformer->transform($input)); | ||
79 | } | ||
80 | |||
81 | public function testTransformWithPadding() | ||
82 | { | ||
83 | $transformer = new DateTimeToArrayTransformer('UTC', 'UTC', null, true); | ||
84 | |||
85 | $input = new \DateTime('2010-02-03 04:05:06 UTC'); | ||
86 | |||
87 | $output = array( | ||
88 | 'year' => '2010', | ||
89 | 'month' => '02', | ||
90 | 'day' => '03', | ||
91 | 'hour' => '04', | ||
92 | 'minute' => '05', | ||
93 | 'second' => '06', | ||
94 | ); | ||
95 | |||
96 | $this->assertSame($output, $transformer->transform($input)); | ||
97 | } | ||
98 | |||
99 | public function testTransformDifferentTimezones() | ||
100 | { | ||
101 | $transformer = new DateTimeToArrayTransformer('America/New_York', 'Asia/Hong_Kong'); | ||
102 | |||
103 | $input = new \DateTime('2010-02-03 04:05:06 America/New_York'); | ||
104 | |||
105 | $dateTime = new \DateTime('2010-02-03 04:05:06 America/New_York'); | ||
106 | $dateTime->setTimezone(new \DateTimeZone('Asia/Hong_Kong')); | ||
107 | $output = array( | ||
108 | 'year' => (string) (int) $dateTime->format('Y'), | ||
109 | 'month' => (string) (int) $dateTime->format('m'), | ||
110 | 'day' => (string) (int) $dateTime->format('d'), | ||
111 | 'hour' => (string) (int) $dateTime->format('H'), | ||
112 | 'minute' => (string) (int) $dateTime->format('i'), | ||
113 | 'second' => (string) (int) $dateTime->format('s'), | ||
114 | ); | ||
115 | |||
116 | $this->assertSame($output, $transformer->transform($input)); | ||
117 | } | ||
118 | |||
119 | /** | ||
120 | * @expectedException \Symfony\Component\Form\Exception\TransformationFailedException | ||
121 | */ | ||
122 | public function testTransformRequiresDateTime() | ||
123 | { | ||
124 | $transformer = new DateTimeToArrayTransformer(); | ||
125 | $transformer->reverseTransform('12345'); | ||
126 | } | ||
127 | |||
128 | public function testReverseTransform() | ||
129 | { | ||
130 | $transformer = new DateTimeToArrayTransformer('UTC', 'UTC'); | ||
131 | |||
132 | $input = array( | ||
133 | 'year' => '2010', | ||
134 | 'month' => '2', | ||
135 | 'day' => '3', | ||
136 | 'hour' => '4', | ||
137 | 'minute' => '5', | ||
138 | 'second' => '6', | ||
139 | ); | ||
140 | |||
141 | $output = new \DateTime('2010-02-03 04:05:06 UTC'); | ||
142 | |||
143 | $this->assertDateTimeEquals($output, $transformer->reverseTransform($input)); | ||
144 | } | ||
145 | |||
146 | public function testReverseTransformWithSomeZero() | ||
147 | { | ||
148 | $transformer = new DateTimeToArrayTransformer('UTC', 'UTC'); | ||
149 | |||
150 | $input = array( | ||
151 | 'year' => '2010', | ||
152 | 'month' => '2', | ||
153 | 'day' => '3', | ||
154 | 'hour' => '4', | ||
155 | 'minute' => '0', | ||
156 | 'second' => '0', | ||
157 | ); | ||
158 | |||
159 | $output = new \DateTime('2010-02-03 04:00:00 UTC'); | ||
160 | |||
161 | $this->assertDateTimeEquals($output, $transformer->reverseTransform($input)); | ||
162 | } | ||
163 | |||
164 | public function testReverseTransformCompletelyEmpty() | ||
165 | { | ||
166 | $transformer = new DateTimeToArrayTransformer(); | ||
167 | |||
168 | $input = array( | ||
169 | 'year' => '', | ||
170 | 'month' => '', | ||
171 | 'day' => '', | ||
172 | 'hour' => '', | ||
173 | 'minute' => '', | ||
174 | 'second' => '', | ||
175 | ); | ||
176 | |||
177 | $this->assertNull($transformer->reverseTransform($input)); | ||
178 | } | ||
179 | |||
180 | public function testReverseTransformCompletelyEmptySubsetOfFields() | ||
181 | { | ||
182 | $transformer = new DateTimeToArrayTransformer(null, null, array('year', 'month', 'day')); | ||
183 | |||
184 | $input = array( | ||
185 | 'year' => '', | ||
186 | 'month' => '', | ||
187 | 'day' => '', | ||
188 | ); | ||
189 | |||
190 | $this->assertNull($transformer->reverseTransform($input)); | ||
191 | } | ||
192 | |||
193 | /** | ||
194 | * @expectedException \Symfony\Component\Form\Exception\TransformationFailedException | ||
195 | */ | ||
196 | public function testReverseTransformPartiallyEmptyYear() | ||
197 | { | ||
198 | $transformer = new DateTimeToArrayTransformer(); | ||
199 | $transformer->reverseTransform(array( | ||
200 | 'month' => '2', | ||
201 | 'day' => '3', | ||
202 | 'hour' => '4', | ||
203 | 'minute' => '5', | ||
204 | 'second' => '6', | ||
205 | )); | ||
206 | } | ||
207 | |||
208 | /** | ||
209 | * @expectedException \Symfony\Component\Form\Exception\TransformationFailedException | ||
210 | */ | ||
211 | public function testReverseTransformPartiallyEmptyMonth() | ||
212 | { | ||
213 | $transformer = new DateTimeToArrayTransformer(); | ||
214 | $transformer->reverseTransform(array( | ||
215 | 'year' => '2010', | ||
216 | 'day' => '3', | ||
217 | 'hour' => '4', | ||
218 | 'minute' => '5', | ||
219 | 'second' => '6', | ||
220 | )); | ||
221 | } | ||
222 | |||
223 | /** | ||
224 | * @expectedException \Symfony\Component\Form\Exception\TransformationFailedException | ||
225 | */ | ||
226 | public function testReverseTransformPartiallyEmptyDay() | ||
227 | { | ||
228 | $transformer = new DateTimeToArrayTransformer(); | ||
229 | $transformer->reverseTransform(array( | ||
230 | 'year' => '2010', | ||
231 | 'month' => '2', | ||
232 | 'hour' => '4', | ||
233 | 'minute' => '5', | ||
234 | 'second' => '6', | ||
235 | )); | ||
236 | } | ||
237 | |||
238 | /** | ||
239 | * @expectedException \Symfony\Component\Form\Exception\TransformationFailedException | ||
240 | */ | ||
241 | public function testReverseTransformPartiallyEmptyHour() | ||
242 | { | ||
243 | $transformer = new DateTimeToArrayTransformer(); | ||
244 | $transformer->reverseTransform(array( | ||
245 | 'year' => '2010', | ||
246 | 'month' => '2', | ||
247 | 'day' => '3', | ||
248 | 'minute' => '5', | ||
249 | 'second' => '6', | ||
250 | )); | ||
251 | } | ||
252 | |||
253 | /** | ||
254 | * @expectedException \Symfony\Component\Form\Exception\TransformationFailedException | ||
255 | */ | ||
256 | public function testReverseTransformPartiallyEmptyMinute() | ||
257 | { | ||
258 | $transformer = new DateTimeToArrayTransformer(); | ||
259 | $transformer->reverseTransform(array( | ||
260 | 'year' => '2010', | ||
261 | 'month' => '2', | ||
262 | 'day' => '3', | ||
263 | 'hour' => '4', | ||
264 | 'second' => '6', | ||
265 | )); | ||
266 | } | ||
267 | |||
268 | /** | ||
269 | * @expectedException \Symfony\Component\Form\Exception\TransformationFailedException | ||
270 | */ | ||
271 | public function testReverseTransformPartiallyEmptySecond() | ||
272 | { | ||
273 | $transformer = new DateTimeToArrayTransformer(); | ||
274 | $transformer->reverseTransform(array( | ||
275 | 'year' => '2010', | ||
276 | 'month' => '2', | ||
277 | 'day' => '3', | ||
278 | 'hour' => '4', | ||
279 | 'minute' => '5', | ||
280 | )); | ||
281 | } | ||
282 | |||
283 | public function testReverseTransformNull() | ||
284 | { | ||
285 | $transformer = new DateTimeToArrayTransformer(); | ||
286 | |||
287 | $this->assertNull($transformer->reverseTransform(null)); | ||
288 | } | ||
289 | |||
290 | public function testReverseTransformDifferentTimezones() | ||
291 | { | ||
292 | $transformer = new DateTimeToArrayTransformer('America/New_York', 'Asia/Hong_Kong'); | ||
293 | |||
294 | $input = array( | ||
295 | 'year' => '2010', | ||
296 | 'month' => '2', | ||
297 | 'day' => '3', | ||
298 | 'hour' => '4', | ||
299 | 'minute' => '5', | ||
300 | 'second' => '6', | ||
301 | ); | ||
302 | |||
303 | $output = new \DateTime('2010-02-03 04:05:06 Asia/Hong_Kong'); | ||
304 | $output->setTimezone(new \DateTimeZone('America/New_York')); | ||
305 | |||
306 | $this->assertDateTimeEquals($output, $transformer->reverseTransform($input)); | ||
307 | } | ||
308 | |||
309 | public function testReverseTransformToDifferentTimezone() | ||
310 | { | ||
311 | $transformer = new DateTimeToArrayTransformer('Asia/Hong_Kong', 'UTC'); | ||
312 | |||
313 | $input = array( | ||
314 | 'year' => '2010', | ||
315 | 'month' => '2', | ||
316 | 'day' => '3', | ||
317 | 'hour' => '4', | ||
318 | 'minute' => '5', | ||
319 | 'second' => '6', | ||
320 | ); | ||
321 | |||
322 | $output = new \DateTime('2010-02-03 04:05:06 UTC'); | ||
323 | $output->setTimezone(new \DateTimeZone('Asia/Hong_Kong')); | ||
324 | |||
325 | $this->assertDateTimeEquals($output, $transformer->reverseTransform($input)); | ||
326 | } | ||
327 | |||
328 | /** | ||
329 | * @expectedException \Symfony\Component\Form\Exception\TransformationFailedException | ||
330 | */ | ||
331 | public function testReverseTransformRequiresArray() | ||
332 | { | ||
333 | $transformer = new DateTimeToArrayTransformer(); | ||
334 | $transformer->reverseTransform('12345'); | ||
335 | } | ||
336 | |||
337 | /** | ||
338 | * @expectedException \Symfony\Component\Form\Exception\TransformationFailedException | ||
339 | */ | ||
340 | public function testReverseTransformWithNegativeYear() | ||
341 | { | ||
342 | $transformer = new DateTimeToArrayTransformer(); | ||
343 | $transformer->reverseTransform(array( | ||
344 | 'year' => '-1', | ||
345 | 'month' => '2', | ||
346 | 'day' => '3', | ||
347 | 'hour' => '4', | ||
348 | 'minute' => '5', | ||
349 | 'second' => '6', | ||
350 | )); | ||
351 | } | ||
352 | |||
353 | /** | ||
354 | * @expectedException \Symfony\Component\Form\Exception\TransformationFailedException | ||
355 | */ | ||
356 | public function testReverseTransformWithNegativeMonth() | ||
357 | { | ||
358 | $transformer = new DateTimeToArrayTransformer(); | ||
359 | $transformer->reverseTransform(array( | ||
360 | 'year' => '2010', | ||
361 | 'month' => '-1', | ||
362 | 'day' => '3', | ||
363 | 'hour' => '4', | ||
364 | 'minute' => '5', | ||
365 | 'second' => '6', | ||
366 | )); | ||
367 | } | ||
368 | |||
369 | /** | ||
370 | * @expectedException \Symfony\Component\Form\Exception\TransformationFailedException | ||
371 | */ | ||
372 | public function testReverseTransformWithNegativeDay() | ||
373 | { | ||
374 | $transformer = new DateTimeToArrayTransformer(); | ||
375 | $transformer->reverseTransform(array( | ||
376 | 'year' => '2010', | ||
377 | 'month' => '2', | ||
378 | 'day' => '-1', | ||
379 | 'hour' => '4', | ||
380 | 'minute' => '5', | ||
381 | 'second' => '6', | ||
382 | )); | ||
383 | } | ||
384 | |||
385 | /** | ||
386 | * @expectedException \Symfony\Component\Form\Exception\TransformationFailedException | ||
387 | */ | ||
388 | public function testReverseTransformWithNegativeHour() | ||
389 | { | ||
390 | $transformer = new DateTimeToArrayTransformer(); | ||
391 | $transformer->reverseTransform(array( | ||
392 | 'year' => '2010', | ||
393 | 'month' => '2', | ||
394 | 'day' => '3', | ||
395 | 'hour' => '-1', | ||
396 | 'minute' => '5', | ||
397 | 'second' => '6', | ||
398 | )); | ||
399 | } | ||
400 | |||
401 | /** | ||
402 | * @expectedException \Symfony\Component\Form\Exception\TransformationFailedException | ||
403 | */ | ||
404 | public function testReverseTransformWithNegativeMinute() | ||
405 | { | ||
406 | $transformer = new DateTimeToArrayTransformer(); | ||
407 | $transformer->reverseTransform(array( | ||
408 | 'year' => '2010', | ||
409 | 'month' => '2', | ||
410 | 'day' => '3', | ||
411 | 'hour' => '4', | ||
412 | 'minute' => '-1', | ||
413 | 'second' => '6', | ||
414 | )); | ||
415 | } | ||
416 | |||
417 | /** | ||
418 | * @expectedException \Symfony\Component\Form\Exception\TransformationFailedException | ||
419 | */ | ||
420 | public function testReverseTransformWithNegativeSecond() | ||
421 | { | ||
422 | $transformer = new DateTimeToArrayTransformer(); | ||
423 | $transformer->reverseTransform(array( | ||
424 | 'year' => '2010', | ||
425 | 'month' => '2', | ||
426 | 'day' => '3', | ||
427 | 'hour' => '4', | ||
428 | 'minute' => '5', | ||
429 | 'second' => '-1', | ||
430 | )); | ||
431 | } | ||
432 | |||
433 | /** | ||
434 | * @expectedException \Symfony\Component\Form\Exception\TransformationFailedException | ||
435 | */ | ||
436 | public function testReverseTransformWithInvalidMonth() | ||
437 | { | ||
438 | $transformer = new DateTimeToArrayTransformer(); | ||
439 | $transformer->reverseTransform(array( | ||
440 | 'year' => '2010', | ||
441 | 'month' => '13', | ||
442 | 'day' => '3', | ||
443 | 'hour' => '4', | ||
444 | 'minute' => '5', | ||
445 | 'second' => '6', | ||
446 | )); | ||
447 | } | ||
448 | |||
449 | /** | ||
450 | * @expectedException \Symfony\Component\Form\Exception\TransformationFailedException | ||
451 | */ | ||
452 | public function testReverseTransformWithInvalidDay() | ||
453 | { | ||
454 | $transformer = new DateTimeToArrayTransformer(); | ||
455 | $transformer->reverseTransform(array( | ||
456 | 'year' => '2010', | ||
457 | 'month' => '2', | ||
458 | 'day' => '31', | ||
459 | 'hour' => '4', | ||
460 | 'minute' => '5', | ||
461 | 'second' => '6', | ||
462 | )); | ||
463 | } | ||
464 | |||
465 | /** | ||
466 | * @expectedException \Symfony\Component\Form\Exception\TransformationFailedException | ||
467 | */ | ||
468 | public function testReverseTransformWithStringDay() | ||
469 | { | ||
470 | $transformer = new DateTimeToArrayTransformer(); | ||
471 | $transformer->reverseTransform(array( | ||
472 | 'year' => '2010', | ||
473 | 'month' => '2', | ||
474 | 'day' => 'bazinga', | ||
475 | 'hour' => '4', | ||
476 | 'minute' => '5', | ||
477 | 'second' => '6', | ||
478 | )); | ||
479 | } | ||
480 | |||
481 | /** | ||
482 | * @expectedException \Symfony\Component\Form\Exception\TransformationFailedException | ||
483 | */ | ||
484 | public function testReverseTransformWithStringMonth() | ||
485 | { | ||
486 | $transformer = new DateTimeToArrayTransformer(); | ||
487 | $transformer->reverseTransform(array( | ||
488 | 'year' => '2010', | ||
489 | 'month' => 'bazinga', | ||
490 | 'day' => '31', | ||
491 | 'hour' => '4', | ||
492 | 'minute' => '5', | ||
493 | 'second' => '6', | ||
494 | )); | ||
495 | } | ||
496 | |||
497 | /** | ||
498 | * @expectedException \Symfony\Component\Form\Exception\TransformationFailedException | ||
499 | */ | ||
500 | public function testReverseTransformWithStringYear() | ||
501 | { | ||
502 | $transformer = new DateTimeToArrayTransformer(); | ||
503 | $transformer->reverseTransform(array( | ||
504 | 'year' => 'bazinga', | ||
505 | 'month' => '2', | ||
506 | 'day' => '31', | ||
507 | 'hour' => '4', | ||
508 | 'minute' => '5', | ||
509 | 'second' => '6', | ||
510 | )); | ||
511 | } | ||
512 | } | ||