blob: 4b75747feb516e2e5bf2abc80e891db18f3ba449 [file] [log] [blame]
// 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);
}