Index: packages/intl/test/intl_test.dart |
diff --git a/packages/intl/test/intl_test.dart b/packages/intl/test/intl_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..268d765bfb565bf64e9ad202e85fdcb063b058ea |
--- /dev/null |
+++ b/packages/intl/test/intl_test.dart |
@@ -0,0 +1,81 @@ |
+// 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:unittest/unittest.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'); |
+ }); |
+} |