Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(175)

Side by Side Diff: tests/corelib/date_time_test.dart

Issue 10832166: Updated VM and JS versions of Date to allow underflow and overflow. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« runtime/lib/date.dart ('K') | « runtime/lib/date.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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 }
OLDNEW
« runtime/lib/date.dart ('K') | « runtime/lib/date.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698