| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 19 matching lines...) Expand all Loading... |
| 30 #include "v8.h" | 30 #include "v8.h" |
| 31 | 31 |
| 32 #include "platform.h" | 32 #include "platform.h" |
| 33 #include "cctest.h" | 33 #include "cctest.h" |
| 34 | 34 |
| 35 using namespace v8::internal; | 35 using namespace v8::internal; |
| 36 | 36 |
| 37 | 37 |
| 38 TEST(Hex) { | 38 TEST(Hex) { |
| 39 UnicodeCache uc; | 39 UnicodeCache uc; |
| 40 CHECK_EQ(0.0, StringToDouble(&uc, "0x0", ALLOW_HEX | ALLOW_OCTALS)); | 40 CHECK_EQ(0.0, StringToDouble(&uc, "0x0", ALLOW_HEX | ALLOW_IMPLICIT_OCTAL)); |
| 41 CHECK_EQ(0.0, StringToDouble(&uc, "0X0", ALLOW_HEX | ALLOW_OCTALS)); | 41 CHECK_EQ(0.0, StringToDouble(&uc, "0X0", ALLOW_HEX | ALLOW_IMPLICIT_OCTAL)); |
| 42 CHECK_EQ(1.0, StringToDouble(&uc, "0x1", ALLOW_HEX | ALLOW_OCTALS)); | 42 CHECK_EQ(1.0, StringToDouble(&uc, "0x1", ALLOW_HEX | ALLOW_IMPLICIT_OCTAL)); |
| 43 CHECK_EQ(16.0, StringToDouble(&uc, "0x10", ALLOW_HEX | ALLOW_OCTALS)); | 43 CHECK_EQ(16.0, StringToDouble(&uc, "0x10", ALLOW_HEX | ALLOW_IMPLICIT_OCTAL)); |
| 44 CHECK_EQ(255.0, StringToDouble(&uc, "0xff", ALLOW_HEX | ALLOW_OCTALS)); | 44 CHECK_EQ(255.0, StringToDouble(&uc, "0xff", ALLOW_HEX | ALLOW_IMPLICIT_OCTAL))
; |
| 45 CHECK_EQ(175.0, StringToDouble(&uc, "0xAF", ALLOW_HEX | ALLOW_OCTALS)); | 45 CHECK_EQ(175.0, StringToDouble(&uc, "0xAF", ALLOW_HEX | ALLOW_IMPLICIT_OCTAL))
; |
| 46 | 46 |
| 47 CHECK_EQ(0.0, StringToDouble(&uc, "0x0", ALLOW_HEX)); | 47 CHECK_EQ(0.0, StringToDouble(&uc, "0x0", ALLOW_HEX)); |
| 48 CHECK_EQ(0.0, StringToDouble(&uc, "0X0", ALLOW_HEX)); | 48 CHECK_EQ(0.0, StringToDouble(&uc, "0X0", ALLOW_HEX)); |
| 49 CHECK_EQ(1.0, StringToDouble(&uc, "0x1", ALLOW_HEX)); | 49 CHECK_EQ(1.0, StringToDouble(&uc, "0x1", ALLOW_HEX)); |
| 50 CHECK_EQ(16.0, StringToDouble(&uc, "0x10", ALLOW_HEX)); | 50 CHECK_EQ(16.0, StringToDouble(&uc, "0x10", ALLOW_HEX)); |
| 51 CHECK_EQ(255.0, StringToDouble(&uc, "0xff", ALLOW_HEX)); | 51 CHECK_EQ(255.0, StringToDouble(&uc, "0xff", ALLOW_HEX)); |
| 52 CHECK_EQ(175.0, StringToDouble(&uc, "0xAF", ALLOW_HEX)); | 52 CHECK_EQ(175.0, StringToDouble(&uc, "0xAF", ALLOW_HEX)); |
| 53 } | 53 } |
| 54 | 54 |
| 55 | 55 |
| 56 TEST(Octal) { | 56 TEST(Octal) { |
| 57 UnicodeCache uc; | 57 UnicodeCache uc; |
| 58 CHECK_EQ(0.0, StringToDouble(&uc, "0", ALLOW_HEX | ALLOW_OCTALS)); | 58 CHECK_EQ(0.0, StringToDouble(&uc, "0o0", ALLOW_OCTAL | ALLOW_IMPLICIT_OCTAL)); |
| 59 CHECK_EQ(0.0, StringToDouble(&uc, "00", ALLOW_HEX | ALLOW_OCTALS)); | 59 CHECK_EQ(0.0, StringToDouble(&uc, "0O0", ALLOW_OCTAL | ALLOW_IMPLICIT_OCTAL)); |
| 60 CHECK_EQ(1.0, StringToDouble(&uc, "01", ALLOW_HEX | ALLOW_OCTALS)); | 60 CHECK_EQ(1.0, StringToDouble(&uc, "0o1", ALLOW_OCTAL | ALLOW_IMPLICIT_OCTAL)); |
| 61 CHECK_EQ(7.0, StringToDouble(&uc, "07", ALLOW_HEX | ALLOW_OCTALS)); | 61 CHECK_EQ(7.0, StringToDouble(&uc, "0o7", ALLOW_OCTAL | ALLOW_IMPLICIT_OCTAL)); |
| 62 CHECK_EQ(8.0, StringToDouble(&uc, "010", ALLOW_HEX | ALLOW_OCTALS)); | 62 CHECK_EQ(8.0, StringToDouble(&uc, "0o10", ALLOW_OCTAL | ALLOW_IMPLICIT_OCTAL))
; |
| 63 CHECK_EQ(63.0, StringToDouble(&uc, "077", ALLOW_HEX | ALLOW_OCTALS)); | 63 CHECK_EQ(63.0, StringToDouble(&uc, "0o77", ALLOW_OCTAL | ALLOW_IMPLICIT_OCTAL)
); |
| 64 |
| 65 CHECK_EQ(0.0, StringToDouble(&uc, "0o0", ALLOW_OCTAL)); |
| 66 CHECK_EQ(0.0, StringToDouble(&uc, "0O0", ALLOW_OCTAL)); |
| 67 CHECK_EQ(1.0, StringToDouble(&uc, "0o1", ALLOW_OCTAL)); |
| 68 CHECK_EQ(7.0, StringToDouble(&uc, "0o7", ALLOW_OCTAL)); |
| 69 CHECK_EQ(8.0, StringToDouble(&uc, "0o10", ALLOW_OCTAL)); |
| 70 CHECK_EQ(63.0, StringToDouble(&uc, "0o77", ALLOW_OCTAL)); |
| 71 } |
| 72 |
| 73 |
| 74 TEST(ImplicitOctal) { |
| 75 UnicodeCache uc; |
| 76 CHECK_EQ(0.0, StringToDouble(&uc, "0", ALLOW_HEX | ALLOW_IMPLICIT_OCTAL)); |
| 77 CHECK_EQ(0.0, StringToDouble(&uc, "00", ALLOW_HEX | ALLOW_IMPLICIT_OCTAL)); |
| 78 CHECK_EQ(1.0, StringToDouble(&uc, "01", ALLOW_HEX | ALLOW_IMPLICIT_OCTAL)); |
| 79 CHECK_EQ(7.0, StringToDouble(&uc, "07", ALLOW_HEX | ALLOW_IMPLICIT_OCTAL)); |
| 80 CHECK_EQ(8.0, StringToDouble(&uc, "010", ALLOW_HEX | ALLOW_IMPLICIT_OCTAL)); |
| 81 CHECK_EQ(63.0, StringToDouble(&uc, "077", ALLOW_HEX | ALLOW_IMPLICIT_OCTAL)); |
| 64 | 82 |
| 65 CHECK_EQ(0.0, StringToDouble(&uc, "0", ALLOW_HEX)); | 83 CHECK_EQ(0.0, StringToDouble(&uc, "0", ALLOW_HEX)); |
| 66 CHECK_EQ(0.0, StringToDouble(&uc, "00", ALLOW_HEX)); | 84 CHECK_EQ(0.0, StringToDouble(&uc, "00", ALLOW_HEX)); |
| 67 CHECK_EQ(1.0, StringToDouble(&uc, "01", ALLOW_HEX)); | 85 CHECK_EQ(1.0, StringToDouble(&uc, "01", ALLOW_HEX)); |
| 68 CHECK_EQ(7.0, StringToDouble(&uc, "07", ALLOW_HEX)); | 86 CHECK_EQ(7.0, StringToDouble(&uc, "07", ALLOW_HEX)); |
| 69 CHECK_EQ(10.0, StringToDouble(&uc, "010", ALLOW_HEX)); | 87 CHECK_EQ(10.0, StringToDouble(&uc, "010", ALLOW_HEX)); |
| 70 CHECK_EQ(77.0, StringToDouble(&uc, "077", ALLOW_HEX)); | 88 CHECK_EQ(77.0, StringToDouble(&uc, "077", ALLOW_HEX)); |
| 71 | 89 |
| 72 const double x = 010000000000; // Power of 2, no rounding errors. | 90 const double x = 010000000000; // Power of 2, no rounding errors. |
| 73 CHECK_EQ(x * x * x * x * x, StringToDouble(&uc, "01" "0000000000" "0000000000" | 91 CHECK_EQ(x * x * x * x * x, StringToDouble(&uc, "01" "0000000000" "0000000000" |
| 74 "0000000000" "0000000000" "0000000000", ALLOW_OCTALS)); | 92 "0000000000" "0000000000" "0000000000", ALLOW_IMPLICIT_OCTAL)); |
| 93 } |
| 94 |
| 95 |
| 96 TEST(Binary) { |
| 97 UnicodeCache uc; |
| 98 CHECK_EQ(0.0, StringToDouble(&uc, "0b0", ALLOW_BINARY | ALLOW_IMPLICIT_OCTAL))
; |
| 99 CHECK_EQ(0.0, StringToDouble(&uc, "0B0", ALLOW_BINARY | ALLOW_IMPLICIT_OCTAL))
; |
| 100 CHECK_EQ(1.0, StringToDouble(&uc, "0b1", ALLOW_BINARY | ALLOW_IMPLICIT_OCTAL))
; |
| 101 CHECK_EQ(2.0, StringToDouble(&uc, "0b10", ALLOW_BINARY | ALLOW_IMPLICIT_OCTAL)
); |
| 102 CHECK_EQ(3.0, StringToDouble(&uc, "0b11", ALLOW_BINARY | ALLOW_IMPLICIT_OCTAL)
); |
| 103 |
| 104 CHECK_EQ(0.0, StringToDouble(&uc, "0b0", ALLOW_BINARY)); |
| 105 CHECK_EQ(0.0, StringToDouble(&uc, "0B0", ALLOW_BINARY)); |
| 106 CHECK_EQ(1.0, StringToDouble(&uc, "0b1", ALLOW_BINARY)); |
| 107 CHECK_EQ(2.0, StringToDouble(&uc, "0b10", ALLOW_BINARY)); |
| 108 CHECK_EQ(3.0, StringToDouble(&uc, "0b11", ALLOW_BINARY)); |
| 75 } | 109 } |
| 76 | 110 |
| 77 | 111 |
| 78 TEST(MalformedOctal) { | 112 TEST(MalformedOctal) { |
| 79 UnicodeCache uc; | 113 UnicodeCache uc; |
| 80 CHECK_EQ(8.0, StringToDouble(&uc, "08", ALLOW_HEX | ALLOW_OCTALS)); | 114 CHECK_EQ(8.0, StringToDouble(&uc, "08", ALLOW_HEX | ALLOW_IMPLICIT_OCTAL)); |
| 81 CHECK_EQ(81.0, StringToDouble(&uc, "081", ALLOW_HEX | ALLOW_OCTALS)); | 115 CHECK_EQ(81.0, StringToDouble(&uc, "081", ALLOW_HEX | ALLOW_IMPLICIT_OCTAL)); |
| 82 CHECK_EQ(78.0, StringToDouble(&uc, "078", ALLOW_HEX | ALLOW_OCTALS)); | 116 CHECK_EQ(78.0, StringToDouble(&uc, "078", ALLOW_HEX | ALLOW_IMPLICIT_OCTAL)); |
| 83 | 117 |
| 84 CHECK(std::isnan(StringToDouble(&uc, "07.7", ALLOW_HEX | ALLOW_OCTALS))); | 118 CHECK(std::isnan(StringToDouble(&uc, "07.7", ALLOW_HEX | ALLOW_IMPLICIT_OCTAL)
)); |
| 85 CHECK(std::isnan(StringToDouble(&uc, "07.8", ALLOW_HEX | ALLOW_OCTALS))); | 119 CHECK(std::isnan(StringToDouble(&uc, "07.8", ALLOW_HEX | ALLOW_IMPLICIT_OCTAL)
)); |
| 86 CHECK(std::isnan(StringToDouble(&uc, "07e8", ALLOW_HEX | ALLOW_OCTALS))); | 120 CHECK(std::isnan(StringToDouble(&uc, "07e8", ALLOW_HEX | ALLOW_IMPLICIT_OCTAL)
)); |
| 87 CHECK(std::isnan(StringToDouble(&uc, "07e7", ALLOW_HEX | ALLOW_OCTALS))); | 121 CHECK(std::isnan(StringToDouble(&uc, "07e7", ALLOW_HEX | ALLOW_IMPLICIT_OCTAL)
)); |
| 88 | 122 |
| 89 CHECK_EQ(8.7, StringToDouble(&uc, "08.7", ALLOW_HEX | ALLOW_OCTALS)); | 123 CHECK_EQ(8.7, StringToDouble(&uc, "08.7", ALLOW_HEX | ALLOW_IMPLICIT_OCTAL)); |
| 90 CHECK_EQ(8e7, StringToDouble(&uc, "08e7", ALLOW_HEX | ALLOW_OCTALS)); | 124 CHECK_EQ(8e7, StringToDouble(&uc, "08e7", ALLOW_HEX | ALLOW_IMPLICIT_OCTAL)); |
| 91 | 125 |
| 92 CHECK_EQ(0.001, StringToDouble(&uc, "0.001", ALLOW_HEX | ALLOW_OCTALS)); | 126 CHECK_EQ(0.001, StringToDouble(&uc, "0.001", ALLOW_HEX | ALLOW_IMPLICIT_OCTAL)
); |
| 93 CHECK_EQ(0.713, StringToDouble(&uc, "0.713", ALLOW_HEX | ALLOW_OCTALS)); | 127 CHECK_EQ(0.713, StringToDouble(&uc, "0.713", ALLOW_HEX | ALLOW_IMPLICIT_OCTAL)
); |
| 94 | 128 |
| 95 CHECK_EQ(8.0, StringToDouble(&uc, "08", ALLOW_HEX)); | 129 CHECK_EQ(8.0, StringToDouble(&uc, "08", ALLOW_HEX)); |
| 96 CHECK_EQ(81.0, StringToDouble(&uc, "081", ALLOW_HEX)); | 130 CHECK_EQ(81.0, StringToDouble(&uc, "081", ALLOW_HEX)); |
| 97 CHECK_EQ(78.0, StringToDouble(&uc, "078", ALLOW_HEX)); | 131 CHECK_EQ(78.0, StringToDouble(&uc, "078", ALLOW_HEX)); |
| 98 | 132 |
| 99 CHECK_EQ(7.7, StringToDouble(&uc, "07.7", ALLOW_HEX)); | 133 CHECK_EQ(7.7, StringToDouble(&uc, "07.7", ALLOW_HEX)); |
| 100 CHECK_EQ(7.8, StringToDouble(&uc, "07.8", ALLOW_HEX)); | 134 CHECK_EQ(7.8, StringToDouble(&uc, "07.8", ALLOW_HEX)); |
| 101 CHECK_EQ(7e8, StringToDouble(&uc, "07e8", ALLOW_HEX)); | 135 CHECK_EQ(7e8, StringToDouble(&uc, "07e8", ALLOW_HEX)); |
| 102 CHECK_EQ(7e7, StringToDouble(&uc, "07e7", ALLOW_HEX)); | 136 CHECK_EQ(7e7, StringToDouble(&uc, "07e7", ALLOW_HEX)); |
| 103 | 137 |
| 104 CHECK_EQ(8.7, StringToDouble(&uc, "08.7", ALLOW_HEX)); | 138 CHECK_EQ(8.7, StringToDouble(&uc, "08.7", ALLOW_HEX)); |
| 105 CHECK_EQ(8e7, StringToDouble(&uc, "08e7", ALLOW_HEX)); | 139 CHECK_EQ(8e7, StringToDouble(&uc, "08e7", ALLOW_HEX)); |
| 106 | 140 |
| 107 CHECK_EQ(0.001, StringToDouble(&uc, "0.001", ALLOW_HEX)); | 141 CHECK_EQ(0.001, StringToDouble(&uc, "0.001", ALLOW_HEX)); |
| 108 CHECK_EQ(0.713, StringToDouble(&uc, "0.713", ALLOW_HEX)); | 142 CHECK_EQ(0.713, StringToDouble(&uc, "0.713", ALLOW_HEX)); |
| 109 } | 143 } |
| 110 | 144 |
| 111 | 145 |
| 112 TEST(TrailingJunk) { | 146 TEST(TrailingJunk) { |
| 113 UnicodeCache uc; | 147 UnicodeCache uc; |
| 114 CHECK_EQ(8.0, StringToDouble(&uc, "8q", ALLOW_TRAILING_JUNK)); | 148 CHECK_EQ(8.0, StringToDouble(&uc, "8q", ALLOW_TRAILING_JUNK)); |
| 115 CHECK_EQ(63.0, | 149 CHECK_EQ(63.0, |
| 116 StringToDouble(&uc, "077qqq", ALLOW_OCTALS | ALLOW_TRAILING_JUNK)); | 150 StringToDouble(&uc, "077qqq", ALLOW_IMPLICIT_OCTAL | ALLOW_TRAILING_J
UNK)); |
| 117 CHECK_EQ(10.0, | 151 CHECK_EQ(10.0, |
| 118 StringToDouble(&uc, "10e", ALLOW_OCTALS | ALLOW_TRAILING_JUNK)); | 152 StringToDouble(&uc, "10e", ALLOW_IMPLICIT_OCTAL | ALLOW_TRAILING_JUNK
)); |
| 119 CHECK_EQ(10.0, | 153 CHECK_EQ(10.0, |
| 120 StringToDouble(&uc, "10e-", ALLOW_OCTALS | ALLOW_TRAILING_JUNK)); | 154 StringToDouble(&uc, "10e-", ALLOW_IMPLICIT_OCTAL | ALLOW_TRAILING_JUN
K)); |
| 121 } | 155 } |
| 122 | 156 |
| 123 | 157 |
| 124 TEST(NonStrDecimalLiteral) { | 158 TEST(NonStrDecimalLiteral) { |
| 125 UnicodeCache uc; | 159 UnicodeCache uc; |
| 126 CHECK(std::isnan(StringToDouble(&uc, " ", NO_FLAGS, OS::nan_value()))); | 160 CHECK(std::isnan(StringToDouble(&uc, " ", NO_FLAGS, OS::nan_value()))); |
| 127 CHECK(std::isnan(StringToDouble(&uc, "", NO_FLAGS, OS::nan_value()))); | 161 CHECK(std::isnan(StringToDouble(&uc, "", NO_FLAGS, OS::nan_value()))); |
| 128 CHECK(std::isnan(StringToDouble(&uc, " ", NO_FLAGS, OS::nan_value()))); | 162 CHECK(std::isnan(StringToDouble(&uc, " ", NO_FLAGS, OS::nan_value()))); |
| 129 CHECK_EQ(0.0, StringToDouble(&uc, "", NO_FLAGS)); | 163 CHECK_EQ(0.0, StringToDouble(&uc, "", NO_FLAGS)); |
| 130 CHECK_EQ(0.0, StringToDouble(&uc, " ", NO_FLAGS)); | 164 CHECK_EQ(0.0, StringToDouble(&uc, " ", NO_FLAGS)); |
| 131 } | 165 } |
| 132 | 166 |
| 133 | 167 |
| 134 TEST(IntegerStrLiteral) { | 168 TEST(IntegerStrLiteral) { |
| 135 UnicodeCache uc; | 169 UnicodeCache uc; |
| 136 CHECK_EQ(0.0, StringToDouble(&uc, "0.0", NO_FLAGS)); | 170 CHECK_EQ(0.0, StringToDouble(&uc, "0.0", NO_FLAGS)); |
| 137 CHECK_EQ(0.0, StringToDouble(&uc, "0", NO_FLAGS)); | 171 CHECK_EQ(0.0, StringToDouble(&uc, "0", NO_FLAGS)); |
| 138 CHECK_EQ(0.0, StringToDouble(&uc, "00", NO_FLAGS)); | 172 CHECK_EQ(0.0, StringToDouble(&uc, "00", NO_FLAGS)); |
| 139 CHECK_EQ(0.0, StringToDouble(&uc, "000", NO_FLAGS)); | 173 CHECK_EQ(0.0, StringToDouble(&uc, "000", NO_FLAGS)); |
| 140 CHECK_EQ(1.0, StringToDouble(&uc, "1", NO_FLAGS)); | 174 CHECK_EQ(1.0, StringToDouble(&uc, "1", NO_FLAGS)); |
| 141 CHECK_EQ(-1.0, StringToDouble(&uc, "-1", NO_FLAGS)); | 175 CHECK_EQ(-1.0, StringToDouble(&uc, "-1", NO_FLAGS)); |
| 142 CHECK_EQ(-1.0, StringToDouble(&uc, " -1 ", NO_FLAGS)); | 176 CHECK_EQ(-1.0, StringToDouble(&uc, " -1 ", NO_FLAGS)); |
| 143 CHECK_EQ(1.0, StringToDouble(&uc, " +1 ", NO_FLAGS)); | 177 CHECK_EQ(1.0, StringToDouble(&uc, " +1 ", NO_FLAGS)); |
| 144 CHECK(std::isnan(StringToDouble(&uc, " - 1 ", NO_FLAGS))); | 178 CHECK(std::isnan(StringToDouble(&uc, " - 1 ", NO_FLAGS))); |
| 145 CHECK(std::isnan(StringToDouble(&uc, " + 1 ", NO_FLAGS))); | 179 CHECK(std::isnan(StringToDouble(&uc, " + 1 ", NO_FLAGS))); |
| 146 | 180 |
| 147 CHECK_EQ(0.0, StringToDouble(&uc, "0e0", ALLOW_HEX | ALLOW_OCTALS)); | 181 CHECK_EQ(0.0, StringToDouble(&uc, "0e0", ALLOW_HEX | ALLOW_IMPLICIT_OCTAL)); |
| 148 CHECK_EQ(0.0, StringToDouble(&uc, "0e1", ALLOW_HEX | ALLOW_OCTALS)); | 182 CHECK_EQ(0.0, StringToDouble(&uc, "0e1", ALLOW_HEX | ALLOW_IMPLICIT_OCTAL)); |
| 149 CHECK_EQ(0.0, StringToDouble(&uc, "0e-1", ALLOW_HEX | ALLOW_OCTALS)); | 183 CHECK_EQ(0.0, StringToDouble(&uc, "0e-1", ALLOW_HEX | ALLOW_IMPLICIT_OCTAL)); |
| 150 CHECK_EQ(0.0, StringToDouble(&uc, "0e-100000", ALLOW_HEX | ALLOW_OCTALS)); | 184 CHECK_EQ(0.0, StringToDouble(&uc, "0e-100000", ALLOW_HEX | ALLOW_IMPLICIT_OCTA
L)); |
| 151 CHECK_EQ(0.0, StringToDouble(&uc, "0e+100000", ALLOW_HEX | ALLOW_OCTALS)); | 185 CHECK_EQ(0.0, StringToDouble(&uc, "0e+100000", ALLOW_HEX | ALLOW_IMPLICIT_OCTA
L)); |
| 152 CHECK_EQ(0.0, StringToDouble(&uc, "0.", ALLOW_HEX | ALLOW_OCTALS)); | 186 CHECK_EQ(0.0, StringToDouble(&uc, "0.", ALLOW_HEX | ALLOW_IMPLICIT_OCTAL)); |
| 153 } | 187 } |
| 154 | 188 |
| 155 | 189 |
| 156 TEST(LongNumberStr) { | 190 TEST(LongNumberStr) { |
| 157 UnicodeCache uc; | 191 UnicodeCache uc; |
| 158 CHECK_EQ(1e10, StringToDouble(&uc, "1" "0000000000", NO_FLAGS)); | 192 CHECK_EQ(1e10, StringToDouble(&uc, "1" "0000000000", NO_FLAGS)); |
| 159 CHECK_EQ(1e20, StringToDouble(&uc, "1" "0000000000" "0000000000", NO_FLAGS)); | 193 CHECK_EQ(1e20, StringToDouble(&uc, "1" "0000000000" "0000000000", NO_FLAGS)); |
| 160 | 194 |
| 161 CHECK_EQ(1e60, StringToDouble(&uc, "1" "0000000000" "0000000000" "0000000000" | 195 CHECK_EQ(1e60, StringToDouble(&uc, "1" "0000000000" "0000000000" "0000000000" |
| 162 "0000000000" "0000000000" "0000000000", NO_FLAGS)); | 196 "0000000000" "0000000000" "0000000000", NO_FLAGS)); |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 301 // Test most significant bits. | 335 // Test most significant bits. |
| 302 x = V8_2PART_UINT64_C(0xE0000000, 00000000); | 336 x = V8_2PART_UINT64_C(0xE0000000, 00000000); |
| 303 CHECK(x == UpperBits::encode(7)); | 337 CHECK(x == UpperBits::encode(7)); |
| 304 CHECK_EQ(7, UpperBits::decode(x)); | 338 CHECK_EQ(7, UpperBits::decode(x)); |
| 305 | 339 |
| 306 // Test the 32/64-bit boundary bits. | 340 // Test the 32/64-bit boundary bits. |
| 307 x = V8_2PART_UINT64_C(0x00000001, 80000000); | 341 x = V8_2PART_UINT64_C(0x00000001, 80000000); |
| 308 CHECK(x == MiddleBits::encode(3)); | 342 CHECK(x == MiddleBits::encode(3)); |
| 309 CHECK_EQ(3, MiddleBits::decode(x)); | 343 CHECK_EQ(3, MiddleBits::decode(x)); |
| 310 } | 344 } |
| OLD | NEW |