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

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

Issue 13814018: Make use of the patterns in Intl number formatting (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Addressing review comments Created 7 years, 8 months 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
index 048d6ad538d69d78e7b1283b9dd4b1078329ea82..2306470a5ff994334a249d1cdb81c72c98dcfba5 100644
--- a/pkg/intl/test/number_format_test.dart
+++ b/pkg/intl/test/number_format_test.dart
@@ -7,13 +7,16 @@
library number_format_test;
import 'package:unittest/unittest.dart';
-import 'package:intl/number_format.dart';
+import 'package:intl/number_symbols.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 testNumbers = const {
+var testNumbers = {
"0.001": 0.001,
"0.01": 0.01,
"0.1": 0.1,
@@ -23,21 +26,59 @@ var testNumbers = const {
"100": 100,
"1,000": 1000,
"2,000,000,000,000": 2000000000000,
- "10,000,000,000,000,000,000,000,000,000,000":
- 10000000000000000000000000000000,
"0.123": 0.123,
"1,234": 1234.0,
"1.234": 1.234,
"1.23": 1.230,
- "NaN": 0/0,
- "∞": 1/0,
- "-∞": -1/0};
+ "NaN": double.NAN,
+ "∞": double.INFINITY,
+ "-∞": double.NEGATIVE_INFINITY,
+ "3.142": PI};
+
+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)
+ ];
+}
+
+inJavaScript() => 1 is double;
main() {
- test('Basic number printing', () {
- var number = new NumberFormat();
- expect(number.format(3.14),"3.14");
- });
+ if (!inJavaScript()) {
+ testNumbers["10,000,000,000,000,000,000,000,000,000,000"] =
+ 10000000000000000000000000000000;
+ }
+
+ // 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.
+ 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 list = mainList.take(testFormats.length + 1).iterator;
+ mainList = mainList.skip(testFormats.length + 1);
+ 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 expected = (list..moveNext()).current;
+ expect(formatted, expected);
+ }
+ });
+ }
test('Simple set of numbers', () {
var number = new NumberFormat();
@@ -46,4 +87,12 @@ main() {
expect(formatted, x);
}
});
-}
+
+ test('Exponential form', () {
+ var number = new NumberFormat("#.###E0");
+ for (var x in testExponential.keys) {
+ var formatted = number.format(testExponential[x]);
+ expect(formatted, x);
+ }
+ });
+}
« 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