| Index: packages/intl/test/date_time_strict_test.dart
|
| diff --git a/packages/intl/test/date_time_strict_test.dart b/packages/intl/test/date_time_strict_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..f7ed30e8d1df8f83cf7bd9cec4248fb29c77eeb7
|
| --- /dev/null
|
| +++ b/packages/intl/test/date_time_strict_test.dart
|
| @@ -0,0 +1,79 @@
|
| +// Copyright (c) 2014, 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.
|
| +
|
| +/// Tests for the strict option when parsing dates and times, which are
|
| +/// relatively locale-independent, depending only on the being a valid date
|
| +/// and consuming all the input data.
|
| +library date_time_strict_test;
|
| +
|
| +import 'package:intl/intl.dart';
|
| +import 'package:unittest/unittest.dart';
|
| +
|
| +main() {
|
| + test("All input consumed", () {
|
| + var format = new DateFormat.yMMMd();
|
| + var date = new DateTime(2014, 9, 3);
|
| + var formatted = 'Sep 3, 2014';
|
| + expect(format.format(date), formatted);
|
| + var parsed = format.parseStrict(formatted);
|
| + expect(parsed, date);
|
| +
|
| + check(String s) {
|
| + expect(() => format.parseStrict(s), throwsFormatException);
|
| + expect(format.parse(s), date);
|
| + }
|
| +
|
| + check(formatted + ",");
|
| + check(formatted + "abc");
|
| + check(formatted + " ");
|
| + });
|
| +
|
| + test("Invalid dates", () {
|
| + var format = new DateFormat.yMd();
|
| + check(s) => expect(() => format.parseStrict(s), throwsFormatException);
|
| + check("0/3/2014");
|
| + check("13/3/2014");
|
| + check("9/0/2014");
|
| + check("9/31/2014");
|
| + check("09/31/2014");
|
| + check("10/32/2014");
|
| + check("2/29/2014");
|
| + expect(format.parseStrict("2/29/2016"), new DateTime(2016, 2, 29));
|
| + });
|
| +
|
| + test("Invalid times am/pm", () {
|
| + var format = new DateFormat.jms();
|
| + check(s) => expect(() => format.parseStrict(s), throwsFormatException);
|
| + check("-1:15:00 AM");
|
| + expect(format.parseStrict("0:15:00 AM"), new DateTime(1970, 1, 1, 0, 15));
|
| + check("24:00:00 PM");
|
| + check("24:00:00 AM");
|
| + check("25:00:00 PM");
|
| + check("0:-1:00 AM");
|
| + check("0:60:00 AM");
|
| + expect(format.parseStrict("0:59:00 AM"), new DateTime(1970, 1, 1, 0, 59));
|
| + check("0:0:-1 AM");
|
| + check("0:0:60 AM");
|
| + check("2:0:60 PM");
|
| + expect(
|
| + format.parseStrict("2:0:59 PM"), new DateTime(1970, 1, 1, 14, 0, 59));
|
| + });
|
| +
|
| + test("Invalid times 24 hour", () {
|
| + var format = new DateFormat.Hms();
|
| + check(s) => expect(() => format.parseStrict(s), throwsFormatException);
|
| + check("-1:15:00");
|
| + expect(format.parseStrict("0:15:00"), new DateTime(1970, 1, 1, 0, 15));
|
| + check("24:00:00");
|
| + check("24:00:00");
|
| + check("25:00:00");
|
| + check("0:-1:00");
|
| + check("0:60:00");
|
| + expect(format.parseStrict("0:59:00"), new DateTime(1970, 1, 1, 0, 59));
|
| + check("0:0:-1");
|
| + check("0:0:60");
|
| + check("14:0:60");
|
| + expect(format.parseStrict("14:0:59"), new DateTime(1970, 1, 1, 14, 0, 59));
|
| + });
|
| +}
|
|
|