Index: pkg/intl/test/number_format_test.dart |
diff --git a/pkg/intl/test/number_format_test.dart b/pkg/intl/test/number_format_test.dart |
deleted file mode 100644 |
index 1ff898b2c1a01ac0c1037bd5ea41d026773ece6c..0000000000000000000000000000000000000000 |
--- a/pkg/intl/test/number_format_test.dart |
+++ /dev/null |
@@ -1,203 +0,0 @@ |
-/** |
- * 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 number_format_test; |
- |
-import 'package:unittest/unittest.dart'; |
-import 'package:intl/number_symbols_data.dart'; |
-import 'package:intl/intl.dart'; |
-import 'number_test_data.dart'; |
-import 'dart:math'; |
- |
-/** |
- * Tests the Numeric formatting library in dart. |
- */ |
-var testNumbersWeCanReadBack = { |
- "-1" : -1, |
- "-2" : -2.0, |
- "-0.01" : -0.01, |
- "0.001": 0.001, |
- "0.01": 0.01, |
- "0.1": 0.1, |
- "1": 1, |
- "2": 2.0, |
- "10": 10, |
- "100": 100, |
- "1,000": 1000, |
- "2,000,000,000,000": 2000000000000, |
- "0.123": 0.123, |
- "1,234": 1234.0, |
- "1.234": 1.234, |
- "1.23": 1.230, |
- "NaN": double.NAN, |
- "∞": double.INFINITY, |
- "-∞": double.NEGATIVE_INFINITY, |
-}; |
- |
-/** Test numbers that we can't parse because we lose precision in formatting.*/ |
-var testNumbersWeCannotReadBack = { |
- "3.142" : PI, |
- }; |
- |
-/** Test numbers that won't work in Javascript because they're too big. */ |
-var testNumbersOnlyForTheVM = { |
- "10,000,000,000,000,000,000,000,000,000,000" : |
- 10000000000000000000000000000000, |
-}; |
- |
-get allTestNumbers => |
- new Map.from(testNumbersWeCanReadBack) |
- ..addAll(testNumbersWeCannotReadBack) |
- ..addAll(inJavaScript() ? {} : testNumbersOnlyForTheVM); |
- |
-var testExponential = const { |
- "1E-3" : 0.001, |
- "1E-2": 0.01, |
- "1.23E0" : 1.23 |
- }; |
- |
-// TODO(alanknight): Test against currency, which requires generating data |
-// for the three different forms that this now supports. |
-// TODO(alanknight): Test against scientific, which requires significant |
-// digit support. |
-List<NumberFormat> standardFormats(String locale) { |
- return [ |
- new NumberFormat.decimalPattern(locale), |
- new NumberFormat.percentPattern(locale), |
- ]; |
-} |
- |
-// Pay no attention to the hint. This is here deliberately to have different |
-// behavior in the Dart VM versus Javascript so we can distinguish the two. |
-inJavaScript() => 1 is double; |
- |
-main() { |
- // For data from a list of locales, run each locale's data as a separate |
- // test so we can see exactly which ones pass or fail. The test data is |
- // hard-coded as printing 123, -12.3, %12,300, -1,230% in each locale. |
- var mainList = numberTestData; |
- var sortedLocales = new List.from(numberFormatSymbols.keys); |
- sortedLocales.sort((a, b) => a.compareTo(b)); |
- for (var locale in sortedLocales) { |
- var testFormats = standardFormats(locale); |
- var testLength = (testFormats.length * 3) + 1; |
- var list = mainList.take(testLength).iterator; |
- mainList = mainList.skip(testLength); |
- var nextLocaleFromList = (list..moveNext()).current; |
- test("Test against ICU data for $locale", () { |
- expect(locale, nextLocaleFromList); |
- for (var format in testFormats) { |
- var formatted = format.format(123); |
- var negative = format.format(-12.3); |
- var large = format.format(1234567890); |
- var expected = (list..moveNext()).current; |
- expect(formatted, expected); |
- var expectedNegative = (list..moveNext()).current; |
- // Some of these results from CLDR have a leading LTR/RTL indicator, |
- // which we don't want. We also treat the difference between Unicode |
- // minus sign (2212) and hyphen-minus (45) as not significant. |
- expectedNegative = expectedNegative |
- .replaceAll("\u200e", "") |
- .replaceAll("\u200f", "") |
- .replaceAll("\u2212", "-"); |
- expect(negative, expectedNegative); |
- var expectedLarge = (list..moveNext()).current; |
- expect(large, expectedLarge); |
- var readBack = format.parse(formatted); |
- expect(readBack, 123); |
- var readBackNegative = format.parse(negative); |
- expect(readBackNegative, -12.3); |
- var readBackLarge = format.parse(large); |
- expect(readBackLarge, 1234567890); |
- } |
- }); |
- } |
- |
- test('Simple set of numbers', () { |
- var number = new NumberFormat(); |
- for (var x in allTestNumbers.keys) { |
- var formatted = number.format(allTestNumbers[x]); |
- expect(formatted, x); |
- if (!testNumbersWeCannotReadBack.containsKey(x)) { |
- var readBack = number.parse(formatted); |
- // Even among ones we can read back, we can't test NaN for equality. |
- if (allTestNumbers[x].isNaN) { |
- expect(readBack.isNaN, isTrue); |
- } else { |
- expect(readBack, allTestNumbers[x]); |
- } |
- } |
- } |
- }); |
- |
- test('Exponential form', () { |
- var number = new NumberFormat("#.###E0"); |
- for (var x in testExponential.keys) { |
- var formatted = number.format(testExponential[x]); |
- expect(formatted, x); |
- var readBack = number.parse(formatted); |
- expect(testExponential[x], readBack); |
- } |
- }); |
- |
- // We can't do these in the normal tests because those also format the |
- // numbers and we're reading them in a format where they won't print |
- // back the same way. |
- test('Parsing modifiers,e.g. percent, in the base format', () { |
- var number = new NumberFormat(); |
- var modified = { "12%" : 0.12, "12\u2030" : 0.012}; |
- modified.addAll(testExponential); |
- for (var x in modified.keys) { |
- var parsed = number.parse(x); |
- expect(parsed, modified[x]); |
- } |
- }); |
- |
- test('Explicit currency name', () { |
- var amount = 1000000.32; |
- var usConvention = new NumberFormat.currencyPattern('en_US', '€'); |
- var formatted = usConvention.format(amount); |
- expect(formatted, '€1,000,000.32'); |
- var readBack = usConvention.parse(formatted); |
- expect(readBack, amount); |
- var swissConvention = new NumberFormat.currencyPattern('de_CH', r'$'); |
- formatted = swissConvention.format(amount); |
- var nbsp = new String.fromCharCode(0xa0); |
- expect(formatted, r"$" + nbsp + "1'000'000.32"); |
- readBack = swissConvention.parse(formatted); |
- expect(readBack, amount); |
- |
- /// Verify we can leave off the currency and it gets filled in. |
- var plainSwiss = new NumberFormat.currencyPattern('de_CH'); |
- formatted = plainSwiss.format(amount); |
- expect(formatted, r"CHF" + nbsp + "1'000'000.32"); |
- readBack = plainSwiss.parse(formatted); |
- expect(readBack, amount); |
- |
- // Verify that we can pass null in order to specify the currency symbol |
- // but use the default locale. |
- var defaultLocale = new NumberFormat.currencyPattern(null, 'Smurfs'); |
- formatted = defaultLocale.format(amount); |
- // We don't know what the exact format will be, but it should have Smurfs. |
- expect(formatted.contains('Smurfs'), isTrue); |
- readBack = defaultLocale.parse(formatted); |
- expect(readBack, amount); |
- }); |
- |
- test("Delta percent format", () { |
- var f = new NumberFormat("+#,##0%;-#,##0%"); |
- expect(f.format(-0.07), "-7%"); |
- expect(f.format(0.12), "+12%"); |
- }); |
- |
- test('Unparseable', () { |
- var format = new NumberFormat.currencyPattern(); |
- expect(() => format.parse("abcdefg"), throwsFormatException); |
- expect(() => format.parse(""), throwsFormatException); |
- expect(() => format.parse("1.0zzz"), throwsFormatException); |
- expect(() => format.parse("-∞+1"), throwsFormatException); |
- }); |
-} |