OLD | NEW |
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")); |
| 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 |
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 } |
OLD | NEW |