OLD | NEW |
(Empty) | |
| 1 // Copyright 2006-2008 the V8 project authors. All rights reserved. |
| 2 |
| 3 #include <stdlib.h> |
| 4 |
| 5 #include "v8.h" |
| 6 |
| 7 #include "platform.h" |
| 8 #include "cctest.h" |
| 9 #include "strtod.h" |
| 10 |
| 11 using namespace v8::internal; |
| 12 |
| 13 static const int kBufferSize = 100; |
| 14 |
| 15 |
| 16 TEST(Strtod) { |
| 17 char buffer_array[kBufferSize]; |
| 18 Vector<char> buffer(buffer_array, kBufferSize); |
| 19 Vector<char> vector; |
| 20 |
| 21 OS::StrNCpy(buffer, "0", kBufferSize); |
| 22 vector = Vector<char>(buffer_array, strlen(buffer_array)); |
| 23 CHECK_EQ(0.0, Strtod(vector, 1)); |
| 24 CHECK_EQ(0.0, Strtod(vector, 2)); |
| 25 CHECK_EQ(0.0, Strtod(vector, -2)); |
| 26 CHECK_EQ(0.0, Strtod(vector, -999)); |
| 27 CHECK_EQ(0.0, Strtod(vector, +999)); |
| 28 |
| 29 OS::StrNCpy(buffer, "1", kBufferSize); |
| 30 vector = Vector<char>(buffer_array, strlen(buffer_array)); |
| 31 CHECK_EQ(1.0, Strtod(vector, 0)); |
| 32 CHECK_EQ(10.0, Strtod(vector, 1)); |
| 33 CHECK_EQ(100.0, Strtod(vector, 2)); |
| 34 CHECK_EQ(1e20, Strtod(vector, 20)); |
| 35 CHECK_EQ(1e22, Strtod(vector, 22)); |
| 36 CHECK_EQ(1e23, Strtod(vector, 23)); |
| 37 CHECK_EQ(1e35, Strtod(vector, 35)); |
| 38 CHECK_EQ(1e36, Strtod(vector, 36)); |
| 39 CHECK_EQ(1e37, Strtod(vector, 37)); |
| 40 CHECK_EQ(1e-1, Strtod(vector, -1)); |
| 41 CHECK_EQ(1e-2, Strtod(vector, -2)); |
| 42 CHECK_EQ(1e-5, Strtod(vector, -5)); |
| 43 CHECK_EQ(1e-20, Strtod(vector, -20)); |
| 44 CHECK_EQ(1e-22, Strtod(vector, -22)); |
| 45 CHECK_EQ(1e-23, Strtod(vector, -23)); |
| 46 CHECK_EQ(1e-25, Strtod(vector, -25)); |
| 47 CHECK_EQ(1e-39, Strtod(vector, -39)); |
| 48 |
| 49 OS::StrNCpy(buffer, "2", kBufferSize); |
| 50 vector = Vector<char>(buffer_array, strlen(buffer_array)); |
| 51 CHECK_EQ(2.0, Strtod(vector, 0)); |
| 52 CHECK_EQ(20.0, Strtod(vector, 1)); |
| 53 CHECK_EQ(200.0, Strtod(vector, 2)); |
| 54 CHECK_EQ(2e20, Strtod(vector, 20)); |
| 55 CHECK_EQ(2e22, Strtod(vector, 22)); |
| 56 CHECK_EQ(2e23, Strtod(vector, 23)); |
| 57 CHECK_EQ(2e35, Strtod(vector, 35)); |
| 58 CHECK_EQ(2e36, Strtod(vector, 36)); |
| 59 CHECK_EQ(2e37, Strtod(vector, 37)); |
| 60 CHECK_EQ(2e-1, Strtod(vector, -1)); |
| 61 CHECK_EQ(2e-2, Strtod(vector, -2)); |
| 62 CHECK_EQ(2e-5, Strtod(vector, -5)); |
| 63 CHECK_EQ(2e-20, Strtod(vector, -20)); |
| 64 CHECK_EQ(2e-22, Strtod(vector, -22)); |
| 65 CHECK_EQ(2e-23, Strtod(vector, -23)); |
| 66 CHECK_EQ(2e-25, Strtod(vector, -25)); |
| 67 CHECK_EQ(2e-39, Strtod(vector, -39)); |
| 68 |
| 69 OS::StrNCpy(buffer, "9", kBufferSize); |
| 70 vector = Vector<char>(buffer_array, strlen(buffer_array)); |
| 71 CHECK_EQ(9.0, Strtod(vector, 0)); |
| 72 CHECK_EQ(90.0, Strtod(vector, 1)); |
| 73 CHECK_EQ(900.0, Strtod(vector, 2)); |
| 74 CHECK_EQ(9e20, Strtod(vector, 20)); |
| 75 CHECK_EQ(9e22, Strtod(vector, 22)); |
| 76 CHECK_EQ(9e23, Strtod(vector, 23)); |
| 77 CHECK_EQ(9e35, Strtod(vector, 35)); |
| 78 CHECK_EQ(9e36, Strtod(vector, 36)); |
| 79 CHECK_EQ(9e37, Strtod(vector, 37)); |
| 80 CHECK_EQ(9e-1, Strtod(vector, -1)); |
| 81 CHECK_EQ(9e-2, Strtod(vector, -2)); |
| 82 CHECK_EQ(9e-5, Strtod(vector, -5)); |
| 83 CHECK_EQ(9e-20, Strtod(vector, -20)); |
| 84 CHECK_EQ(9e-22, Strtod(vector, -22)); |
| 85 CHECK_EQ(9e-23, Strtod(vector, -23)); |
| 86 CHECK_EQ(9e-25, Strtod(vector, -25)); |
| 87 CHECK_EQ(9e-39, Strtod(vector, -39)); |
| 88 |
| 89 OS::StrNCpy(buffer, "12345", kBufferSize); |
| 90 vector = Vector<char>(buffer_array, strlen(buffer_array)); |
| 91 CHECK_EQ(12345.0, Strtod(vector, 0)); |
| 92 CHECK_EQ(123450.0, Strtod(vector, 1)); |
| 93 CHECK_EQ(1234500.0, Strtod(vector, 2)); |
| 94 CHECK_EQ(12345e20, Strtod(vector, 20)); |
| 95 CHECK_EQ(12345e22, Strtod(vector, 22)); |
| 96 CHECK_EQ(12345e23, Strtod(vector, 23)); |
| 97 CHECK_EQ(12345e30, Strtod(vector, 30)); |
| 98 CHECK_EQ(12345e31, Strtod(vector, 31)); |
| 99 CHECK_EQ(12345e32, Strtod(vector, 32)); |
| 100 CHECK_EQ(12345e35, Strtod(vector, 35)); |
| 101 CHECK_EQ(12345e36, Strtod(vector, 36)); |
| 102 CHECK_EQ(12345e37, Strtod(vector, 37)); |
| 103 CHECK_EQ(12345e-1, Strtod(vector, -1)); |
| 104 CHECK_EQ(12345e-2, Strtod(vector, -2)); |
| 105 CHECK_EQ(12345e-5, Strtod(vector, -5)); |
| 106 CHECK_EQ(12345e-20, Strtod(vector, -20)); |
| 107 CHECK_EQ(12345e-22, Strtod(vector, -22)); |
| 108 CHECK_EQ(12345e-23, Strtod(vector, -23)); |
| 109 CHECK_EQ(12345e-25, Strtod(vector, -25)); |
| 110 CHECK_EQ(12345e-39, Strtod(vector, -39)); |
| 111 |
| 112 OS::StrNCpy(buffer, "12345678901234", kBufferSize); |
| 113 vector = Vector<char>(buffer_array, strlen(buffer_array)); |
| 114 CHECK_EQ(12345678901234.0, Strtod(vector, 0)); |
| 115 CHECK_EQ(123456789012340.0, Strtod(vector, 1)); |
| 116 CHECK_EQ(1234567890123400.0, Strtod(vector, 2)); |
| 117 CHECK_EQ(12345678901234e20, Strtod(vector, 20)); |
| 118 CHECK_EQ(12345678901234e22, Strtod(vector, 22)); |
| 119 CHECK_EQ(12345678901234e23, Strtod(vector, 23)); |
| 120 CHECK_EQ(12345678901234e30, Strtod(vector, 30)); |
| 121 CHECK_EQ(12345678901234e31, Strtod(vector, 31)); |
| 122 CHECK_EQ(12345678901234e32, Strtod(vector, 32)); |
| 123 CHECK_EQ(12345678901234e35, Strtod(vector, 35)); |
| 124 CHECK_EQ(12345678901234e36, Strtod(vector, 36)); |
| 125 CHECK_EQ(12345678901234e37, Strtod(vector, 37)); |
| 126 CHECK_EQ(12345678901234e-1, Strtod(vector, -1)); |
| 127 CHECK_EQ(12345678901234e-2, Strtod(vector, -2)); |
| 128 CHECK_EQ(12345678901234e-5, Strtod(vector, -5)); |
| 129 CHECK_EQ(12345678901234e-20, Strtod(vector, -20)); |
| 130 CHECK_EQ(12345678901234e-22, Strtod(vector, -22)); |
| 131 CHECK_EQ(12345678901234e-23, Strtod(vector, -23)); |
| 132 CHECK_EQ(12345678901234e-25, Strtod(vector, -25)); |
| 133 CHECK_EQ(12345678901234e-39, Strtod(vector, -39)); |
| 134 |
| 135 OS::StrNCpy(buffer, "123456789012345", kBufferSize); |
| 136 vector = Vector<char>(buffer_array, strlen(buffer_array)); |
| 137 CHECK_EQ(123456789012345.0, Strtod(vector, 0)); |
| 138 CHECK_EQ(1234567890123450.0, Strtod(vector, 1)); |
| 139 CHECK_EQ(12345678901234500.0, Strtod(vector, 2)); |
| 140 CHECK_EQ(123456789012345e20, Strtod(vector, 20)); |
| 141 CHECK_EQ(123456789012345e22, Strtod(vector, 22)); |
| 142 CHECK_EQ(123456789012345e23, Strtod(vector, 23)); |
| 143 CHECK_EQ(123456789012345e35, Strtod(vector, 35)); |
| 144 CHECK_EQ(123456789012345e36, Strtod(vector, 36)); |
| 145 CHECK_EQ(123456789012345e37, Strtod(vector, 37)); |
| 146 CHECK_EQ(123456789012345e39, Strtod(vector, 39)); |
| 147 CHECK_EQ(123456789012345e-1, Strtod(vector, -1)); |
| 148 CHECK_EQ(123456789012345e-2, Strtod(vector, -2)); |
| 149 CHECK_EQ(123456789012345e-5, Strtod(vector, -5)); |
| 150 CHECK_EQ(123456789012345e-20, Strtod(vector, -20)); |
| 151 CHECK_EQ(123456789012345e-22, Strtod(vector, -22)); |
| 152 CHECK_EQ(123456789012345e-23, Strtod(vector, -23)); |
| 153 CHECK_EQ(123456789012345e-25, Strtod(vector, -25)); |
| 154 CHECK_EQ(123456789012345e-39, Strtod(vector, -39)); |
| 155 } |
OLD | NEW |