Chromium Code Reviews| 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 |