blob: e19ed5ade89f4d58d40b42f6a8c3151d124671f6 [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.
library intl_test;
import 'package:intl/intl.dart';
import 'package:test/test.dart';
import 'package:intl/date_symbol_data_local.dart';
main() {
test("Locale setting doesn't verify the core locale", () {
var de = new Intl('de_DE');
expect(de.locale, equals('de_DE'));
});
test('DateFormat creation does verify the locale', () {
// TODO(alanknight): We need to make the locale verification be on a per
// usage basis rather than once for the entire Intl object. The set of
// locales covered for messages may be different from that for date
// formatting.
initializeDateFormatting('de_DE', null).then((_) {
var de = new Intl('de_DE');
var format = de.date().add_d();
expect(format.locale, equals('de'));
});
});
test("Canonicalizing locales", () {
expect(Intl.canonicalizedLocale('en-us'), 'en_US');
expect(Intl.canonicalizedLocale('en_us'), 'en_US');
expect(Intl.canonicalizedLocale('en_US'), 'en_US');
expect(Intl.canonicalizedLocale('xx-yyy'), 'xx_YYY');
expect(Intl.canonicalizedLocale('xx_YYY'), 'xx_YYY');
expect(Intl.canonicalizedLocale('C'), 'en_ISO');
});
test("Verifying locale fallback for numbers", () {
expect(Intl.verifiedLocale('en-us', NumberFormat.localeExists), 'en_US');
expect(Intl.verifiedLocale('en_us', NumberFormat.localeExists), 'en_US');
expect(Intl.verifiedLocale('es-419', NumberFormat.localeExists), 'es_419');
expect(Intl.verifiedLocale('en-ZZ', NumberFormat.localeExists), 'en');
expect(Intl.verifiedLocale('es-999', NumberFormat.localeExists), 'es');
void checkAsNumberDefault(String locale, String expected) {
var oldDefault = Intl.defaultLocale;
Intl.defaultLocale = locale;
var format = new NumberFormat();
expect(format.locale, expected);
Intl.defaultLocale = oldDefault;
}
checkAsNumberDefault('en-us', 'en_US');
checkAsNumberDefault('en_us', 'en_US');
checkAsNumberDefault('es-419', 'es_419');
checkAsNumberDefault('en-ZZ', 'en');
checkAsNumberDefault('es-999', 'es');
});
test("Verifying locale fallback for dates", () {
expect(Intl.verifiedLocale('en-us', DateFormat.localeExists), 'en_US');
expect(Intl.verifiedLocale('en_us', DateFormat.localeExists), 'en_US');
expect(Intl.verifiedLocale('es-419', DateFormat.localeExists), 'es_419');
expect(Intl.verifiedLocale('en-ZZ', DateFormat.localeExists), 'en');
expect(Intl.verifiedLocale('es-999', DateFormat.localeExists), 'es');
void checkAsDateDefault(String locale, String expected) {
var oldDefault = Intl.defaultLocale;
Intl.defaultLocale = locale;
var format = new DateFormat();
expect(format.locale, expected);
Intl.defaultLocale = oldDefault;
}
checkAsDateDefault('en-us', 'en_US');
checkAsDateDefault('en_us', 'en_US');
checkAsDateDefault('es-419', 'es_419');
checkAsDateDefault('en-ZZ', 'en');
checkAsDateDefault('es-999', 'es');
});
test("toBeginningOfSentenceCase", () {
expect(toBeginningOfSentenceCase(null), null);
expect(toBeginningOfSentenceCase(""), "");
expect(toBeginningOfSentenceCase("A"), "A");
expect(toBeginningOfSentenceCase("a"), "A");
expect(toBeginningOfSentenceCase("abc"), "Abc");
expect(toBeginningOfSentenceCase("[a]"), "[a]");
expect(toBeginningOfSentenceCase("ABc"), "ABc");
expect(toBeginningOfSentenceCase("ı"), "I");
expect(toBeginningOfSentenceCase("i"), "I");
expect(toBeginningOfSentenceCase("i", "tr"), "\u0130");
});
}