Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(74)

Unified Diff: pkg/intl/test/number_format_test.dart

Issue 814113004: Pull args, intl, logging, shelf, and source_maps out of the SDK. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Also csslib. Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/intl/test/number_closure_test.dart ('k') | pkg/intl/test/number_test_data.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
- });
-}
« no previous file with comments | « pkg/intl/test/number_closure_test.dart ('k') | pkg/intl/test/number_test_data.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698