| // 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. |
| |
| /** |
| * Test date formatting and parsing using locale data which is available |
| * directly in the program as a constant. |
| */ |
| |
| library date_time_format_test; |
| |
| import 'dart:async'; |
| import 'package:unittest/unittest.dart'; |
| import 'package:intl/intl.dart'; |
| import 'date_time_format_test_core.dart'; |
| |
| typedef List<String> TestListFunc(); |
| |
| typedef Future InitializeDateFormattingFunc(String locale, String filePath); |
| |
| /** |
| * Return only the odd-numbered locales. A simple way to divide the list into |
| * two roughly equal parts. |
| */ |
| List<String> oddLocales() { |
| int i = 1; |
| return allLocales().where((x) => (i++).isOdd).toList(); |
| } |
| |
| /** |
| * Return a set of a few locales to run just the tests on a small sample. |
| */ |
| List smallSetOfLocales() { |
| return allLocales().sublist(0, 10); |
| } |
| |
| /** |
| * Return only the even-numbered locales. A simple way to divide the list into |
| * two roughly equal parts. |
| */ |
| List<String> evenLocales() { |
| int i = 1; |
| return allLocales().where((x) => !((i++).isOdd)).toList(); |
| } |
| |
| void runWith(TestListFunc getSubset, String dir, |
| InitializeDateFormattingFunc initFunction) { |
| // Initialize one locale just so we know what the list is. |
| // Also, note that we take the list of locales as a function so that we don't |
| // evaluate it until after we know that all the locales are available. |
| |
| bool initialized = false; |
| |
| setUp(() { |
| if (initialized) { |
| return null; |
| } |
| return initFunction("en_US", dir) |
| .then((_) { |
| return Future.forEach(DateFormat.allLocalesWithSymbols(), (locale) { |
| return initFunction(locale, dir); |
| }); |
| }) |
| .then((_) { |
| initialized = true; |
| }); |
| }); |
| |
| runDateTests(getSubset); |
| } |