| 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 |