mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 14:53:37 +00:00
a4d799c402
Note that cast_test.dart isn't migrated yet due to #39517. First patch set is just copying the tests over. The second patchset has the actual meaningful changes. Change-Id: I89233f20187b4305a776f865cde09a984423fa4f Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/125920 Commit-Queue: Bob Nystrom <rnystrom@google.com> Reviewed-by: Lasse R.H. Nielsen <lrn@google.com> Auto-Submit: Bob Nystrom <rnystrom@google.com>
100 lines
4.3 KiB
Dart
100 lines
4.3 KiB
Dart
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
|
|
// for details. All rights reserved. Use of this source code is governed by a
|
|
// BSD-style license that can be found in the LICENSE file.
|
|
|
|
import "package:expect/expect.dart";
|
|
|
|
// Dart test program for DateTime, extreme values.
|
|
|
|
bool get supportsMicroseconds =>
|
|
new DateTime.fromMicrosecondsSinceEpoch(1).microsecondsSinceEpoch == 1;
|
|
|
|
// Identical to _maxMillisecondsSinceEpoch in date_time.dart
|
|
const int _MAX_MILLISECONDS = 8640000000000000;
|
|
|
|
void testExtremes() {
|
|
var dt =
|
|
new DateTime.fromMillisecondsSinceEpoch(_MAX_MILLISECONDS, isUtc: true);
|
|
Expect.equals(275760, dt.year);
|
|
Expect.equals(9, dt.month);
|
|
Expect.equals(13, dt.day);
|
|
Expect.equals(0, dt.hour);
|
|
Expect.equals(0, dt.minute);
|
|
Expect.equals(0, dt.second);
|
|
Expect.equals(0, dt.millisecond);
|
|
Expect.equals(0, dt.microsecond);
|
|
dt = new DateTime.fromMillisecondsSinceEpoch(-_MAX_MILLISECONDS, isUtc: true);
|
|
Expect.equals(-271821, dt.year);
|
|
Expect.equals(4, dt.month);
|
|
Expect.equals(20, dt.day);
|
|
Expect.equals(0, dt.hour);
|
|
Expect.equals(0, dt.minute);
|
|
Expect.equals(0, dt.second);
|
|
Expect.equals(0, dt.millisecond);
|
|
Expect.equals(0, dt.microsecond);
|
|
// Make sure that we can build the extreme dates in local too.
|
|
dt = new DateTime.fromMillisecondsSinceEpoch(_MAX_MILLISECONDS);
|
|
dt = new DateTime(dt.year, dt.month, dt.day, dt.hour, dt.minute);
|
|
Expect.equals(_MAX_MILLISECONDS, dt.millisecondsSinceEpoch);
|
|
dt = new DateTime.fromMillisecondsSinceEpoch(-_MAX_MILLISECONDS);
|
|
dt = new DateTime(dt.year, dt.month, dt.day, dt.hour, dt.minute);
|
|
Expect.equals(-_MAX_MILLISECONDS, dt.millisecondsSinceEpoch);
|
|
Expect.throws(() => new DateTime.fromMillisecondsSinceEpoch(
|
|
_MAX_MILLISECONDS + 1,
|
|
isUtc: true));
|
|
Expect.throws(() => new DateTime.fromMillisecondsSinceEpoch(
|
|
-_MAX_MILLISECONDS - 1,
|
|
isUtc: true));
|
|
Expect.throws(
|
|
() => new DateTime.fromMillisecondsSinceEpoch(_MAX_MILLISECONDS + 1));
|
|
Expect.throws(
|
|
() => new DateTime.fromMillisecondsSinceEpoch(-_MAX_MILLISECONDS - 1));
|
|
dt = new DateTime.fromMillisecondsSinceEpoch(_MAX_MILLISECONDS);
|
|
Expect.throws(
|
|
() => new DateTime(dt.year, dt.month, dt.day, dt.hour, dt.minute, 0, 1));
|
|
dt = new DateTime.fromMillisecondsSinceEpoch(_MAX_MILLISECONDS, isUtc: true);
|
|
Expect.throws(() =>
|
|
new DateTime.utc(dt.year, dt.month, dt.day, dt.hour, dt.minute, 0, 1));
|
|
dt = new DateTime.fromMillisecondsSinceEpoch(-_MAX_MILLISECONDS);
|
|
Expect.throws(
|
|
() => new DateTime(dt.year, dt.month, dt.day, dt.hour, dt.minute, 0, -1));
|
|
dt = new DateTime.fromMillisecondsSinceEpoch(-_MAX_MILLISECONDS, isUtc: true);
|
|
Expect.throws(() =>
|
|
new DateTime.utc(dt.year, dt.month, dt.day, dt.hour, dt.minute, 0, -1));
|
|
|
|
if (!supportsMicroseconds) return;
|
|
|
|
dt = new DateTime.fromMicrosecondsSinceEpoch(_MAX_MILLISECONDS * 1000);
|
|
dt = new DateTime(dt.year, dt.month, dt.day, dt.hour, dt.minute);
|
|
Expect.equals(_MAX_MILLISECONDS * 1000, dt.microsecondsSinceEpoch);
|
|
dt = new DateTime.fromMicrosecondsSinceEpoch(-_MAX_MILLISECONDS * 1000);
|
|
dt = new DateTime(dt.year, dt.month, dt.day, dt.hour, dt.minute);
|
|
Expect.equals(-_MAX_MILLISECONDS * 1000, dt.microsecondsSinceEpoch);
|
|
Expect.throws(() => new DateTime.fromMicrosecondsSinceEpoch(
|
|
_MAX_MILLISECONDS * 1000 + 1,
|
|
isUtc: true));
|
|
Expect.throws(() => new DateTime.fromMicrosecondsSinceEpoch(
|
|
-_MAX_MILLISECONDS * 1000 - 1,
|
|
isUtc: true));
|
|
Expect.throws(() =>
|
|
new DateTime.fromMicrosecondsSinceEpoch(_MAX_MILLISECONDS * 1000 + 1));
|
|
Expect.throws(() =>
|
|
new DateTime.fromMicrosecondsSinceEpoch(-_MAX_MILLISECONDS * 1000 - 1));
|
|
dt = new DateTime.fromMillisecondsSinceEpoch(_MAX_MILLISECONDS);
|
|
Expect.throws(() =>
|
|
new DateTime(dt.year, dt.month, dt.day, dt.hour, dt.minute, 0, 0, 1));
|
|
dt = new DateTime.fromMillisecondsSinceEpoch(_MAX_MILLISECONDS, isUtc: true);
|
|
Expect.throws(() =>
|
|
new DateTime.utc(dt.year, dt.month, dt.day, dt.hour, dt.minute, 0, 0, 1));
|
|
dt = new DateTime.fromMillisecondsSinceEpoch(-_MAX_MILLISECONDS);
|
|
Expect.throws(() =>
|
|
new DateTime(dt.year, dt.month, dt.day, dt.hour, dt.minute, 0, 0, -1));
|
|
dt = new DateTime.fromMillisecondsSinceEpoch(-_MAX_MILLISECONDS, isUtc: true);
|
|
Expect.throws(() => new DateTime.utc(
|
|
dt.year, dt.month, dt.day, dt.hour, dt.minute, 0, 0, -1));
|
|
}
|
|
|
|
void main() {
|
|
testExtremes();
|
|
}
|