| // Copyright (c) 2016, 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. |
| |
| /// @assertion DateTime.fromMicrosecondsSinceEpoch(int microsecondsSinceEpoch, |
| /// {bool isUtc: false}) |
| /// Constructs a new DateTime instance with the given microsecondsSinceEpoch. |
| /// |
| /// If isUtc is false then the date is in the local time zone. |
| /// |
| /// The constructed DateTime represents 1970-01-01T00:00:00Z + |
| /// microsecondsSinceEpoch us in the given time zone (local or UTC). |
| /// @description Checks that a new DateTime object is properly constructed using |
| /// the UTC time zone. |
| /// @author sgrekhov@unipro.ru |
| |
| import "../../../Utils/expect.dart"; |
| |
| void test(value, y, m, d, h, min, sec, ms, us) { |
| check(new DateTime.fromMicrosecondsSinceEpoch(value, isUtc: true), |
| y, m, d, h, min, sec, ms, us, true); |
| check(new DateTime.fromMicrosecondsSinceEpoch(value, isUtc: false), |
| y, m, d, h, min, sec, ms, us, false); |
| } |
| |
| void check(date, y, m, d, h, min, sec, ms, us, isUtc) { |
| var dt = date.toUtc(); |
| Expect.equals(y, dt.year); |
| Expect.equals(m, dt.month); |
| Expect.equals(d, dt.day); |
| Expect.equals(h, dt.hour); |
| Expect.equals(min, dt.minute); |
| Expect.equals(sec, dt.second); |
| Expect.equals(ms, dt.millisecond); |
| Expect.equals(us, dt.microsecond); |
| |
| if(isUtc) { |
| Expect.identical(date, date.toUtc()); |
| } else { |
| Expect.identical(date, date.toLocal()); |
| } |
| } |
| |
| main() { |
| test(0, 1970, 1, 1, 0, 0, 0, 0, 0); |
| test(1, 1970, 1, 1, 0, 0, 0, 0, 1); |
| test(1000, 1970, 1, 1, 0, 0, 0, 1, 0); |
| test(1000 * 1000, 1970, 1, 1, 0, 0, 1, 0, 0); |
| test(1000 * 1000 * 60, 1970, 1, 1, 0, 1, 0, 0, 0); |
| test(1000 * 1000 * 60 * 60, 1970, 1, 1, 1, 0, 0, 0, 0); |
| test(1000 * 1000 * 60 * 60 * 24, 1970, 1, 2, 0, 0, 0, 0, 0); |
| test(-1, 1969, 12, 31, 23, 59, 59, 999, 999); |
| test(-1000, 1969, 12, 31, 23, 59, 59, 999, 0); |
| test(-1000 * 1000, 1969, 12, 31, 23, 59, 59, 0, 0); |
| test(-1000 * 1000 * 60, 1969, 12, 31, 23, 59, 0, 0, 0); |
| test(-1000 * 1000 * 60 * 60, 1969, 12, 31, 23, 0, 0, 0, 0); |
| test(-1000 * 1000 * 60 * 60 * 24, 1969, 12, 31, 0, 0, 0, 0, 0); |
| } |