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

Side by Side Diff: tests/lib/math/math_parse_double_test.dart

Issue 15333006: Rewrite double.parse. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Address comments. Created 7 years, 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // 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 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. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 // We temporarily test both the new math library and the old Math 5 // We temporarily test both the new math library and the old Math
6 // class. This can easily be simplified once we get rid of the Math 6 // class. This can easily be simplified once we get rid of the Math
7 // class entirely. 7 // class entirely.
8 library math_parse_double_test; 8 library math_parse_double_test;
9 import "package:expect/expect.dart"; 9 import "package:expect/expect.dart";
10 10
11 void parseDoubleThrowsFormatException(str) { 11 void parseDoubleThrowsFormatException(str) {
12 Expect.throws(() => double.parse(str), (e) => e is FormatException); 12 Expect.throws(() => double.parse(str), (e) => e is FormatException);
13 } 13 }
14 14
15 void main() { 15 void main() {
16 Expect.equals(499.0, double.parse("499")); 16 Expect.equals(499.0, double.parse("499"));
17 Expect.equals(499.0, double.parse("499.0")); 17 Expect.equals(499.0, double.parse("499.0"));
18 Expect.equals(499.0, double.parse("499.0")); 18 Expect.equals(499.0, double.parse("499.0"));
19 Expect.equals(499.0, double.parse("+499")); 19 Expect.equals(499.0, double.parse("+499"));
20 Expect.equals(-499.0, double.parse("-499")); 20 Expect.equals(-499.0, double.parse("-499"));
21 Expect.equals(499.0, double.parse(" 499 ")); 21 Expect.equals(499.0, double.parse(" 499 "));
22 Expect.equals(499.0, double.parse(" +499 ")); 22 Expect.equals(499.0, double.parse(" +499 "));
23 Expect.equals(-499.0, double.parse(" -499 ")); 23 Expect.equals(-499.0, double.parse(" -499 "));
24 Expect.equals(498.0, double.parse("\xA0 498 \xA0"));
25 Expect.equals(497.0, double.parse("\xA0 +497 \xA0"));
26 Expect.equals(-496.0, double.parse("\xA0 -496 \xA0"));
27 Expect.equals(495.0, double.parse("\u205F 495 \u205F"));
28 Expect.equals(494.0, double.parse("\u180E +494 \u205F"));
29 Expect.equals(-493.0, double.parse("\u1680 -493 \u2006"));
24 Expect.equals(0.0, double.parse("0")); 30 Expect.equals(0.0, double.parse("0"));
25 Expect.equals(0.0, double.parse("+0")); 31 Expect.equals(0.0, double.parse("+0"));
26 Expect.equals(-0.0, double.parse("-0")); 32 Expect.equals(-0.0, double.parse("-0"));
27 Expect.equals(true, double.parse("-0").isNegative); 33 Expect.equals(true, double.parse("-0").isNegative);
28 Expect.equals(0.0, double.parse(" 0 ")); 34 Expect.equals(0.0, double.parse(" 0 "));
29 Expect.equals(0.0, double.parse(" +0 ")); 35 Expect.equals(0.0, double.parse(" +0 "));
30 Expect.equals(-0.0, double.parse(" -0 ")); 36 Expect.equals(-0.0, double.parse(" -0 "));
31 Expect.equals(true, double.parse(" -0 ").isNegative); 37 Expect.equals(true, double.parse(" -0 ").isNegative);
32 Expect.equals(1.0 * 0x1234567890, double.parse("0x1234567890")); 38 Expect.equals(0.0, double.parse("\xA0 0 \xA0"));
33 Expect.equals(1.0 * -0x1234567890, double.parse("-0x1234567890")); 39 Expect.equals(0.0, double.parse("\xA0 +0 \xA0"));
34 Expect.equals(1.0 * 0x1234567890, double.parse(" 0x1234567890 ")); 40 Expect.equals(-0.0, double.parse("\xA0 -0 \xA0"));
35 Expect.equals(1.0 * -0x1234567890, double.parse(" -0x1234567890 ")); 41 Expect.equals(true, double.parse("\xA0 -0 \xA0").isNegative);
36 Expect.equals(256.0, double.parse("0x100"));
37 Expect.equals(-256.0, double.parse("-0x100"));
38 Expect.equals(256.0, double.parse(" 0x100 "));
39 Expect.equals(-256.0, double.parse(" -0x100 "));
40 Expect.equals(1.0 * 0xabcdef, double.parse("0xabcdef"));
41 Expect.equals(1.0 * 0xABCDEF, double.parse("0xABCDEF"));
42 Expect.equals(1.0 * 0xabcdef, double.parse("0xabCDEf"));
43 Expect.equals(1.0 * -0xabcdef, double.parse("-0xabcdef"));
44 Expect.equals(1.0 * -0xABCDEF, double.parse("-0xABCDEF"));
45 Expect.equals(1.0 * 0xabcdef, double.parse(" 0xabcdef "));
46 Expect.equals(1.0 * 0xABCDEF, double.parse(" 0xABCDEF "));
47 Expect.equals(1.0 * -0xabcdef, double.parse(" -0xabcdef "));
48 Expect.equals(1.0 * -0xABCDEF, double.parse(" -0xABCDEF "));
49 Expect.equals(1.0 * 0xabcdef, double.parse("0x00000abcdef"));
50 Expect.equals(1.0 * 0xABCDEF, double.parse("0x00000ABCDEF"));
51 Expect.equals(1.0 * -0xabcdef, double.parse("-0x00000abcdef"));
52 Expect.equals(1.0 * -0xABCDEF, double.parse("-0x00000ABCDEF"));
53 Expect.equals(1.0 * 0xabcdef, double.parse(" 0x00000abcdef "));
54 Expect.equals(1.0 * 0xABCDEF, double.parse(" 0x00000ABCDEF "));
55 Expect.equals(1.0 * -0xabcdef, double.parse(" -0x00000abcdef "));
56 Expect.equals(1.0 * -0xABCDEF, double.parse(" -0x00000ABCDEF "));
57 Expect.equals(10.0, double.parse("010")); 42 Expect.equals(10.0, double.parse("010"));
58 Expect.equals(-10.0, double.parse("-010")); 43 Expect.equals(-10.0, double.parse("-010"));
59 Expect.equals(10.0, double.parse(" 010 ")); 44 Expect.equals(10.0, double.parse(" 010 "));
60 Expect.equals(-10.0, double.parse(" -010 ")); 45 Expect.equals(-10.0, double.parse(" -010 "));
46 Expect.equals(10.0, double.parse(" \xA0 010 \xA0 "));
47 Expect.equals(-10.0, double.parse(" \xA0 -010 \xA0 "));
61 Expect.equals(0.1, double.parse("0.1")); 48 Expect.equals(0.1, double.parse("0.1"));
62 Expect.equals(0.1, double.parse(" 0.1 ")); 49 Expect.equals(0.1, double.parse(" 0.1 "));
63 Expect.equals(0.1, double.parse(" +0.1 ")); 50 Expect.equals(0.1, double.parse(" +0.1 "));
64 Expect.equals(-0.1, double.parse(" -0.1 ")); 51 Expect.equals(-0.1, double.parse(" -0.1 "));
52 Expect.equals(0.1, double.parse("\xA0 0.1 \xA0"));
53 Expect.equals(0.1, double.parse("\xA0 +0.1 \xA0"));
54 Expect.equals(-0.1, double.parse("\xA0 -0.1 \xA0"));
65 Expect.equals(0.1, double.parse(".1")); 55 Expect.equals(0.1, double.parse(".1"));
66 Expect.equals(0.1, double.parse(" .1 ")); 56 Expect.equals(0.1, double.parse(" .1 "));
67 Expect.equals(0.1, double.parse(" +.1 ")); 57 Expect.equals(0.1, double.parse(" +.1 "));
68 Expect.equals(-0.1, double.parse(" -.1 ")); 58 Expect.equals(-0.1, double.parse(" -.1 "));
59 Expect.equals(0.1, double.parse("\xA0 .1 \xA0"));
60 Expect.equals(0.1, double.parse("\xA0 +.1 \xA0"));
61 Expect.equals(-0.1, double.parse("\xA0 -.1 \xA0"));
69 Expect.equals(1.5, double.parse("1.5")); 62 Expect.equals(1.5, double.parse("1.5"));
70 Expect.equals(1234567.89, double.parse("1234567.89")); 63 Expect.equals(1234567.89, double.parse("1234567.89"));
71 Expect.equals(1234567.89, double.parse(" 1234567.89 ")); 64 Expect.equals(1234567.89, double.parse(" 1234567.89 "));
72 Expect.equals(1234567.89, double.parse(" +1234567.89 ")); 65 Expect.equals(1234567.89, double.parse(" +1234567.89 "));
73 Expect.equals(-1234567.89, double.parse(" -1234567.89 ")); 66 Expect.equals(-1234567.89, double.parse(" -1234567.89 "));
67 Expect.equals(1234567.89, double.parse(" \xA01234567.89 \xA0"));
68 Expect.equals(1234567.89, double.parse("\xA0 +1234567.89 \xA0"));
69 Expect.equals(-1234567.89, double.parse("\xA0 -1234567.89 \xA0"));
74 Expect.equals(1234567e89, double.parse("1234567e89")); 70 Expect.equals(1234567e89, double.parse("1234567e89"));
75 Expect.equals(1234567e89, double.parse(" 1234567e89 ")); 71 Expect.equals(1234567e89, double.parse(" 1234567e89 "));
76 Expect.equals(1234567e89, double.parse(" +1234567e89 ")); 72 Expect.equals(1234567e89, double.parse(" +1234567e89 "));
77 Expect.equals(-1234567e89, double.parse(" -1234567e89 ")); 73 Expect.equals(-1234567e89, double.parse(" -1234567e89 "));
74 Expect.equals(1234567e89, double.parse("\xA0 1234567e89 \xA0"));
75 Expect.equals(1234567e89, double.parse("\xA0 +1234567e89 \xA0"));
76 Expect.equals(-1234567e89, double.parse(" \xA0 -1234567e89 \xA0"));
78 Expect.equals(1234567.89e2, double.parse("1234567.89e2")); 77 Expect.equals(1234567.89e2, double.parse("1234567.89e2"));
79 Expect.equals(1234567.89e2, double.parse(" 1234567.89e2 ")); 78 Expect.equals(1234567.89e2, double.parse(" 1234567.89e2 "));
80 Expect.equals(1234567.89e2, double.parse(" +1234567.89e2 ")); 79 Expect.equals(1234567.89e2, double.parse(" +1234567.89e2 "));
81 Expect.equals(-1234567.89e2, double.parse(" -1234567.89e2 ")); 80 Expect.equals(-1234567.89e2, double.parse(" -1234567.89e2 "));
81 Expect.equals(1234567.89e2, double.parse("\xA0 1234567.89e2 \xA0"));
82 Expect.equals(1234567.89e2, double.parse("\xA0 +1234567.89e2\xA0 "));
83 Expect.equals(-1234567.89e2, double.parse("\xA0 -1234567.89e2 \xA0"));
82 Expect.equals(1234567.89e2, double.parse("1234567.89E2")); 84 Expect.equals(1234567.89e2, double.parse("1234567.89E2"));
83 Expect.equals(1234567.89e2, double.parse(" 1234567.89E2 ")); 85 Expect.equals(1234567.89e2, double.parse(" 1234567.89E2 "));
84 Expect.equals(1234567.89e2, double.parse(" +1234567.89E2 ")); 86 Expect.equals(1234567.89e2, double.parse(" +1234567.89E2 "));
85 Expect.equals(-1234567.89e2, double.parse(" -1234567.89E2 ")); 87 Expect.equals(-1234567.89e2, double.parse(" -1234567.89E2 "));
88 Expect.equals(1234567.89e2, double.parse(" \xA0 1234567.89E2 \xA0"));
89 Expect.equals(1234567.89e2, double.parse("\xA0 +1234567.89E2\xA0 "));
90 Expect.equals(-1234567.89e2, double.parse("\xA0 -1234567.89E2\xA0 "));
86 Expect.equals(1234567.89e-2, double.parse("1234567.89e-2")); 91 Expect.equals(1234567.89e-2, double.parse("1234567.89e-2"));
87 Expect.equals(1234567.89e-2, double.parse(" 1234567.89e-2 ")); 92 Expect.equals(1234567.89e-2, double.parse(" 1234567.89e-2 "));
88 Expect.equals(1234567.89e-2, double.parse(" +1234567.89e-2 ")); 93 Expect.equals(1234567.89e-2, double.parse(" +1234567.89e-2 "));
89 Expect.equals(-1234567.89e-2, double.parse(" -1234567.89e-2 ")); 94 Expect.equals(-1234567.89e-2, double.parse(" -1234567.89e-2 "));
90 // TODO(floitsch): add tests for NaN and Infinity. 95 Expect.equals(1234567.89e-2, double.parse(" \xA0 1234567.89e-2 \xA0"));
96 Expect.equals(1234567.89e-2, double.parse("\xA0 +1234567.89e-2 \xA0"));
97 Expect.equals(-1234567.89e-2, double.parse("\xA0 -1234567.89e-2 \xA0"));
98 Expect.equals(5, double.parse("5."));
99 Expect.equals(-5, double.parse("-5."));
100 Expect.equals(5, double.parse(" 5."));
101 Expect.equals(-5, double.parse(" -5."));
102 Expect.equals(5, double.parse(" 5. "));
103 Expect.equals(-5, double.parse(" -5. "));
104 Expect.equals(5, double.parse("5. "));
105 Expect.equals(-5, double.parse("-5. "));
106 Expect.equals(-5, double.parse("-5."));
107 Expect.equals(5, double.parse("\xA0 5."));
108 Expect.equals(-5, double.parse("\xA0-5."));
109 Expect.equals(5, double.parse("\xA05.\xA0"));
110 Expect.equals(-5, double.parse("\xA0-5.\xA0"));
111 Expect.equals(5, double.parse("5.\xA0"));
112 Expect.equals(-5, double.parse("-5.\xA0"));
113 Expect.equals(double.INFINITY, double.parse("Infinity"));
114 Expect.equals(double.INFINITY, double.parse("+Infinity"));
115 Expect.equals(double.NEGATIVE_INFINITY, double.parse("-Infinity"));
116 Expect.isTrue(double.parse("NaN").isNaN);
117 Expect.isTrue(double.parse("-NaN").isNaN);
118 Expect.isTrue(double.parse("+NaN").isNaN);
119 Expect.equals(double.INFINITY, double.parse("Infinity "));
120 Expect.equals(double.INFINITY, double.parse("+Infinity "));
121 Expect.equals(double.NEGATIVE_INFINITY, double.parse("-Infinity "));
122 Expect.isTrue(double.parse("NaN ").isNaN);
123 Expect.isTrue(double.parse("-NaN ").isNaN);
124 Expect.isTrue(double.parse("+NaN ").isNaN);
125 Expect.equals(double.INFINITY, double.parse(" Infinity "));
126 Expect.equals(double.INFINITY, double.parse(" +Infinity "));
127 Expect.equals(double.NEGATIVE_INFINITY, double.parse(" -Infinity "));
128 Expect.isTrue(double.parse(" NaN ").isNaN);
129 Expect.isTrue(double.parse(" -NaN ").isNaN);
130 Expect.isTrue(double.parse(" +NaN ").isNaN);
131 Expect.equals(double.INFINITY, double.parse(" Infinity"));
132 Expect.equals(double.INFINITY, double.parse(" +Infinity"));
Lasse Reichstein Nielsen 2013/05/22 08:47:26 Make a parameterized test that takes a string and
floitsch 2013/05/23 02:30:03 Done.
133 Expect.equals(double.NEGATIVE_INFINITY, double.parse(" -Infinity"));
134 Expect.isTrue(double.parse(" NaN").isNaN);
135 Expect.isTrue(double.parse(" -NaN").isNaN);
136 Expect.isTrue(double.parse(" +NaN").isNaN);
137 Expect.equals(double.INFINITY, double.parse("Infinity\xA0"));
138 Expect.equals(double.INFINITY, double.parse("+Infinity\xA0"));
139 Expect.equals(double.NEGATIVE_INFINITY, double.parse("-Infinity\xA0"));
140 Expect.isTrue(double.parse("NaN\xA0").isNaN);
141 Expect.isTrue(double.parse("-NaN\xA0").isNaN);
142 Expect.isTrue(double.parse("+NaN\xA0").isNaN);
143 Expect.equals(double.INFINITY, double.parse(" \xA0Infinity\xA0"));
144 Expect.equals(double.INFINITY, double.parse(" \xA0+Infinity\xA0"));
145 Expect.equals(double.NEGATIVE_INFINITY, double.parse(" \xA0-Infinity\xA0"));
146 Expect.isTrue(double.parse(" \xA0NaN\xA0").isNaN);
147 Expect.isTrue(double.parse(" \xA0-NaN\xA0").isNaN);
148 Expect.isTrue(double.parse(" \xA0+NaN\xA0").isNaN);
149 Expect.equals(double.INFINITY, double.parse(" \xA0Infinity"));
150 Expect.equals(double.INFINITY, double.parse(" \xA0+Infinity"));
151 Expect.equals(double.NEGATIVE_INFINITY, double.parse(" \xA0-Infinity"));
152 Expect.isTrue(double.parse(" \xA0NaN").isNaN);
153 Expect.isTrue(double.parse(" \xA0-NaN").isNaN);
154 Expect.isTrue(double.parse(" \xA0+NaN").isNaN);
155 Expect.equals(123456700.0, double.parse("1234567.e2"));
156 Expect.equals(123456700.0, double.parse(" 1234567.e2 "));
157 Expect.equals(123456700.0, double.parse(" +1234567.e2 "));
158 Expect.equals(-123456700.0, double.parse(" -1234567.e2 "));
159 Expect.equals(123456700.0, double.parse("\xA0 1234567.e2\xA0"));
160 Expect.equals(123456700.0, double.parse("\xA0 +1234567.e2 \xA0"));
161 Expect.equals(-123456700.0, double.parse(" \xA0-1234567.e2 \xA0 "));
162
Lasse Reichstein Nielsen 2013/05/22 08:47:26 More edge case tests (positive and negative): 5e-3
floitsch 2013/05/23 02:30:03 Done.
91 parseDoubleThrowsFormatException("1b"); 163 parseDoubleThrowsFormatException("1b");
92 parseDoubleThrowsFormatException(" 1b "); 164 parseDoubleThrowsFormatException(" 1b ");
93 parseDoubleThrowsFormatException(" 1 b "); 165 parseDoubleThrowsFormatException(" 1 b ");
94 parseDoubleThrowsFormatException(" e3 "); 166 parseDoubleThrowsFormatException(" e3 ");
95 parseDoubleThrowsFormatException(" .e3 "); 167 parseDoubleThrowsFormatException(" .e3 ");
96 parseDoubleThrowsFormatException("00x12"); 168 parseDoubleThrowsFormatException("00x12");
97 parseDoubleThrowsFormatException(" 00x12 "); 169 parseDoubleThrowsFormatException(" 00x12 ");
98 parseDoubleThrowsFormatException("-1b"); 170 parseDoubleThrowsFormatException("-1b");
99 parseDoubleThrowsFormatException(" -1b "); 171 parseDoubleThrowsFormatException(" -1b ");
100 parseDoubleThrowsFormatException(" -1 b "); 172 parseDoubleThrowsFormatException(" -1 b ");
101 parseDoubleThrowsFormatException("-00x12"); 173 parseDoubleThrowsFormatException("-00x12");
102 parseDoubleThrowsFormatException(" -00x12 "); 174 parseDoubleThrowsFormatException(" -00x12 ");
103 parseDoubleThrowsFormatException(" -00x12 "); 175 parseDoubleThrowsFormatException(" -00x12 ");
104 parseDoubleThrowsFormatException("0x0x12"); 176 parseDoubleThrowsFormatException("0x0x12");
105 parseDoubleThrowsFormatException("+ 1.5"); 177 parseDoubleThrowsFormatException("+ 1.5");
106 parseDoubleThrowsFormatException("- 1.5"); 178 parseDoubleThrowsFormatException("- 1.5");
107 parseDoubleThrowsFormatException(""); 179 parseDoubleThrowsFormatException("");
108 parseDoubleThrowsFormatException(" "); 180 parseDoubleThrowsFormatException(" ");
109 parseDoubleThrowsFormatException("5.");
110 parseDoubleThrowsFormatException(" 5. ");
111 parseDoubleThrowsFormatException(" +5. ");
112 parseDoubleThrowsFormatException(" -5. ");
113 parseDoubleThrowsFormatException("1234567.e2");
114 parseDoubleThrowsFormatException(" 1234567.e2 ");
115 parseDoubleThrowsFormatException(" +1234567.e2 ");
116 parseDoubleThrowsFormatException(" -1234567.e2 ");
117 parseDoubleThrowsFormatException("+0x1234567890"); 181 parseDoubleThrowsFormatException("+0x1234567890");
118 parseDoubleThrowsFormatException(" +0x1234567890 "); 182 parseDoubleThrowsFormatException(" +0x1234567890 ");
119 parseDoubleThrowsFormatException(" +0x100 "); 183 parseDoubleThrowsFormatException(" +0x100 ");
120 parseDoubleThrowsFormatException("+0x100"); 184 parseDoubleThrowsFormatException("+0x100");
185 parseDoubleThrowsFormatException("0x1234567890");
186 parseDoubleThrowsFormatException("-0x1234567890");
187 parseDoubleThrowsFormatException(" 0x1234567890 ");
188 parseDoubleThrowsFormatException(" -0x1234567890 ");
189 parseDoubleThrowsFormatException("0x100");
190 parseDoubleThrowsFormatException("-0x100");
191 parseDoubleThrowsFormatException(" 0x100 ");
192 parseDoubleThrowsFormatException(" -0x100 ");
193 parseDoubleThrowsFormatException("0xabcdef");
194 parseDoubleThrowsFormatException("0xABCDEF");
195 parseDoubleThrowsFormatException("0xabCDEf");
196 parseDoubleThrowsFormatException("-0xabcdef");
197 parseDoubleThrowsFormatException("-0xABCDEF");
198 parseDoubleThrowsFormatException(" 0xabcdef ");
199 parseDoubleThrowsFormatException(" 0xABCDEF ");
200 parseDoubleThrowsFormatException(" -0xabcdef ");
201 parseDoubleThrowsFormatException(" -0xABCDEF ");
202 parseDoubleThrowsFormatException("0x00000abcdef");
203 parseDoubleThrowsFormatException("0x00000ABCDEF");
204 parseDoubleThrowsFormatException("-0x00000abcdef");
205 parseDoubleThrowsFormatException("-0x00000ABCDEF");
206 parseDoubleThrowsFormatException(" 0x00000abcdef ");
207 parseDoubleThrowsFormatException(" 0x00000ABCDEF ");
208 parseDoubleThrowsFormatException(" -0x00000abcdef ");
209 parseDoubleThrowsFormatException(" -0x00000ABCDEF ");
210 parseDoubleThrowsFormatException(" -INFINITY ");
211 parseDoubleThrowsFormatException(" NAN ");
212 parseDoubleThrowsFormatException(" inf ");
213 parseDoubleThrowsFormatException(" nan ");
121 } 214 }
OLDNEW
« tests/corelib/string_trim2_test.dart ('K') | « tests/corelib/string_trim2_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698