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 |
32 // assertEquals(, toNumber()); | 45 // assertEquals(, toNumber()); |
33 | 46 |
34 | 47 |
35 assertEquals(123, toNumber(" 123")); | 48 assertEquals(123, toNumber(" 123")); |
36 assertEquals(123, toNumber("\n123")); | 49 assertEquals(123, toNumber("\n123")); |
37 assertEquals(123, toNumber("\r123")); | 50 assertEquals(123, toNumber("\r123")); |
38 assertEquals(123, toNumber("\t123")); | 51 assertEquals(123, toNumber("\t123")); |
39 assertEquals(123, toNumber("\f123")); | 52 assertEquals(123, toNumber("\f123")); |
40 | 53 |
41 assertEquals(123, toNumber("123 ")); | 54 assertEquals(123, toNumber("123 ")); |
(...skipping 12 matching lines...) Expand all Loading... |
54 assertEquals(Infinity, toNumber(" Infinity ") ," Infinity"); | 67 assertEquals(Infinity, toNumber(" Infinity ") ," Infinity"); |
55 assertEquals(-Infinity, toNumber(" -Infinity ")); | 68 assertEquals(-Infinity, toNumber(" -Infinity ")); |
56 assertEquals(Infinity, toNumber(" +Infinity "), " +Infinity"); | 69 assertEquals(Infinity, toNumber(" +Infinity "), " +Infinity"); |
57 assertEquals(Infinity, toNumber("Infinity ") ,"Infinity"); | 70 assertEquals(Infinity, toNumber("Infinity ") ,"Infinity"); |
58 assertEquals(-Infinity, toNumber("-Infinity ")); | 71 assertEquals(-Infinity, toNumber("-Infinity ")); |
59 assertEquals(Infinity, toNumber("+Infinity "), "+Infinity"); | 72 assertEquals(Infinity, toNumber("+Infinity "), "+Infinity"); |
60 | 73 |
61 assertEquals(0, toNumber("0")); | 74 assertEquals(0, toNumber("0")); |
62 assertEquals(0, toNumber("+0")); | 75 assertEquals(0, toNumber("+0")); |
63 assertEquals(-0, toNumber("-0")); | 76 assertEquals(-0, toNumber("-0")); |
| 77 assertEquals(-Infinity, 1 / toNumber("-0")); |
64 | 78 |
65 assertEquals(1, toNumber("1")); | 79 assertEquals(1, toNumber("1")); |
66 assertEquals(1, toNumber("+1")); | 80 assertEquals(1, toNumber("+1")); |
67 assertEquals(-1, toNumber("-1")); | 81 assertEquals(-1, toNumber("-1")); |
68 | 82 |
69 assertEquals(2, toNumber("2")); | 83 assertEquals(2, toNumber("2")); |
70 assertEquals(2, toNumber("+2")); | 84 assertEquals(2, toNumber("+2")); |
71 assertEquals(-2, toNumber("-2")); | 85 assertEquals(-2, toNumber("-2")); |
72 | 86 |
73 assertEquals(3.1415926, toNumber("3.1415926")); | 87 assertEquals(3.1415926, toNumber("3.1415926")); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
123 assertEquals(15, toNumber("0xF")); | 137 assertEquals(15, toNumber("0xF")); |
124 | 138 |
125 assertEquals(0, toNumber("0X0")); | 139 assertEquals(0, toNumber("0X0")); |
126 assertEquals(9, toNumber("0X9")); | 140 assertEquals(9, toNumber("0X9")); |
127 assertEquals(10, toNumber("0Xa")); | 141 assertEquals(10, toNumber("0Xa")); |
128 assertEquals(10, toNumber("0XA")); | 142 assertEquals(10, toNumber("0XA")); |
129 assertEquals(15, toNumber("0Xf")); | 143 assertEquals(15, toNumber("0Xf")); |
130 assertEquals(15, toNumber("0XF")); | 144 assertEquals(15, toNumber("0XF")); |
131 | 145 |
132 assertEquals(0, toNumber("0x000")); | 146 assertEquals(0, toNumber("0x000")); |
| 147 assertEquals(-Infinity, 1 / toNumber("-0x000")); |
| 148 assertEquals(0, toNumber("0x000" + repeat('0', 1000))); |
133 assertEquals(9, toNumber("0x009")); | 149 assertEquals(9, toNumber("0x009")); |
134 assertEquals(10, toNumber("0x00a")); | 150 assertEquals(10, toNumber("0x00a")); |
135 assertEquals(10, toNumber("0x00A")); | 151 assertEquals(10, toNumber("0x00A")); |
136 assertEquals(15, toNumber("0x00f")); | 152 assertEquals(15, toNumber("0x00f")); |
137 assertEquals(15, toNumber("0x00F")); | 153 assertEquals(15, toNumber("0x00F")); |
| 154 assertEquals(Infinity, toNumber("0x" + repeat('0', 1000) + '1' |
| 155 + repeat('0', 1000))); |
| 156 assertEquals(-Infinity, toNumber("-0x1" + repeat('0', 1000))); |
138 | 157 |
139 assertEquals(0, toNumber("00")); | 158 assertEquals(0, toNumber("00")); |
140 assertEquals(1, toNumber("01")); | 159 assertEquals(1, toNumber("01")); |
141 assertEquals(2, toNumber("02")); | 160 assertEquals(2, toNumber("02")); |
142 assertEquals(10, toNumber("010")); | 161 assertEquals(10, toNumber("010")); |
143 assertEquals(100, toNumber("0100")); | 162 assertEquals(100, toNumber("0100")); |
144 assertEquals(100, toNumber("000100")); | 163 assertEquals(100, toNumber("000100")); |
145 | 164 |
146 assertEquals(Infinity, toNumber("1e999"), "1e999"); | 165 assertEquals(Infinity, toNumber("1e999"), "1e999"); |
147 assertEquals(-Infinity, toNumber("-1e999")); | 166 assertEquals(-Infinity, toNumber("-1e999")); |
148 assertEquals(0, toNumber("1e-999")); | 167 assertEquals(0, toNumber("1e-999")); |
149 assertEquals(0, toNumber("-1e-999")); | 168 assertEquals(0, toNumber("-1e-999")); |
150 assertEquals(Infinity, 1 / toNumber("1e-999"), "1e-999"); | 169 assertEquals(Infinity, 1 / toNumber("1e-999"), "1e-999"); |
151 assertEquals(-Infinity, 1 / toNumber("-1e-999")); | 170 assertEquals(-Infinity, 1 / toNumber("-1e-999")); |
152 | 171 |
153 assertTrue(isNaN(toNumber("junk")), "junk"); | 172 assertTrue(isNaN(toNumber("junk")), "junk"); |
154 assertTrue(isNaN(toNumber("100 junk")), "100 junk"); | 173 assertTrue(isNaN(toNumber("100 junk")), "100 junk"); |
155 assertTrue(isNaN(toNumber("0x100 junk")), "0x100 junk"); | 174 assertTrue(isNaN(toNumber("0x100 junk")), "0x100 junk"); |
156 assertTrue(isNaN(toNumber("100.0 junk")), "100.0 junk"); | 175 assertTrue(isNaN(toNumber("100.0 junk")), "100.0 junk"); |
157 assertTrue(isNaN(toNumber(".1e4 junk")), ".1e4 junk"); | 176 assertTrue(isNaN(toNumber(".1e4 junk")), ".1e4 junk"); |
158 assertTrue(isNaN(toNumber("Infinity junk")), "Infinity junk"); | 177 assertTrue(isNaN(toNumber("Infinity junk")), "Infinity junk"); |
| 178 assertTrue(isNaN(toNumber("1e")), "1e"); |
| 179 assertTrue(isNaN(toNumber("1e ")), "1e_"); |
| 180 assertTrue(isNaN(toNumber("1" + repeat('0', 1000) + 'junk')), "1e1000 junk"); |
OLD | NEW |