[corelib_2] Split date_time_test to increase coverage

After moving ~175 lines to other files, the remaining ~1200 lines of
tests in date_time_test.dart passes on dart2js.


Change-Id: Id8366b90083c22f71e5ff2e3f36ac1f0358ec8e2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/108220
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Commit-Queue: Stephen Adams <sra@google.com>
This commit is contained in:
Stephen Adams 2019-07-04 15:16:55 +00:00 committed by commit-bot@chromium.org
parent 9bccb7ba4a
commit f41d6de111
4 changed files with 206 additions and 175 deletions

View file

@ -20,7 +20,6 @@ bit_twiddling_test/int64: CompileTimeError, OK # Error if web int literal cannot
compare_to2_test: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
core_runtime_types_test: RuntimeError # Issue 34147
date_time11_test: RuntimeError, Pass # Fails when US is on winter time, issue 31285.
date_time_test: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
double_ceil_test/int64: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
double_floor_test/int64: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
double_round_test/int64: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351

View file

@ -0,0 +1,99 @@
// 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();
}

View file

@ -0,0 +1,107 @@
// Copyright (c) 2019, 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, far away dates.
// TODO(37442): Find far-away dates with milliseconds-since-epoch values that
// are 'web' integers.
bool get supportsMicroseconds =>
new DateTime.fromMicrosecondsSinceEpoch(1).microsecondsSinceEpoch == 1;
void testFarAwayDates() {
DateTime dt =
new DateTime.fromMillisecondsSinceEpoch(1000000000000001, isUtc: true);
Expect.equals(33658, dt.year);
Expect.equals(9, dt.month);
Expect.equals(27, dt.day);
Expect.equals(1, dt.hour);
Expect.equals(46, dt.minute);
Expect.equals(40, dt.second);
Expect.equals(1, dt.millisecond);
Expect.equals(0, dt.microsecond);
dt = new DateTime.fromMillisecondsSinceEpoch(-1000000000000001, isUtc: true);
Expect.equals(-29719, dt.year);
Expect.equals(4, dt.month);
Expect.equals(5, dt.day);
Expect.equals(22, dt.hour);
Expect.equals(13, dt.minute);
Expect.equals(19, dt.second);
Expect.equals(999, dt.millisecond);
Expect.equals(0, dt.microsecond);
// Same with local zone.
dt = new DateTime.fromMillisecondsSinceEpoch(1000000000000001);
Expect.equals(33658, dt.year);
Expect.equals(9, dt.month);
Expect.equals(true, dt.day == 27 || dt.day == 26);
// Not much we can test for local hour.
Expect.equals(true, dt.hour >= 0 && dt.hour < 24);
// Timezones can have offsets down to 15 minute.
Expect.equals(true, dt.minute % 15 == 46 % 15);
Expect.equals(40, dt.second);
Expect.equals(1, dt.millisecond);
Expect.equals(0, dt.microsecond);
dt = new DateTime.fromMillisecondsSinceEpoch(-1000000000000001);
Expect.equals(-29719, dt.year);
Expect.equals(4, dt.month);
Expect.equals(true, 5 == dt.day || 6 == dt.day);
// Not much we can test for local hour.
Expect.equals(true, dt.hour >= 0 && dt.hour < 24);
// Timezones can have offsets down to 15 minute.
Expect.equals(true, dt.minute % 15 == 13);
Expect.equals(19, dt.second);
Expect.equals(999, dt.millisecond);
Expect.equals(0, dt.microsecond);
if (!supportsMicroseconds) return;
dt =
new DateTime.fromMicrosecondsSinceEpoch(1000000000000000001, isUtc: true);
Expect.equals(33658, dt.year);
Expect.equals(9, dt.month);
Expect.equals(27, dt.day);
Expect.equals(1, dt.hour);
Expect.equals(46, dt.minute);
Expect.equals(40, dt.second);
Expect.equals(0, dt.millisecond);
Expect.equals(1, dt.microsecond);
dt = new DateTime.fromMicrosecondsSinceEpoch(-1000000000000000001,
isUtc: true);
Expect.equals(-29719, dt.year);
Expect.equals(4, dt.month);
Expect.equals(5, dt.day);
Expect.equals(22, dt.hour);
Expect.equals(13, dt.minute);
Expect.equals(19, dt.second);
Expect.equals(999, dt.millisecond);
Expect.equals(999, dt.microsecond);
// Same with local zone.
dt = new DateTime.fromMicrosecondsSinceEpoch(1000000000000000001);
Expect.equals(33658, dt.year);
Expect.equals(9, dt.month);
Expect.equals(true, dt.day == 27 || dt.day == 26);
// Not much we can test for local hour.
Expect.equals(true, dt.hour >= 0 && dt.hour < 24);
// Timezones can have offsets down to 15 minute.
Expect.equals(true, dt.minute % 15 == 46 % 15);
Expect.equals(40, dt.second);
Expect.equals(0, dt.millisecond);
Expect.equals(1, dt.microsecond);
dt = new DateTime.fromMicrosecondsSinceEpoch(-1000000000000000001);
Expect.equals(-29719, dt.year);
Expect.equals(4, dt.month);
Expect.equals(true, 5 == dt.day || 6 == dt.day);
// Not much we can test for local hour.
Expect.equals(true, dt.hour >= 0 && dt.hour < 24);
// Timezones can have offsets down to 15 minute.
Expect.equals(true, dt.minute % 15 == 13);
Expect.equals(19, dt.second);
Expect.equals(999, dt.millisecond);
Expect.equals(999, dt.microsecond);
}
void main() {
testFarAwayDates();
}

View file

@ -49,96 +49,6 @@ void testMicrosecondsSinceEpoch() {
Expect.equals(microsecondsSinceEpoch, dt2.microsecondsSinceEpoch);
}
void testFarAwayDates() {
DateTime dt =
new DateTime.fromMillisecondsSinceEpoch(1000000000000001, isUtc: true);
Expect.equals(33658, dt.year);
Expect.equals(9, dt.month);
Expect.equals(27, dt.day);
Expect.equals(1, dt.hour);
Expect.equals(46, dt.minute);
Expect.equals(40, dt.second);
Expect.equals(1, dt.millisecond);
Expect.equals(0, dt.microsecond);
dt = new DateTime.fromMillisecondsSinceEpoch(-1000000000000001, isUtc: true);
Expect.equals(-29719, dt.year);
Expect.equals(4, dt.month);
Expect.equals(5, dt.day);
Expect.equals(22, dt.hour);
Expect.equals(13, dt.minute);
Expect.equals(19, dt.second);
Expect.equals(999, dt.millisecond);
Expect.equals(0, dt.microsecond);
// Same with local zone.
dt = new DateTime.fromMillisecondsSinceEpoch(1000000000000001);
Expect.equals(33658, dt.year);
Expect.equals(9, dt.month);
Expect.equals(true, dt.day == 27 || dt.day == 26);
// Not much we can test for local hour.
Expect.equals(true, dt.hour >= 0 && dt.hour < 24);
// Timezones can have offsets down to 15 minute.
Expect.equals(true, dt.minute % 15 == 46 % 15);
Expect.equals(40, dt.second);
Expect.equals(1, dt.millisecond);
Expect.equals(0, dt.microsecond);
dt = new DateTime.fromMillisecondsSinceEpoch(-1000000000000001);
Expect.equals(-29719, dt.year);
Expect.equals(4, dt.month);
Expect.equals(true, 5 == dt.day || 6 == dt.day);
// Not much we can test for local hour.
Expect.equals(true, dt.hour >= 0 && dt.hour < 24);
// Timezones can have offsets down to 15 minute.
Expect.equals(true, dt.minute % 15 == 13);
Expect.equals(19, dt.second);
Expect.equals(999, dt.millisecond);
Expect.equals(0, dt.microsecond);
if (!supportsMicroseconds) return;
dt =
new DateTime.fromMicrosecondsSinceEpoch(1000000000000000001, isUtc: true);
Expect.equals(33658, dt.year);
Expect.equals(9, dt.month);
Expect.equals(27, dt.day);
Expect.equals(1, dt.hour);
Expect.equals(46, dt.minute);
Expect.equals(40, dt.second);
Expect.equals(0, dt.millisecond);
Expect.equals(1, dt.microsecond);
dt = new DateTime.fromMicrosecondsSinceEpoch(-1000000000000000001,
isUtc: true);
Expect.equals(-29719, dt.year);
Expect.equals(4, dt.month);
Expect.equals(5, dt.day);
Expect.equals(22, dt.hour);
Expect.equals(13, dt.minute);
Expect.equals(19, dt.second);
Expect.equals(999, dt.millisecond);
Expect.equals(999, dt.microsecond);
// Same with local zone.
dt = new DateTime.fromMicrosecondsSinceEpoch(1000000000000000001);
Expect.equals(33658, dt.year);
Expect.equals(9, dt.month);
Expect.equals(true, dt.day == 27 || dt.day == 26);
// Not much we can test for local hour.
Expect.equals(true, dt.hour >= 0 && dt.hour < 24);
// Timezones can have offsets down to 15 minute.
Expect.equals(true, dt.minute % 15 == 46 % 15);
Expect.equals(40, dt.second);
Expect.equals(0, dt.millisecond);
Expect.equals(1, dt.microsecond);
dt = new DateTime.fromMicrosecondsSinceEpoch(-1000000000000000001);
Expect.equals(-29719, dt.year);
Expect.equals(4, dt.month);
Expect.equals(true, 5 == dt.day || 6 == dt.day);
// Not much we can test for local hour.
Expect.equals(true, dt.hour >= 0 && dt.hour < 24);
// Timezones can have offsets down to 15 minute.
Expect.equals(true, dt.minute % 15 == 13);
Expect.equals(19, dt.second);
Expect.equals(999, dt.millisecond);
Expect.equals(999, dt.microsecond);
}
void testEquivalentYears() {
// All hardcoded values come from V8. This means that the values are not
// necessarily correct (see limitations of DateTime object in
@ -363,88 +273,6 @@ void testEquivalentYears() {
Expect.equals(0, dt.microsecond);
}
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 testUTCGetters() {
var dt = new DateTime.fromMillisecondsSinceEpoch(1305140315000, isUtc: true);
Expect.equals(2011, dt.year);
@ -1372,8 +1200,6 @@ void main() {
testUnderflowAndOverflow();
testDateStrings();
testEquivalentYears();
testExtremes();
testFarAwayDates();
testWeekday();
testToStrings();
testIsoString();