OLD | NEW |
---|---|
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 // Dart test program for Date. | 5 // Dart test program for Date. |
6 | 6 |
7 class DateTest { | 7 class DateTest { |
8 // Tests if the time moves eventually forward. | 8 // Tests if the time moves eventually forward. |
9 static void testNow() { | 9 static void testNow() { |
10 var t1 = new Date.now(); | 10 var t1 = new Date.now(); |
11 bool timeMovedForward = false; | 11 bool timeMovedForward = false; |
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
258 isUtc: true)); | 258 isUtc: true)); |
259 Expect.throws(() => new Date.fromMillisecondsSinceEpoch(-8640000000000001, | 259 Expect.throws(() => new Date.fromMillisecondsSinceEpoch(-8640000000000001, |
260 isUtc: true)); | 260 isUtc: true)); |
261 Expect.throws(() => new Date.fromMillisecondsSinceEpoch(8640000000000001)); | 261 Expect.throws(() => new Date.fromMillisecondsSinceEpoch(8640000000000001)); |
262 Expect.throws( | 262 Expect.throws( |
263 () => new Date.fromMillisecondsSinceEpoch(-8640000000000001)); | 263 () => new Date.fromMillisecondsSinceEpoch(-8640000000000001)); |
264 dt = new Date.fromMillisecondsSinceEpoch(8640000000000000); | 264 dt = new Date.fromMillisecondsSinceEpoch(8640000000000000); |
265 Expect.throws(() => new Date(dt.year, dt.month, dt.day, | 265 Expect.throws(() => new Date(dt.year, dt.month, dt.day, |
266 dt.hour, dt.minute, 0, 1)); | 266 dt.hour, dt.minute, 0, 1)); |
267 dt = new Date.fromMillisecondsSinceEpoch(-8640000000000000); | 267 dt = new Date.fromMillisecondsSinceEpoch(-8640000000000000); |
268 // TODO(floitsch): Update comment after refactoring. | |
269 // This test currently fails because the arguments must not be negative. | |
270 // However we are going to allow negative (and overflowing) arguments and | |
271 // this line will then throw for the correct reason. | |
272 Expect.throws(() => new Date(dt.year, dt.month, dt.day, | |
273 dt.hour, dt.minute, 0, -1)); | |
274 } | 268 } |
275 | 269 |
276 static void testUTCGetters() { | 270 static void testUTCGetters() { |
277 var dt = new Date.fromMillisecondsSinceEpoch(1305140315000, isUtc: true); | 271 var dt = new Date.fromMillisecondsSinceEpoch(1305140315000, isUtc: true); |
278 Expect.equals(2011, dt.year); | 272 Expect.equals(2011, dt.year); |
279 Expect.equals(5, dt.month); | 273 Expect.equals(5, dt.month); |
280 Expect.equals(11, dt.day); | 274 Expect.equals(11, dt.day); |
281 Expect.equals(18, dt.hour); | 275 Expect.equals(18, dt.hour); |
282 Expect.equals(58, dt.minute); | 276 Expect.equals(58, dt.minute); |
283 Expect.equals(35, dt.second); | 277 Expect.equals(35, dt.second); |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
420 Expect.equals(dt1.hour, dt2.hour); | 414 Expect.equals(dt1.hour, dt2.hour); |
421 Expect.equals(dt1.minute, dt2.minute); | 415 Expect.equals(dt1.minute, dt2.minute); |
422 Expect.equals(dt1.second + 3, dt2.second); | 416 Expect.equals(dt1.second + 3, dt2.second); |
423 Expect.equals(dt1.millisecond + 5, dt2.millisecond); | 417 Expect.equals(dt1.millisecond + 5, dt2.millisecond); |
424 var dt3 = dt2.subtract(new Duration(milliseconds: | 418 var dt3 = dt2.subtract(new Duration(milliseconds: |
425 3 * Duration.MILLISECONDS_PER_SECOND + 5)); | 419 3 * Duration.MILLISECONDS_PER_SECOND + 5)); |
426 Expect.equals(true, dt1 == dt3); | 420 Expect.equals(true, dt1 == dt3); |
427 Expect.equals(false, dt1 == dt2); | 421 Expect.equals(false, dt1 == dt2); |
428 } | 422 } |
429 | 423 |
424 static void testUnderflowAndOverflow() { | |
425 final dtBase = new Date(2012, 6, 20, 12, 30, 30, 500); | |
426 | |
427 // Millisecond | |
428 print(" >>> Millisecond+"); | |
429 var dt = new Date(dtBase.year, dtBase.month, dtBase.day, dtBase.hour, dtBase .minute, dtBase.second, 1000); | |
floitsch
2012/08/06 21:00:58
80 chars.
dominich
2012/08/06 21:20:58
Done.
| |
430 Expect.equals(dt.year, dtBase.year); | |
431 Expect.equals(dt.month, dtBase.month); | |
432 Expect.equals(dt.day, dtBase.day); | |
433 Expect.equals(dt.hour, dtBase.hour); | |
434 Expect.equals(dt.minute, dtBase.minute); | |
435 Expect.equals(dt.second, dtBase.second + 1); | |
436 Expect.equals(dt.millisecond, 0); | |
437 | |
438 print(" >>> Millisecond-"); | |
439 dt = new Date(dtBase.year, dtBase.month, dtBase.day, dtBase.hour, dtBase.min ute, dtBase.second, -1000); | |
440 Expect.equals(dt.year, dtBase.year); | |
441 Expect.equals(dt.month, dtBase.month); | |
442 Expect.equals(dt.day, dtBase.day); | |
443 Expect.equals(dt.hour, dtBase.hour); | |
444 Expect.equals(dt.minute, dtBase.minute); | |
445 Expect.equals(dt.second, dtBase.second - 1); | |
446 Expect.equals(dt.millisecond, 0); | |
447 | |
448 // Second | |
449 print(" >>> Second+"); | |
450 dt = new Date(dtBase.year, dtBase.month, dtBase.day, dtBase.hour, dtBase.min ute, 60, dtBase.millisecond); | |
451 Expect.equals(dt.year, dtBase.year); | |
452 Expect.equals(dt.month, dtBase.month); | |
453 Expect.equals(dt.day, dtBase.day); | |
454 Expect.equals(dt.hour, dtBase.hour); | |
455 Expect.equals(dt.minute, dtBase.minute + 1); | |
456 Expect.equals(dt.second, 0); | |
457 Expect.equals(dt.millisecond, dtBase.millisecond); | |
458 | |
459 print(" >>> Second-"); | |
460 dt = new Date(dtBase.year, dtBase.month, dtBase.day, dtBase.hour, dtBase.min ute, -60, dtBase.millisecond); | |
461 Expect.equals(dt.year, dtBase.year); | |
462 Expect.equals(dt.month, dtBase.month); | |
463 Expect.equals(dt.day, dtBase.day); | |
464 Expect.equals(dt.hour, dtBase.hour); | |
465 Expect.equals(dt.minute, dtBase.minute - 1); | |
466 Expect.equals(dt.second, 0); | |
467 Expect.equals(dt.millisecond, dtBase.millisecond); | |
468 | |
469 // Minute | |
470 print(" >>> Minute+"); | |
471 dt = new Date(dtBase.year, dtBase.month, dtBase.day, dtBase.hour, 60, dtBase .second, dtBase.millisecond); | |
472 Expect.equals(dt.year, dtBase.year); | |
473 Expect.equals(dt.month, dtBase.month); | |
474 Expect.equals(dt.day, dtBase.day); | |
475 Expect.equals(dt.hour, dtBase.hour + 1); | |
476 Expect.equals(dt.minute, 0); | |
477 Expect.equals(dt.second, dtBase.second); | |
478 Expect.equals(dt.millisecond, dtBase.millisecond); | |
479 | |
480 print(" >>> Minute-"); | |
481 dt = new Date(dtBase.year, dtBase.month, dtBase.day, dtBase.hour, -60, dtBas e.second, dtBase.millisecond); | |
482 Expect.equals(dt.year, dtBase.year); | |
483 Expect.equals(dt.month, dtBase.month); | |
484 Expect.equals(dt.day, dtBase.day); | |
485 Expect.equals(dt.hour, dtBase.hour - 1); | |
486 Expect.equals(dt.minute, 0); | |
487 Expect.equals(dt.second, dtBase.second); | |
488 Expect.equals(dt.millisecond, dtBase.millisecond); | |
489 | |
490 // Hour | |
491 print(" >>> Hour+"); | |
492 dt = new Date(dtBase.year, dtBase.month, dtBase.day, 24, dtBase.minute, dtBa se.second, dtBase.millisecond); | |
493 Expect.equals(dt.year, dtBase.year); | |
494 Expect.equals(dt.month, dtBase.month); | |
495 Expect.equals(dt.day, dtBase.day + 1); | |
496 Expect.equals(dt.hour, 0); | |
497 Expect.equals(dt.minute, dtBase.minute); | |
498 Expect.equals(dt.second, dtBase.second); | |
499 Expect.equals(dt.millisecond, dtBase.millisecond); | |
500 | |
501 print(" >>> Hour-"); | |
502 dt = new Date(dtBase.year, dtBase.month, dtBase.day, -24, dtBase.minute, dtB ase.second, dtBase.millisecond); | |
503 Expect.equals(dt.year, dtBase.year); | |
504 Expect.equals(dt.month, dtBase.month); | |
505 Expect.equals(dt.day, dtBase.day - 1); | |
506 Expect.equals(dt.hour, 0); | |
507 Expect.equals(dt.minute, dtBase.minute); | |
508 Expect.equals(dt.second, dtBase.second); | |
509 Expect.equals(dt.millisecond, dtBase.millisecond); | |
510 | |
511 // Day | |
512 print(" >>> Day+"); | |
513 dt = new Date(dtBase.year, dtBase.month, 31, dtBase.hour, dtBase.minute, dtB ase.second, dtBase.millisecond); | |
514 Expect.equals(dt.year, dtBase.year); | |
515 Expect.equals(dt.month, dtBase.month + 1); | |
516 Expect.equals(dt.day, 1); | |
517 Expect.equals(dt.hour, dtBase.hour); | |
518 Expect.equals(dt.minute, dtBase.minute); | |
519 Expect.equals(dt.second, dtBase.second); | |
520 Expect.equals(dt.millisecond, dtBase.millisecond); | |
521 | |
522 print(" >>> Day-"); | |
523 dt = new Date(dtBase.year, dtBase.month, -30, dtBase.hour, dtBase.minute, dt Base.second, dtBase.millisecond); | |
524 Expect.equals(dt.year, dtBase.year); | |
525 Expect.equals(dt.month, dtBase.month - 1); | |
526 Expect.equals(dt.day, 1); | |
527 Expect.equals(dt.hour, dtBase.hour); | |
528 Expect.equals(dt.minute, dtBase.minute); | |
529 Expect.equals(dt.second, dtBase.second); | |
530 Expect.equals(dt.millisecond, dtBase.millisecond); | |
531 | |
532 // Month | |
533 print(" >>> Month+"); | |
534 dt = new Date(dtBase.year, 13, dtBase.day, dtBase.hour, dtBase.minute, dtBas e.second, dtBase.millisecond); | |
535 Expect.equals(dt.year, dtBase.year + 1); | |
536 Expect.equals(dt.month, 1); | |
537 Expect.equals(dt.day, dtBase.day); | |
538 Expect.equals(dt.hour, dtBase.hour); | |
539 Expect.equals(dt.minute, dtBase.minute); | |
540 Expect.equals(dt.second, dtBase.second); | |
541 Expect.equals(dt.millisecond, dtBase.millisecond); | |
542 | |
543 print(" >>> Month-"); | |
544 dt = new Date(dtBase.year, -11, dtBase.day, dtBase.hour, dtBase.minute, dtBa se.second, dtBase.millisecond); | |
545 Expect.equals(dt.year, dtBase.year - 1); | |
546 Expect.equals(dt.month, 1); | |
547 Expect.equals(dt.day, dtBase.day); | |
548 Expect.equals(dt.hour, dtBase.hour); | |
549 Expect.equals(dt.minute, dtBase.minute); | |
550 Expect.equals(dt.second, dtBase.second); | |
551 Expect.equals(dt.millisecond, dtBase.millisecond); | |
552 | |
553 // Flowing all the way up the chain. | |
554 print(" >>> Flow+"); | |
555 var dtBase1 = new Date(2012, 12, 31, 23, 59, 59, 999); | |
556 var dtTick = new Date(dtBase1.year, dtBase1.month, dtBase1.day, dtBase1.hour , dtBase1.minute, dtBase1.second, dtBase1.millisecond + 1); | |
557 Expect.equals(dtTick.year, dtBase1.year + 1); | |
558 Expect.equals(dtTick.month, 1); | |
559 Expect.equals(dtTick.day, 1); | |
560 Expect.equals(dtTick.hour, 0); | |
561 Expect.equals(dtTick.minute, 0); | |
562 Expect.equals(dtTick.second, 0); | |
563 Expect.equals(dtTick.millisecond, 0); | |
564 | |
565 print(" >>> Flow-"); | |
566 dtBase1 = new Date(2012, 1, 1, 0, 0, 0, 0); | |
567 dtTick = new Date(dtBase1.year, dtBase1.month, dtBase1.day, dtBase1.hour, dt Base1.minute, dtBase1.second, dtBase1.millisecond - 1); | |
568 Expect.equals(dtTick.year, dtBase1.year - 1); | |
569 Expect.equals(dtTick.month, 12); | |
570 Expect.equals(dtTick.day, 31); | |
571 Expect.equals(dtTick.hour, 23); | |
572 Expect.equals(dtTick.minute, 59); | |
573 Expect.equals(dtTick.second, 59); | |
574 Expect.equals(dtTick.millisecond, 999); | |
575 } | |
576 | |
430 static void testDateStrings() { | 577 static void testDateStrings() { |
431 // TODO(floitsch): Clean up the Date API that deals with strings. | 578 // TODO(floitsch): Clean up the Date API that deals with strings. |
432 var dt1 = new Date.fromString("2011-05-11 18:58:35Z"); | 579 var dt1 = new Date.fromString("2011-05-11 18:58:35Z"); |
433 Expect.equals(1305140315000, dt1.millisecondsSinceEpoch); | 580 Expect.equals(1305140315000, dt1.millisecondsSinceEpoch); |
434 Expect.isTrue(dt1.isUtc); | 581 Expect.isTrue(dt1.isUtc); |
435 dt1 = new Date.fromString("20110511 18:58:35z"); | 582 dt1 = new Date.fromString("20110511 18:58:35z"); |
436 Expect.equals(1305140315000, dt1.millisecondsSinceEpoch); | 583 Expect.equals(1305140315000, dt1.millisecondsSinceEpoch); |
437 Expect.isTrue(dt1.isUtc); | 584 Expect.isTrue(dt1.isUtc); |
438 dt1 = new Date.fromString("+20110511 18:58:35z"); | 585 dt1 = new Date.fromString("+20110511 18:58:35z"); |
439 Expect.equals(1305140315000, dt1.millisecondsSinceEpoch); | 586 Expect.equals(1305140315000, dt1.millisecondsSinceEpoch); |
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
629 } | 776 } |
630 | 777 |
631 static void testMain() { | 778 static void testMain() { |
632 testNow(); | 779 testNow(); |
633 testValue(); | 780 testValue(); |
634 testConstructors(); | 781 testConstructors(); |
635 testUTCGetters(); | 782 testUTCGetters(); |
636 testLocalGetters(); | 783 testLocalGetters(); |
637 testChangeTimeZone(); | 784 testChangeTimeZone(); |
638 testSubAdd(); | 785 testSubAdd(); |
786 testUnderflowAndOverflow(); | |
639 testDateStrings(); | 787 testDateStrings(); |
640 testEquivalentYears(); | 788 testEquivalentYears(); |
641 testExtremes(); | 789 testExtremes(); |
642 testFarAwayDates(); | 790 testFarAwayDates(); |
643 testWeekday(); | 791 testWeekday(); |
644 } | 792 } |
645 } | 793 } |
646 | 794 |
647 main() { | 795 main() { |
648 DateTest.testMain(); | 796 DateTest.testMain(); |
649 } | 797 } |
OLD | NEW |