OLD | NEW |
1 // Copyright 2008 the V8 project authors. All rights reserved. | 1 // Copyright 2008 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 11 matching lines...) Expand all Loading... |
22 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 22 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
27 | 27 |
28 function toNumber(val) { | 28 function toNumber(val) { |
29 return Number(val); | 29 return Number(val); |
30 } | 30 } |
31 | 31 |
32 function repeat(s, num) { | |
33 var result = ''; | |
34 while (num > 0) { | |
35 if ((num & 1) != 0) result += s; | |
36 s += s; | |
37 num >>= 1; | |
38 } | |
39 | |
40 return result; | |
41 } | |
42 | |
43 assertEquals('0000000000', repeat('0', 10)); | |
44 | |
45 // assertEquals(, toNumber()); | 32 // assertEquals(, toNumber()); |
46 | 33 |
47 assertEquals(1, 1.); | |
48 assertEquals(1, toNumber("1.")); | |
49 | 34 |
50 assertEquals(123, toNumber(" 123")); | 35 assertEquals(123, toNumber(" 123")); |
51 assertEquals(123, toNumber("\n123")); | 36 assertEquals(123, toNumber("\n123")); |
52 assertEquals(123, toNumber("\r123")); | 37 assertEquals(123, toNumber("\r123")); |
53 assertEquals(123, toNumber("\t123")); | 38 assertEquals(123, toNumber("\t123")); |
54 assertEquals(123, toNumber("\f123")); | 39 assertEquals(123, toNumber("\f123")); |
55 | 40 |
56 assertEquals(123, toNumber("123 ")); | 41 assertEquals(123, toNumber("123 ")); |
57 assertEquals(123, toNumber("123\n")); | 42 assertEquals(123, toNumber("123\n")); |
58 assertEquals(123, toNumber("123\r")); | 43 assertEquals(123, toNumber("123\r")); |
(...skipping 10 matching lines...) Expand all Loading... |
69 assertEquals(Infinity, toNumber(" Infinity ") ," Infinity"); | 54 assertEquals(Infinity, toNumber(" Infinity ") ," Infinity"); |
70 assertEquals(-Infinity, toNumber(" -Infinity ")); | 55 assertEquals(-Infinity, toNumber(" -Infinity ")); |
71 assertEquals(Infinity, toNumber(" +Infinity "), " +Infinity"); | 56 assertEquals(Infinity, toNumber(" +Infinity "), " +Infinity"); |
72 assertEquals(Infinity, toNumber("Infinity ") ,"Infinity"); | 57 assertEquals(Infinity, toNumber("Infinity ") ,"Infinity"); |
73 assertEquals(-Infinity, toNumber("-Infinity ")); | 58 assertEquals(-Infinity, toNumber("-Infinity ")); |
74 assertEquals(Infinity, toNumber("+Infinity "), "+Infinity"); | 59 assertEquals(Infinity, toNumber("+Infinity "), "+Infinity"); |
75 | 60 |
76 assertEquals(0, toNumber("0")); | 61 assertEquals(0, toNumber("0")); |
77 assertEquals(0, toNumber("+0")); | 62 assertEquals(0, toNumber("+0")); |
78 assertEquals(-0, toNumber("-0")); | 63 assertEquals(-0, toNumber("-0")); |
79 assertEquals(-Infinity, 1 / toNumber("-0")); | |
80 | 64 |
81 assertEquals(1, toNumber("1")); | 65 assertEquals(1, toNumber("1")); |
82 assertEquals(1, toNumber("+1")); | 66 assertEquals(1, toNumber("+1")); |
83 assertEquals(-1, toNumber("-1")); | 67 assertEquals(-1, toNumber("-1")); |
84 | 68 |
85 assertEquals(2, toNumber("2")); | 69 assertEquals(2, toNumber("2")); |
86 assertEquals(2, toNumber("+2")); | 70 assertEquals(2, toNumber("+2")); |
87 assertEquals(-2, toNumber("-2")); | 71 assertEquals(-2, toNumber("-2")); |
88 | 72 |
89 assertEquals(3.1415926, toNumber("3.1415926")); | 73 assertEquals(3.1415926, toNumber("3.1415926")); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
139 assertEquals(15, toNumber("0xF")); | 123 assertEquals(15, toNumber("0xF")); |
140 | 124 |
141 assertEquals(0, toNumber("0X0")); | 125 assertEquals(0, toNumber("0X0")); |
142 assertEquals(9, toNumber("0X9")); | 126 assertEquals(9, toNumber("0X9")); |
143 assertEquals(10, toNumber("0Xa")); | 127 assertEquals(10, toNumber("0Xa")); |
144 assertEquals(10, toNumber("0XA")); | 128 assertEquals(10, toNumber("0XA")); |
145 assertEquals(15, toNumber("0Xf")); | 129 assertEquals(15, toNumber("0Xf")); |
146 assertEquals(15, toNumber("0XF")); | 130 assertEquals(15, toNumber("0XF")); |
147 | 131 |
148 assertEquals(0, toNumber("0x000")); | 132 assertEquals(0, toNumber("0x000")); |
149 assertEquals(-Infinity, 1 / toNumber("-0x000")); | |
150 assertEquals(0, toNumber("0x000" + repeat('0', 1000))); | |
151 assertEquals(9, toNumber("0x009")); | 133 assertEquals(9, toNumber("0x009")); |
152 assertEquals(10, toNumber("0x00a")); | 134 assertEquals(10, toNumber("0x00a")); |
153 assertEquals(10, toNumber("0x00A")); | 135 assertEquals(10, toNumber("0x00A")); |
154 assertEquals(15, toNumber("0x00f")); | 136 assertEquals(15, toNumber("0x00f")); |
155 assertEquals(15, toNumber("0x00F")); | 137 assertEquals(15, toNumber("0x00F")); |
156 assertEquals(Infinity, toNumber("0x" + repeat('0', 1000) + '1' | |
157 + repeat('0', 1000))); | |
158 assertEquals(-Infinity, toNumber("-0x1" + repeat('0', 1000))); | |
159 | 138 |
160 assertEquals(0, toNumber("00")); | 139 assertEquals(0, toNumber("00")); |
161 assertEquals(1, toNumber("01")); | 140 assertEquals(1, toNumber("01")); |
162 assertEquals(2, toNumber("02")); | 141 assertEquals(2, toNumber("02")); |
163 assertEquals(10, toNumber("010")); | 142 assertEquals(10, toNumber("010")); |
164 assertEquals(100, toNumber("0100")); | 143 assertEquals(100, toNumber("0100")); |
165 assertEquals(100, toNumber("000100")); | 144 assertEquals(100, toNumber("000100")); |
166 | 145 |
167 assertEquals(Infinity, toNumber("1e999"), "1e999"); | 146 assertEquals(Infinity, toNumber("1e999"), "1e999"); |
168 assertEquals(-Infinity, toNumber("-1e999")); | 147 assertEquals(-Infinity, toNumber("-1e999")); |
169 assertEquals(0, toNumber("1e-999")); | 148 assertEquals(0, toNumber("1e-999")); |
170 assertEquals(0, toNumber("-1e-999")); | 149 assertEquals(0, toNumber("-1e-999")); |
171 assertEquals(Infinity, 1 / toNumber("1e-999"), "1e-999"); | 150 assertEquals(Infinity, 1 / toNumber("1e-999"), "1e-999"); |
172 assertEquals(-Infinity, 1 / toNumber("-1e-999")); | 151 assertEquals(-Infinity, 1 / toNumber("-1e-999")); |
173 | 152 |
174 assertTrue(isNaN(toNumber("junk")), "junk"); | 153 assertTrue(isNaN(toNumber("junk")), "junk"); |
175 assertTrue(isNaN(toNumber("100 junk")), "100 junk"); | 154 assertTrue(isNaN(toNumber("100 junk")), "100 junk"); |
176 assertTrue(isNaN(toNumber("0x100 junk")), "0x100 junk"); | 155 assertTrue(isNaN(toNumber("0x100 junk")), "0x100 junk"); |
177 assertTrue(isNaN(toNumber("100.0 junk")), "100.0 junk"); | 156 assertTrue(isNaN(toNumber("100.0 junk")), "100.0 junk"); |
178 assertTrue(isNaN(toNumber(".1e4 junk")), ".1e4 junk"); | 157 assertTrue(isNaN(toNumber(".1e4 junk")), ".1e4 junk"); |
179 assertTrue(isNaN(toNumber("Infinity junk")), "Infinity junk"); | 158 assertTrue(isNaN(toNumber("Infinity junk")), "Infinity junk"); |
180 assertTrue(isNaN(toNumber("1e")), "1e"); | |
181 assertTrue(isNaN(toNumber("1e ")), "1e_"); | |
182 assertTrue(isNaN(toNumber("1" + repeat('0', 1000) + 'junk')), "1e1000 junk"); | |
OLD | NEW |