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[kBufferSize]; | |
18 Vector<char> vector; | |
19 | |
20 strncpy(buffer, "0", kBufferSize); | |
21 vector = Vector<char>(buffer, strlen(buffer)); | |
22 | |
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 strncpy(buffer, "1", kBufferSize); | |
30 vector = Vector<char>(buffer, strlen(buffer)); | |
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 strncpy(buffer, "2", kBufferSize); | |
50 vector = Vector<char>(buffer, strlen(buffer)); | |
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 strncpy(buffer, "9", kBufferSize); | |
70 vector = Vector<char>(buffer, strlen(buffer)); | |
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 strncpy(buffer, "12345", kBufferSize); | |
90 vector = Vector<char>(buffer, strlen(buffer)); | |
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 strncpy(buffer, "12345678901234", kBufferSize); | |
113 vector = Vector<char>(buffer, strlen(buffer)); | |
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 strncpy(buffer, "123456789012345", kBufferSize); | |
136 vector = Vector<char>(buffer, strlen(buffer)); | |
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 |