blob: a780abe26ac8353d28777429b99c9992b486ae4a [file] [log] [blame]
[email protected]0ba76c32012-08-21 21:32:12 +00001// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2// for details. All rights reserved. Use of this source code is governed by a
3// BSD-style license that can be found in the LICENSE file.
4
[email protected]3a88e392012-10-31 21:32:10 +00005library intl_test;
[email protected]0ba76c32012-08-21 21:32:12 +00006
Kevin Mooref22f7b52021-06-07 10:54:37 -07007import 'package:intl/date_symbol_data_local.dart';
[email protected]771dfd72013-01-13 01:11:07 +00008import 'package:intl/intl.dart';
alanknight810432e2017-06-15 13:40:56 -07009import 'package:test/test.dart';
[email protected]0ba76c32012-08-21 21:32:12 +000010
Dart Team795c4902019-08-29 10:58:28 -070011void main() {
[email protected]50aa5d22012-09-13 18:20:29 +000012 test("Locale setting doesn't verify the core locale", () {
Dart Team795c4902019-08-29 10:58:28 -070013 var de = Intl('de_DE');
[email protected]0f27d522014-01-31 23:01:45 +000014 expect(de.locale, equals('de_DE'));
[email protected]50aa5d22012-09-13 18:20:29 +000015 });
16
[email protected]0f27d522014-01-31 23:01:45 +000017 test('DateFormat creation does verify the locale', () {
[email protected]47a318c2012-09-05 19:54:01 +000018 // TODO(alanknight): We need to make the locale verification be on a per
19 // usage basis rather than once for the entire Intl object. The set of
20 // locales covered for messages may be different from that for date
21 // formatting.
22 initializeDateFormatting('de_DE', null).then((_) {
Dart Team795c4902019-08-29 10:58:28 -070023 var de = Intl('de_DE');
[email protected]50aa5d22012-09-13 18:20:29 +000024 var format = de.date().add_d();
25 expect(format.locale, equals('de'));
[email protected]0f27d522014-01-31 23:01:45 +000026 });
[email protected]0ba76c32012-08-21 21:32:12 +000027 });
[email protected]74ed1562012-09-18 17:08:29 +000028
Dart Team795c4902019-08-29 10:58:28 -070029 test('Canonicalizing locales', () {
[email protected]74ed1562012-09-18 17:08:29 +000030 expect(Intl.canonicalizedLocale('en-us'), 'en_US');
31 expect(Intl.canonicalizedLocale('en_us'), 'en_US');
32 expect(Intl.canonicalizedLocale('en_US'), 'en_US');
33 expect(Intl.canonicalizedLocale('xx-yyy'), 'xx_YYY');
34 expect(Intl.canonicalizedLocale('xx_YYY'), 'xx_YYY');
35 expect(Intl.canonicalizedLocale('C'), 'en_ISO');
36 });
[email protected]a861dd72014-02-25 19:26:06 +000037
Dart Team795c4902019-08-29 10:58:28 -070038 test('Verifying locale fallback for numbers', () {
[email protected]a861dd72014-02-25 19:26:06 +000039 expect(Intl.verifiedLocale('en-us', NumberFormat.localeExists), 'en_US');
40 expect(Intl.verifiedLocale('en_us', NumberFormat.localeExists), 'en_US');
41 expect(Intl.verifiedLocale('es-419', NumberFormat.localeExists), 'es_419');
42 expect(Intl.verifiedLocale('en-ZZ', NumberFormat.localeExists), 'en');
43 expect(Intl.verifiedLocale('es-999', NumberFormat.localeExists), 'es');
44
45 void checkAsNumberDefault(String locale, String expected) {
46 var oldDefault = Intl.defaultLocale;
47 Intl.defaultLocale = locale;
Dart Team795c4902019-08-29 10:58:28 -070048 var format = NumberFormat();
[email protected]a861dd72014-02-25 19:26:06 +000049 expect(format.locale, expected);
50 Intl.defaultLocale = oldDefault;
51 }
52
53 checkAsNumberDefault('en-us', 'en_US');
54 checkAsNumberDefault('en_us', 'en_US');
55 checkAsNumberDefault('es-419', 'es_419');
56 checkAsNumberDefault('en-ZZ', 'en');
57 checkAsNumberDefault('es-999', 'es');
58 });
59
Dart Team795c4902019-08-29 10:58:28 -070060 test('Verifying locale fallback for dates', () {
[email protected]a861dd72014-02-25 19:26:06 +000061 expect(Intl.verifiedLocale('en-us', DateFormat.localeExists), 'en_US');
62 expect(Intl.verifiedLocale('en_us', DateFormat.localeExists), 'en_US');
63 expect(Intl.verifiedLocale('es-419', DateFormat.localeExists), 'es_419');
64 expect(Intl.verifiedLocale('en-ZZ', DateFormat.localeExists), 'en');
65 expect(Intl.verifiedLocale('es-999', DateFormat.localeExists), 'es');
66
67 void checkAsDateDefault(String locale, String expected) {
68 var oldDefault = Intl.defaultLocale;
69 Intl.defaultLocale = locale;
Dart Team795c4902019-08-29 10:58:28 -070070 var format = DateFormat();
[email protected]a861dd72014-02-25 19:26:06 +000071 expect(format.locale, expected);
72 Intl.defaultLocale = oldDefault;
73 }
74
75 checkAsDateDefault('en-us', 'en_US');
76 checkAsDateDefault('en_us', 'en_US');
77 checkAsDateDefault('es-419', 'es_419');
78 checkAsDateDefault('en-ZZ', 'en');
79 checkAsDateDefault('es-999', 'es');
80 });
alanknightc394e9e2016-06-27 14:08:23 -070081
Dart Team795c4902019-08-29 10:58:28 -070082 test('toBeginningOfSentenceCase', () {
alanknightc394e9e2016-06-27 14:08:23 -070083 expect(toBeginningOfSentenceCase(null), null);
Dart Team795c4902019-08-29 10:58:28 -070084 expect(toBeginningOfSentenceCase(''), '');
85 expect(toBeginningOfSentenceCase('A'), 'A');
86 expect(toBeginningOfSentenceCase('a'), 'A');
87 expect(toBeginningOfSentenceCase('abc'), 'Abc');
88 expect(toBeginningOfSentenceCase('[a]'), '[a]');
89 expect(toBeginningOfSentenceCase('ABc'), 'ABc');
90 expect(toBeginningOfSentenceCase('ı'), 'I');
91 expect(toBeginningOfSentenceCase('i'), 'I');
92 expect(toBeginningOfSentenceCase('i', 'tr'), '\u0130');
alanknightc394e9e2016-06-27 14:08:23 -070093 });
[email protected]0ba76c32012-08-21 21:32:12 +000094}