| Index: packages/intl/test/date_time_format_test_core.dart
|
| diff --git a/packages/intl/test/date_time_format_test_core.dart b/packages/intl/test/date_time_format_test_core.dart
|
| index 11fa551b4ba7d53e579a7ba3065797b9dd621d86..55519dea3e87a4e3cd724f36a416a490a6e4ef3e 100644
|
| --- a/packages/intl/test/date_time_format_test_core.dart
|
| +++ b/packages/intl/test/date_time_format_test_core.dart
|
| @@ -2,15 +2,13 @@
|
| // 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 the DateFormat library in dart. This file contains core tests that
|
| - * are run regardless of where the locale data is found, so it doesn't expect to
|
| - * be run on its own, but rather to be imported and run from another test file.
|
| - */
|
| +/// Tests the DateFormat library in dart. This file contains core tests that are
|
| +/// run regardless of where the locale data is found, so it doesn't expect to be
|
| +/// run on its own, but rather to be imported and run from another test file.
|
|
|
| library date_time_format_tests;
|
|
|
| -import 'package:unittest/unittest.dart';
|
| +import 'package:test/test.dart';
|
| import 'date_time_format_test_data.dart';
|
| import 'package:intl/intl.dart';
|
|
|
| @@ -119,12 +117,10 @@ var icuFormatNamesToTest = const [
|
| // ABBR_UTC_TZ
|
| ];
|
|
|
| -/**
|
| - * Exercise all of the formats we have explicitly defined on a particular
|
| - * locale. [expectedResults] is a map from ICU format names to the
|
| - * expected result of formatting [date] according to that format in
|
| - * [localeName].
|
| - */
|
| +/// Exercise all of the formats we have explicitly defined on a particular
|
| +/// locale. [expectedResults] is a map from ICU format names to the
|
| +/// expected result of formatting [date] according to that format in
|
| +/// [localeName].
|
| testLocale(String localeName, Map expectedResults, DateTime date) {
|
| var intl = new Intl(localeName);
|
| for (int i = 0; i < formatsToTest.length; i++) {
|
| @@ -132,7 +128,8 @@ testLocale(String localeName, Map expectedResults, DateTime date) {
|
| var format = intl.date(skeleton);
|
| var icuName = icuFormatNamesToTest[i];
|
| var actualResult = format.format(date);
|
| - expect(expectedResults[icuName], equals(actualResult));
|
| + expect(expectedResults[icuName], equals(actualResult),
|
| + reason: "Mismatch in $localeName, testing skeleton '$skeleton'");
|
| }
|
| }
|
|
|
| @@ -168,10 +165,11 @@ testRoundTripParsing(String localeName, DateTime date) {
|
| }
|
| }
|
|
|
| -/** A shortcut for returning all the locales we have available.*/
|
| +/// A shortcut for returning all the locales we have available.
|
| List<String> allLocales() => DateFormat.allLocalesWithSymbols();
|
|
|
| -Function _subsetFunc;
|
| +typedef List<String> SubsetFuncType();
|
| +SubsetFuncType _subsetFunc;
|
|
|
| List<String> _subsetValue;
|
|
|
| @@ -185,7 +183,7 @@ List<String> get subset {
|
| // TODO(alanknight): Run specific tests for the en_ISO locale which isn't
|
| // included in CLDR, and check that our patterns for it are correct (they
|
| // very likely aren't).
|
| -void runDateTests(Function subsetFunc) {
|
| +void runDateTests(SubsetFuncType subsetFunc) {
|
| assert(subsetFunc != null);
|
| _subsetFunc = subsetFunc;
|
|
|
| @@ -363,18 +361,40 @@ void runDateTests(Function subsetFunc) {
|
| }
|
| });
|
|
|
| - /**
|
| - * Generate a map from day numbers in the given [year] (where Jan 1 == 1)
|
| - * to a Date object. If [year] is a leap year, then pass 1 for
|
| - * [leapDay], otherwise pass 0.
|
| - */
|
| + test('Quarter formatting', () {
|
| + var date = new DateTime(2012, 02, 27);
|
| + var formats = {
|
| + 'Q': '1',
|
| + 'QQ': '01',
|
| + 'QQQ': 'Q1',
|
| + 'QQQQ': '1st quarter',
|
| + 'QQQQQ': '00001'
|
| + };
|
| + formats.forEach((pattern, result) {
|
| + expect(new DateFormat(pattern, 'en_US').format(date), result);
|
| + });
|
| +
|
| + if (subset.contains('zh_CN')) {
|
| + // Especially test zh_CN formatting for `QQQ` and `yQQQ` because it
|
| + // contains a single `Q`.
|
| + expect(new DateFormat.QQQ('zh_CN').format(date), '1季度');
|
| + expect(new DateFormat.yQQQ('zh_CN').format(date), '2012年第1季度');
|
| + }
|
| + });
|
| +
|
| + /// Generate a map from day numbers in the given [year] (where Jan 1 == 1)
|
| + /// to a Date object. If [year] is a leap year, then pass 1 for
|
| + /// [leapDay], otherwise pass 0.
|
| Map<int, DateTime> generateDates(int year, int leapDay) =>
|
| - new Iterable.generate(365 + leapDay, (n) => n + 1).map((day) {
|
| - var result = new DateTime(year, 1, day);
|
| - // TODO(alanknight): This is a workaround for dartbug.com/15560.
|
| - if (result.toUtc() == result) result = new DateTime(year, 1, day);
|
| - return result;
|
| - }).toList().asMap();
|
| + new Iterable.generate(365 + leapDay, (n) => n + 1)
|
| + .map/*<DateTime>*/((day) {
|
| + var result = new DateTime(year, 1, day);
|
| + // TODO(alanknight): This is a workaround for dartbug.com/15560.
|
| + if (result.toUtc() == result) result = new DateTime(year, 1, day);
|
| + return result;
|
| + })
|
| + .toList()
|
| + .asMap();
|
|
|
| void verifyOrdinals(Map dates) {
|
| var f = new DateFormat("D");
|
|
|