]>
Commit | Line | Data |
---|---|---|
b37bf2e1 A |
1 | /* The contents of this file are subject to the Netscape Public |
2 | * License Version 1.1 (the "License"); you may not use this file | |
3 | * except in compliance with the License. You may obtain a copy of | |
4 | * the License at http://www.mozilla.org/NPL/ | |
5 | * | |
6 | * Software distributed under the License is distributed on an "AS | |
7 | * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or | |
8 | * implied. See the License for the specific language governing | |
9 | * rights and limitations under the License. | |
10 | * | |
11 | * The Original Code is Mozilla Communicator client code, released March | |
12 | * 31, 1998. | |
13 | * | |
14 | * The Initial Developer of the Original Code is Netscape Communications | |
15 | * Corporation. Portions created by Netscape are | |
16 | * Copyright (C) 1998 Netscape Communications Corporation. All | |
17 | * Rights Reserved. | |
18 | * | |
19 | * Contributor(s): | |
20 | * | |
21 | */ | |
22 | /** | |
23 | File Name: 15.1.2.3.js | |
24 | ECMA Section: 15.1.2.3 Function properties of the global object: | |
25 | parseFloat( string ) | |
26 | ||
27 | Description: The parseFloat function produces a number value dictated | |
28 | by the interpretation of the contents of the string | |
29 | argument defined as a decimal literal. | |
30 | ||
31 | When the parseFloat function is called, the following | |
32 | steps are taken: | |
33 | ||
34 | 1. Call ToString( string ). | |
35 | 2. Remove leading whitespace Result(1). | |
36 | 3. If neither Result(2) nor any prefix of Result(2) | |
37 | satisfies the syntax of a StrDecimalLiteral, | |
38 | return NaN. | |
39 | 4. Compute the longest prefix of Result(2) which might | |
40 | be Resusult(2) itself, that satisfies the syntax of | |
41 | a StrDecimalLiteral | |
42 | 5. Return the number value for the MV of Result(4). | |
43 | ||
44 | Note that parseFloate may interpret only a leading | |
45 | portion of the string as a number value; it ignores any | |
46 | characters that cannot be interpreted as part of the | |
47 | notation of a decimal literal, and no indication is given | |
48 | that such characters were ignored. | |
49 | ||
50 | StrDecimalLiteral:: | |
51 | Infinity | |
52 | DecimalDigits.DecimalDigits opt ExponentPart opt | |
53 | .DecimalDigits ExponentPart opt | |
54 | DecimalDigits ExponentPart opt | |
55 | ||
56 | Author: christine@netscape.com | |
57 | Date: 28 october 1997 | |
58 | ||
59 | */ | |
60 | ||
61 | var SECTION = "15.1.2.3-1"; | |
62 | var VERSION = "ECMA_1"; | |
63 | startTest(); | |
64 | var TITLE = "parseFloat(string)"; | |
65 | var BUGNUMBER= "77391"; | |
66 | ||
67 | writeHeaderToLog( SECTION + " "+ TITLE); | |
68 | ||
69 | var testcases = getTestCases(); | |
70 | ||
71 | test(); | |
72 | ||
73 | ||
74 | function getTestCases() { | |
75 | var array = new Array(); | |
76 | var item = 0; | |
77 | ||
78 | array[item++] = new TestCase( SECTION, "parseFloat.length", 1, parseFloat.length ); | |
79 | ||
80 | array[item++] = new TestCase( SECTION, "parseFloat.length = null; parseFloat.length", 1, eval("parseFloat.length = null; parseFloat.length") ); | |
81 | array[item++] = new TestCase( SECTION, "delete parseFloat.length", false, delete parseFloat.length ); | |
82 | array[item++] = new TestCase( SECTION, "delete parseFloat.length; parseFloat.length", 1, eval("delete parseFloat.length; parseFloat.length") ); | |
83 | array[item++] = new TestCase( SECTION, "var MYPROPS=''; for ( var p in parseFloat ) { MYPROPS += p }; MYPROPS", "", eval("var MYPROPS=''; for ( var p in parseFloat ) { MYPROPS += p }; MYPROPS") ); | |
84 | ||
85 | array[item++] = new TestCase( SECTION, "parseFloat()", Number.NaN, parseFloat() ); | |
86 | array[item++] = new TestCase( SECTION, "parseFloat('')", Number.NaN, parseFloat('') ); | |
87 | ||
88 | array[item++] = new TestCase( SECTION, "parseFloat(' ')", Number.NaN, parseFloat(' ') ); | |
89 | array[item++] = new TestCase( SECTION, "parseFloat(true)", Number.NaN, parseFloat(true) ); | |
90 | array[item++] = new TestCase( SECTION, "parseFloat(false)", Number.NaN, parseFloat(false) ); | |
91 | array[item++] = new TestCase( SECTION, "parseFloat('string')", Number.NaN, parseFloat("string") ); | |
92 | ||
93 | array[item++] = new TestCase( SECTION, "parseFloat(' Infinity')", Infinity, parseFloat("Infinity") ); | |
94 | array[item++] = new TestCase( SECTION, "parseFloat(' Infinity ')", Infinity, parseFloat(' Infinity ') ); | |
95 | ||
96 | array[item++] = new TestCase( SECTION, "parseFloat('Infinity')", Infinity, parseFloat("Infinity") ); | |
97 | array[item++] = new TestCase( SECTION, "parseFloat(Infinity)", Infinity, parseFloat(Infinity) ); | |
98 | ||
99 | ||
100 | array[item++] = new TestCase( SECTION, "parseFloat(' +Infinity')", +Infinity, parseFloat("+Infinity") ); | |
101 | array[item++] = new TestCase( SECTION, "parseFloat(' -Infinity ')", -Infinity, parseFloat(' -Infinity ') ); | |
102 | ||
103 | array[item++] = new TestCase( SECTION, "parseFloat('+Infinity')", +Infinity, parseFloat("+Infinity") ); | |
104 | array[item++] = new TestCase( SECTION, "parseFloat(-Infinity)", -Infinity, parseFloat(-Infinity) ); | |
105 | ||
106 | array[item++] = new TestCase( SECTION, "parseFloat('0')", 0, parseFloat("0") ); | |
107 | array[item++] = new TestCase( SECTION, "parseFloat('-0')", -0, parseFloat("-0") ); | |
108 | array[item++] = new TestCase( SECTION, "parseFloat('+0')", 0, parseFloat("+0") ); | |
109 | ||
110 | array[item++] = new TestCase( SECTION, "parseFloat('1')", 1, parseFloat("1") ); | |
111 | array[item++] = new TestCase( SECTION, "parseFloat('-1')", -1, parseFloat("-1") ); | |
112 | array[item++] = new TestCase( SECTION, "parseFloat('+1')", 1, parseFloat("+1") ); | |
113 | ||
114 | array[item++] = new TestCase( SECTION, "parseFloat('2')", 2, parseFloat("2") ); | |
115 | array[item++] = new TestCase( SECTION, "parseFloat('-2')", -2, parseFloat("-2") ); | |
116 | array[item++] = new TestCase( SECTION, "parseFloat('+2')", 2, parseFloat("+2") ); | |
117 | ||
118 | array[item++] = new TestCase( SECTION, "parseFloat('3')", 3, parseFloat("3") ); | |
119 | array[item++] = new TestCase( SECTION, "parseFloat('-3')", -3, parseFloat("-3") ); | |
120 | array[item++] = new TestCase( SECTION, "parseFloat('+3')", 3, parseFloat("+3") ); | |
121 | ||
122 | array[item++] = new TestCase( SECTION, "parseFloat('4')", 4, parseFloat("4") ); | |
123 | array[item++] = new TestCase( SECTION, "parseFloat('-4')", -4, parseFloat("-4") ); | |
124 | array[item++] = new TestCase( SECTION, "parseFloat('+4')", 4, parseFloat("+4") ); | |
125 | ||
126 | array[item++] = new TestCase( SECTION, "parseFloat('5')", 5, parseFloat("5") ); | |
127 | array[item++] = new TestCase( SECTION, "parseFloat('-5')", -5, parseFloat("-5") ); | |
128 | array[item++] = new TestCase( SECTION, "parseFloat('+5')", 5, parseFloat("+5") ); | |
129 | ||
130 | array[item++] = new TestCase( SECTION, "parseFloat('6')", 6, parseFloat("6") ); | |
131 | array[item++] = new TestCase( SECTION, "parseFloat('-6')", -6, parseFloat("-6") ); | |
132 | array[item++] = new TestCase( SECTION, "parseFloat('+6')", 6, parseFloat("+6") ); | |
133 | ||
134 | array[item++] = new TestCase( SECTION, "parseFloat('7')", 7, parseFloat("7") ); | |
135 | array[item++] = new TestCase( SECTION, "parseFloat('-7')", -7, parseFloat("-7") ); | |
136 | array[item++] = new TestCase( SECTION, "parseFloat('+7')", 7, parseFloat("+7") ); | |
137 | ||
138 | array[item++] = new TestCase( SECTION, "parseFloat('8')", 8, parseFloat("8") ); | |
139 | array[item++] = new TestCase( SECTION, "parseFloat('-8')", -8, parseFloat("-8") ); | |
140 | array[item++] = new TestCase( SECTION, "parseFloat('+8')", 8, parseFloat("+8") ); | |
141 | ||
142 | array[item++] = new TestCase( SECTION, "parseFloat('9')", 9, parseFloat("9") ); | |
143 | array[item++] = new TestCase( SECTION, "parseFloat('-9')", -9, parseFloat("-9") ); | |
144 | array[item++] = new TestCase( SECTION, "parseFloat('+9')", 9, parseFloat("+9") ); | |
145 | ||
146 | array[item++] = new TestCase( SECTION, "parseFloat('3.14159')", 3.14159, parseFloat("3.14159") ); | |
147 | array[item++] = new TestCase( SECTION, "parseFloat('-3.14159')", -3.14159, parseFloat("-3.14159") ); | |
148 | array[item++] = new TestCase( SECTION, "parseFloat('+3.14159')", 3.14159, parseFloat("+3.14159") ); | |
149 | ||
150 | array[item++] = new TestCase( SECTION, "parseFloat('3.')", 3, parseFloat("3.") ); | |
151 | array[item++] = new TestCase( SECTION, "parseFloat('-3.')", -3, parseFloat("-3.") ); | |
152 | array[item++] = new TestCase( SECTION, "parseFloat('+3.')", 3, parseFloat("+3.") ); | |
153 | ||
154 | array[item++] = new TestCase( SECTION, "parseFloat('3.e1')", 30, parseFloat("3.e1") ); | |
155 | array[item++] = new TestCase( SECTION, "parseFloat('-3.e1')", -30, parseFloat("-3.e1") ); | |
156 | array[item++] = new TestCase( SECTION, "parseFloat('+3.e1')", 30, parseFloat("+3.e1") ); | |
157 | ||
158 | array[item++] = new TestCase( SECTION, "parseFloat('3.e+1')", 30, parseFloat("3.e+1") ); | |
159 | array[item++] = new TestCase( SECTION, "parseFloat('-3.e+1')", -30, parseFloat("-3.e+1") ); | |
160 | array[item++] = new TestCase( SECTION, "parseFloat('+3.e+1')", 30, parseFloat("+3.e+1") ); | |
161 | ||
162 | array[item++] = new TestCase( SECTION, "parseFloat('3.e-1')", .30, parseFloat("3.e-1") ); | |
163 | array[item++] = new TestCase( SECTION, "parseFloat('-3.e-1')", -.30, parseFloat("-3.e-1") ); | |
164 | array[item++] = new TestCase( SECTION, "parseFloat('+3.e-1')", .30, parseFloat("+3.e-1") ); | |
165 | ||
166 | // StrDecimalLiteral::: .DecimalDigits ExponentPart opt | |
167 | ||
168 | array[item++] = new TestCase( SECTION, "parseFloat('.00001')", 0.00001, parseFloat(".00001") ); | |
169 | array[item++] = new TestCase( SECTION, "parseFloat('+.00001')", 0.00001, parseFloat("+.00001") ); | |
170 | array[item++] = new TestCase( SECTION, "parseFloat('-0.0001')", -0.00001, parseFloat("-.00001") ); | |
171 | ||
172 | array[item++] = new TestCase( SECTION, "parseFloat('.01e2')", 1, parseFloat(".01e2") ); | |
173 | array[item++] = new TestCase( SECTION, "parseFloat('+.01e2')", 1, parseFloat("+.01e2") ); | |
174 | array[item++] = new TestCase( SECTION, "parseFloat('-.01e2')", -1, parseFloat("-.01e2") ); | |
175 | ||
176 | array[item++] = new TestCase( SECTION, "parseFloat('.01e+2')", 1, parseFloat(".01e+2") ); | |
177 | array[item++] = new TestCase( SECTION, "parseFloat('+.01e+2')", 1, parseFloat("+.01e+2") ); | |
178 | array[item++] = new TestCase( SECTION, "parseFloat('-.01e+2')", -1, parseFloat("-.01e+2") ); | |
179 | ||
180 | array[item++] = new TestCase( SECTION, "parseFloat('.01e-2')", 0.0001, parseFloat(".01e-2") ); | |
181 | array[item++] = new TestCase( SECTION, "parseFloat('+.01e-2')", 0.0001, parseFloat("+.01e-2") ); | |
182 | array[item++] = new TestCase( SECTION, "parseFloat('-.01e-2')", -0.0001, parseFloat("-.01e-2") ); | |
183 | ||
184 | // StrDecimalLiteral::: DecimalDigits ExponentPart opt | |
185 | ||
186 | array[item++] = new TestCase( SECTION, "parseFloat('1234e5')", 123400000, parseFloat("1234e5") ); | |
187 | array[item++] = new TestCase( SECTION, "parseFloat('+1234e5')", 123400000, parseFloat("+1234e5") ); | |
188 | array[item++] = new TestCase( SECTION, "parseFloat('-1234e5')", -123400000, parseFloat("-1234e5") ); | |
189 | ||
190 | array[item++] = new TestCase( SECTION, "parseFloat('1234e+5')", 123400000, parseFloat("1234e+5") ); | |
191 | array[item++] = new TestCase( SECTION, "parseFloat('+1234e+5')", 123400000, parseFloat("+1234e+5") ); | |
192 | array[item++] = new TestCase( SECTION, "parseFloat('-1234e+5')", -123400000, parseFloat("-1234e+5") ); | |
193 | ||
194 | array[item++] = new TestCase( SECTION, "parseFloat('1234e-5')", 0.01234, parseFloat("1234e-5") ); | |
195 | array[item++] = new TestCase( SECTION, "parseFloat('+1234e-5')", 0.01234, parseFloat("+1234e-5") ); | |
196 | array[item++] = new TestCase( SECTION, "parseFloat('-1234e-5')", -0.01234, parseFloat("-1234e-5") ); | |
197 | ||
198 | ||
199 | array[item++] = new TestCase( SECTION, "parseFloat(0)", 0, parseFloat(0) ); | |
200 | array[item++] = new TestCase( SECTION, "parseFloat(-0)", -0, parseFloat(-0) ); | |
201 | ||
202 | array[item++] = new TestCase( SECTION, "parseFloat(1)", 1, parseFloat(1) ); | |
203 | array[item++] = new TestCase( SECTION, "parseFloat(-1)", -1, parseFloat(-1) ); | |
204 | ||
205 | array[item++] = new TestCase( SECTION, "parseFloat(2)", 2, parseFloat(2) ); | |
206 | array[item++] = new TestCase( SECTION, "parseFloat(-2)", -2, parseFloat(-2) ); | |
207 | ||
208 | array[item++] = new TestCase( SECTION, "parseFloat(3)", 3, parseFloat(3) ); | |
209 | array[item++] = new TestCase( SECTION, "parseFloat(-3)", -3, parseFloat(-3) ); | |
210 | ||
211 | array[item++] = new TestCase( SECTION, "parseFloat(4)", 4, parseFloat(4) ); | |
212 | array[item++] = new TestCase( SECTION, "parseFloat(-4)", -4, parseFloat(-4) ); | |
213 | ||
214 | array[item++] = new TestCase( SECTION, "parseFloat(5)", 5, parseFloat(5) ); | |
215 | array[item++] = new TestCase( SECTION, "parseFloat(-5)", -5, parseFloat(-5) ); | |
216 | ||
217 | array[item++] = new TestCase( SECTION, "parseFloat(6)", 6, parseFloat(6) ); | |
218 | array[item++] = new TestCase( SECTION, "parseFloat(-6)", -6, parseFloat(-6) ); | |
219 | ||
220 | array[item++] = new TestCase( SECTION, "parseFloat(7)", 7, parseFloat(7) ); | |
221 | array[item++] = new TestCase( SECTION, "parseFloat(-7)", -7, parseFloat(-7) ); | |
222 | ||
223 | array[item++] = new TestCase( SECTION, "parseFloat(8)", 8, parseFloat(8) ); | |
224 | array[item++] = new TestCase( SECTION, "parseFloat(-8)", -8, parseFloat(-8) ); | |
225 | ||
226 | array[item++] = new TestCase( SECTION, "parseFloat(9)", 9, parseFloat(9) ); | |
227 | array[item++] = new TestCase( SECTION, "parseFloat(-9)", -9, parseFloat(-9) ); | |
228 | ||
229 | array[item++] = new TestCase( SECTION, "parseFloat(3.14159)", 3.14159, parseFloat(3.14159) ); | |
230 | array[item++] = new TestCase( SECTION, "parseFloat(-3.14159)", -3.14159, parseFloat(-3.14159) ); | |
231 | ||
232 | array[item++] = new TestCase( SECTION, "parseFloat(3.)", 3, parseFloat(3.) ); | |
233 | array[item++] = new TestCase( SECTION, "parseFloat(-3.)", -3, parseFloat(-3.) ); | |
234 | ||
235 | array[item++] = new TestCase( SECTION, "parseFloat(3.e1)", 30, parseFloat(3.e1) ); | |
236 | array[item++] = new TestCase( SECTION, "parseFloat(-3.e1)", -30, parseFloat(-3.e1) ); | |
237 | ||
238 | array[item++] = new TestCase( SECTION, "parseFloat(3.e+1)", 30, parseFloat(3.e+1) ); | |
239 | array[item++] = new TestCase( SECTION, "parseFloat(-3.e+1)", -30, parseFloat(-3.e+1) ); | |
240 | ||
241 | array[item++] = new TestCase( SECTION, "parseFloat(3.e-1)", .30, parseFloat(3.e-1) ); | |
242 | array[item++] = new TestCase( SECTION, "parseFloat(-3.e-1)", -.30, parseFloat(-3.e-1) ); | |
243 | ||
244 | ||
245 | array[item++] = new TestCase( SECTION, "parseFloat(3.E1)", 30, parseFloat(3.E1) ); | |
246 | array[item++] = new TestCase( SECTION, "parseFloat(-3.E1)", -30, parseFloat(-3.E1) ); | |
247 | ||
248 | array[item++] = new TestCase( SECTION, "parseFloat(3.E+1)", 30, parseFloat(3.E+1) ); | |
249 | array[item++] = new TestCase( SECTION, "parseFloat(-3.E+1)", -30, parseFloat(-3.E+1) ); | |
250 | ||
251 | array[item++] = new TestCase( SECTION, "parseFloat(3.E-1)", .30, parseFloat(3.E-1) ); | |
252 | array[item++] = new TestCase( SECTION, "parseFloat(-3.E-1)", -.30, parseFloat(-3.E-1) ); | |
253 | ||
254 | // StrDecimalLiteral::: .DecimalDigits ExponentPart opt | |
255 | ||
256 | array[item++] = new TestCase( SECTION, "parseFloat(.00001)", 0.00001, parseFloat(.00001) ); | |
257 | array[item++] = new TestCase( SECTION, "parseFloat(-0.0001)", -0.00001, parseFloat(-.00001) ); | |
258 | ||
259 | array[item++] = new TestCase( SECTION, "parseFloat(.01e2)", 1, parseFloat(.01e2) ); | |
260 | array[item++] = new TestCase( SECTION, "parseFloat(-.01e2)", -1, parseFloat(-.01e2) ); | |
261 | ||
262 | array[item++] = new TestCase( SECTION, "parseFloat(.01e+2)", 1, parseFloat(.01e+2) ); | |
263 | array[item++] = new TestCase( SECTION, "parseFloat(-.01e+2)", -1, parseFloat(-.01e+2) ); | |
264 | ||
265 | array[item++] = new TestCase( SECTION, "parseFloat(.01e-2)", 0.0001, parseFloat(.01e-2) ); | |
266 | array[item++] = new TestCase( SECTION, "parseFloat(-.01e-2)", -0.0001, parseFloat(-.01e-2) ); | |
267 | ||
268 | // StrDecimalLiteral::: DecimalDigits ExponentPart opt | |
269 | ||
270 | array[item++] = new TestCase( SECTION, "parseFloat(1234e5)", 123400000, parseFloat(1234e5) ); | |
271 | array[item++] = new TestCase( SECTION, "parseFloat(-1234e5)", -123400000, parseFloat(-1234e5) ); | |
272 | ||
273 | array[item++] = new TestCase( SECTION, "parseFloat(1234e+5)", 123400000, parseFloat(1234e+5) ); | |
274 | array[item++] = new TestCase( SECTION, "parseFloat(-1234e+5)", -123400000, parseFloat(-1234e+5) ); | |
275 | ||
276 | array[item++] = new TestCase( SECTION, "parseFloat(1234e-5)", 0.01234, parseFloat(1234e-5) ); | |
277 | array[item++] = new TestCase( SECTION, "parseFloat(-1234e-5)", -0.01234, parseFloat(-1234e-5) ); | |
278 | ||
279 | // hex cases should all return 0 (0 is the longest string that satisfies a StringDecimalLiteral) | |
280 | ||
281 | array[item++] = new TestCase( SECTION, "parseFloat('0x0')", 0, parseFloat("0x0")); | |
282 | array[item++] = new TestCase( SECTION, "parseFloat('0x1')", 0, parseFloat("0x1")); | |
283 | array[item++] = new TestCase( SECTION, "parseFloat('0x2')", 0, parseFloat("0x2")); | |
284 | array[item++] = new TestCase( SECTION, "parseFloat('0x3')", 0, parseFloat("0x3")); | |
285 | array[item++] = new TestCase( SECTION, "parseFloat('0x4')", 0, parseFloat("0x4")); | |
286 | array[item++] = new TestCase( SECTION, "parseFloat('0x5')", 0, parseFloat("0x5")); | |
287 | array[item++] = new TestCase( SECTION, "parseFloat('0x6')", 0, parseFloat("0x6")); | |
288 | array[item++] = new TestCase( SECTION, "parseFloat('0x7')", 0, parseFloat("0x7")); | |
289 | array[item++] = new TestCase( SECTION, "parseFloat('0x8')", 0, parseFloat("0x8")); | |
290 | array[item++] = new TestCase( SECTION, "parseFloat('0x9')", 0, parseFloat("0x9")); | |
291 | array[item++] = new TestCase( SECTION, "parseFloat('0xa')", 0, parseFloat("0xa")); | |
292 | array[item++] = new TestCase( SECTION, "parseFloat('0xb')", 0, parseFloat("0xb")); | |
293 | array[item++] = new TestCase( SECTION, "parseFloat('0xc')", 0, parseFloat("0xc")); | |
294 | array[item++] = new TestCase( SECTION, "parseFloat('0xd')", 0, parseFloat("0xd")); | |
295 | array[item++] = new TestCase( SECTION, "parseFloat('0xe')", 0, parseFloat("0xe")); | |
296 | array[item++] = new TestCase( SECTION, "parseFloat('0xf')", 0, parseFloat("0xf")); | |
297 | array[item++] = new TestCase( SECTION, "parseFloat('0xA')", 0, parseFloat("0xA")); | |
298 | array[item++] = new TestCase( SECTION, "parseFloat('0xB')", 0, parseFloat("0xB")); | |
299 | array[item++] = new TestCase( SECTION, "parseFloat('0xC')", 0, parseFloat("0xC")); | |
300 | array[item++] = new TestCase( SECTION, "parseFloat('0xD')", 0, parseFloat("0xD")); | |
301 | array[item++] = new TestCase( SECTION, "parseFloat('0xE')", 0, parseFloat("0xE")); | |
302 | array[item++] = new TestCase( SECTION, "parseFloat('0xF')", 0, parseFloat("0xF")); | |
303 | ||
304 | array[item++] = new TestCase( SECTION, "parseFloat('0X0')", 0, parseFloat("0X0")); | |
305 | array[item++] = new TestCase( SECTION, "parseFloat('0X1')", 0, parseFloat("0X1")); | |
306 | array[item++] = new TestCase( SECTION, "parseFloat('0X2')", 0, parseFloat("0X2")); | |
307 | array[item++] = new TestCase( SECTION, "parseFloat('0X3')", 0, parseFloat("0X3")); | |
308 | array[item++] = new TestCase( SECTION, "parseFloat('0X4')", 0, parseFloat("0X4")); | |
309 | array[item++] = new TestCase( SECTION, "parseFloat('0X5')", 0, parseFloat("0X5")); | |
310 | array[item++] = new TestCase( SECTION, "parseFloat('0X6')", 0, parseFloat("0X6")); | |
311 | array[item++] = new TestCase( SECTION, "parseFloat('0X7')", 0, parseFloat("0X7")); | |
312 | array[item++] = new TestCase( SECTION, "parseFloat('0X8')", 0, parseFloat("0X8")); | |
313 | array[item++] = new TestCase( SECTION, "parseFloat('0X9')", 0, parseFloat("0X9")); | |
314 | array[item++] = new TestCase( SECTION, "parseFloat('0Xa')", 0, parseFloat("0Xa")); | |
315 | array[item++] = new TestCase( SECTION, "parseFloat('0Xb')", 0, parseFloat("0Xb")); | |
316 | array[item++] = new TestCase( SECTION, "parseFloat('0Xc')", 0, parseFloat("0Xc")); | |
317 | array[item++] = new TestCase( SECTION, "parseFloat('0Xd')", 0, parseFloat("0Xd")); | |
318 | array[item++] = new TestCase( SECTION, "parseFloat('0Xe')", 0, parseFloat("0Xe")); | |
319 | array[item++] = new TestCase( SECTION, "parseFloat('0Xf')", 0, parseFloat("0Xf")); | |
320 | array[item++] = new TestCase( SECTION, "parseFloat('0XA')", 0, parseFloat("0XA")); | |
321 | array[item++] = new TestCase( SECTION, "parseFloat('0XB')", 0, parseFloat("0XB")); | |
322 | array[item++] = new TestCase( SECTION, "parseFloat('0XC')", 0, parseFloat("0XC")); | |
323 | array[item++] = new TestCase( SECTION, "parseFloat('0XD')", 0, parseFloat("0XD")); | |
324 | array[item++] = new TestCase( SECTION, "parseFloat('0XE')", 0, parseFloat("0XE")); | |
325 | array[item++] = new TestCase( SECTION, "parseFloat('0XF')", 0, parseFloat("0XF")); | |
326 | array[item++] = new TestCase( SECTION, "parseFloat(' 0XF ')", 0, parseFloat(" 0XF ")); | |
327 | ||
328 | // hex literals should still succeed | |
329 | ||
330 | array[item++] = new TestCase( SECTION, "parseFloat(0x0)", 0, parseFloat(0x0)); | |
331 | array[item++] = new TestCase( SECTION, "parseFloat(0x1)", 1, parseFloat(0x1)); | |
332 | array[item++] = new TestCase( SECTION, "parseFloat(0x2)", 2, parseFloat(0x2)); | |
333 | array[item++] = new TestCase( SECTION, "parseFloat(0x3)", 3, parseFloat(0x3)); | |
334 | array[item++] = new TestCase( SECTION, "parseFloat(0x4)", 4, parseFloat(0x4)); | |
335 | array[item++] = new TestCase( SECTION, "parseFloat(0x5)", 5, parseFloat(0x5)); | |
336 | array[item++] = new TestCase( SECTION, "parseFloat(0x6)", 6, parseFloat(0x6)); | |
337 | array[item++] = new TestCase( SECTION, "parseFloat(0x7)", 7, parseFloat(0x7)); | |
338 | array[item++] = new TestCase( SECTION, "parseFloat(0x8)", 8, parseFloat(0x8)); | |
339 | array[item++] = new TestCase( SECTION, "parseFloat(0x9)", 9, parseFloat(0x9)); | |
340 | array[item++] = new TestCase( SECTION, "parseFloat(0xa)", 10, parseFloat(0xa)); | |
341 | array[item++] = new TestCase( SECTION, "parseFloat(0xb)", 11, parseFloat(0xb)); | |
342 | array[item++] = new TestCase( SECTION, "parseFloat(0xc)", 12, parseFloat(0xc)); | |
343 | array[item++] = new TestCase( SECTION, "parseFloat(0xd)", 13, parseFloat(0xd)); | |
344 | array[item++] = new TestCase( SECTION, "parseFloat(0xe)", 14, parseFloat(0xe)); | |
345 | array[item++] = new TestCase( SECTION, "parseFloat(0xf)", 15, parseFloat(0xf)); | |
346 | array[item++] = new TestCase( SECTION, "parseFloat(0xA)", 10, parseFloat(0xA)); | |
347 | array[item++] = new TestCase( SECTION, "parseFloat(0xB)", 11, parseFloat(0xB)); | |
348 | array[item++] = new TestCase( SECTION, "parseFloat(0xC)", 12, parseFloat(0xC)); | |
349 | array[item++] = new TestCase( SECTION, "parseFloat(0xD)", 13, parseFloat(0xD)); | |
350 | array[item++] = new TestCase( SECTION, "parseFloat(0xE)", 14, parseFloat(0xE)); | |
351 | array[item++] = new TestCase( SECTION, "parseFloat(0xF)", 15, parseFloat(0xF)); | |
352 | ||
353 | array[item++] = new TestCase( SECTION, "parseFloat(0X0)", 0, parseFloat(0X0)); | |
354 | array[item++] = new TestCase( SECTION, "parseFloat(0X1)", 1, parseFloat(0X1)); | |
355 | array[item++] = new TestCase( SECTION, "parseFloat(0X2)", 2, parseFloat(0X2)); | |
356 | array[item++] = new TestCase( SECTION, "parseFloat(0X3)", 3, parseFloat(0X3)); | |
357 | array[item++] = new TestCase( SECTION, "parseFloat(0X4)", 4, parseFloat(0X4)); | |
358 | array[item++] = new TestCase( SECTION, "parseFloat(0X5)", 5, parseFloat(0X5)); | |
359 | array[item++] = new TestCase( SECTION, "parseFloat(0X6)", 6, parseFloat(0X6)); | |
360 | array[item++] = new TestCase( SECTION, "parseFloat(0X7)", 7, parseFloat(0X7)); | |
361 | array[item++] = new TestCase( SECTION, "parseFloat(0X8)", 8, parseFloat(0X8)); | |
362 | array[item++] = new TestCase( SECTION, "parseFloat(0X9)", 9, parseFloat(0X9)); | |
363 | array[item++] = new TestCase( SECTION, "parseFloat(0Xa)", 10, parseFloat(0Xa)); | |
364 | array[item++] = new TestCase( SECTION, "parseFloat(0Xb)", 11, parseFloat(0Xb)); | |
365 | array[item++] = new TestCase( SECTION, "parseFloat(0Xc)", 12, parseFloat(0Xc)); | |
366 | array[item++] = new TestCase( SECTION, "parseFloat(0Xd)", 13, parseFloat(0Xd)); | |
367 | array[item++] = new TestCase( SECTION, "parseFloat(0Xe)", 14, parseFloat(0Xe)); | |
368 | array[item++] = new TestCase( SECTION, "parseFloat(0Xf)", 15, parseFloat(0Xf)); | |
369 | array[item++] = new TestCase( SECTION, "parseFloat(0XA)", 10, parseFloat(0XA)); | |
370 | array[item++] = new TestCase( SECTION, "parseFloat(0XB)", 11, parseFloat(0XB)); | |
371 | array[item++] = new TestCase( SECTION, "parseFloat(0XC)", 12, parseFloat(0XC)); | |
372 | array[item++] = new TestCase( SECTION, "parseFloat(0XD)", 13, parseFloat(0XD)); | |
373 | array[item++] = new TestCase( SECTION, "parseFloat(0XE)", 14, parseFloat(0XE)); | |
374 | array[item++] = new TestCase( SECTION, "parseFloat(0XF)", 15, parseFloat(0XF)); | |
375 | ||
376 | ||
377 | // A StringNumericLiteral may not use octal notation | |
378 | ||
379 | array[item++] = new TestCase( SECTION, "parseFloat('00')", 0, parseFloat("00")); | |
380 | array[item++] = new TestCase( SECTION, "parseFloat('01')", 1, parseFloat("01")); | |
381 | array[item++] = new TestCase( SECTION, "parseFloat('02')", 2, parseFloat("02")); | |
382 | array[item++] = new TestCase( SECTION, "parseFloat('03')", 3, parseFloat("03")); | |
383 | array[item++] = new TestCase( SECTION, "parseFloat('04')", 4, parseFloat("04")); | |
384 | array[item++] = new TestCase( SECTION, "parseFloat('05')", 5, parseFloat("05")); | |
385 | array[item++] = new TestCase( SECTION, "parseFloat('06')", 6, parseFloat("06")); | |
386 | array[item++] = new TestCase( SECTION, "parseFloat('07')", 7, parseFloat("07")); | |
387 | array[item++] = new TestCase( SECTION, "parseFloat('010')", 10, parseFloat("010")); | |
388 | array[item++] = new TestCase( SECTION, "parseFloat('011')", 11, parseFloat("011")); | |
389 | ||
390 | // A StringNumericLIteral may have any number of leading 0 digits | |
391 | ||
392 | array[item++] = new TestCase( SECTION, "parseFloat('001')", 1, parseFloat("001")); | |
393 | array[item++] = new TestCase( SECTION, "parseFloat('0001')", 1, parseFloat("0001")); | |
394 | array[item++] = new TestCase( SECTION, "parseFloat(' 0001 ')", 1, parseFloat(" 0001 ")); | |
395 | ||
396 | // an octal numeric literal should be treated as an octal | |
397 | ||
398 | array[item++] = new TestCase( SECTION, "parseFloat(00)", 0, parseFloat(00)); | |
399 | array[item++] = new TestCase( SECTION, "parseFloat(01)", 1, parseFloat(01)); | |
400 | array[item++] = new TestCase( SECTION, "parseFloat(02)", 2, parseFloat(02)); | |
401 | array[item++] = new TestCase( SECTION, "parseFloat(03)", 3, parseFloat(03)); | |
402 | array[item++] = new TestCase( SECTION, "parseFloat(04)", 4, parseFloat(04)); | |
403 | array[item++] = new TestCase( SECTION, "parseFloat(05)", 5, parseFloat(05)); | |
404 | array[item++] = new TestCase( SECTION, "parseFloat(06)", 6, parseFloat(06)); | |
405 | array[item++] = new TestCase( SECTION, "parseFloat(07)", 7, parseFloat(07)); | |
406 | array[item++] = new TestCase( SECTION, "parseFloat(010)", 8, parseFloat(010)); | |
407 | array[item++] = new TestCase( SECTION, "parseFloat(011)", 9, parseFloat(011)); | |
408 | ||
409 | // A StringNumericLIteral may have any number of leading 0 digits | |
410 | ||
411 | array[item++] = new TestCase( SECTION, "parseFloat(001)", 1, parseFloat(001)); | |
412 | array[item++] = new TestCase( SECTION, "parseFloat(0001)", 1, parseFloat(0001)); | |
413 | ||
414 | // make sure it's reflexive | |
415 | array[item++] = new TestCase( SECTION, "parseFloat(Math.PI)", Math.PI, parseFloat(Math.PI)); | |
416 | array[item++] = new TestCase( SECTION, "parseFloat(Math.LN2)", Math.LN2, parseFloat(Math.LN2)); | |
417 | array[item++] = new TestCase( SECTION, "parseFloat(Math.LN10)", Math.LN10, parseFloat(Math.LN10)); | |
418 | array[item++] = new TestCase( SECTION, "parseFloat(Math.LOG2E)", Math.LOG2E, parseFloat(Math.LOG2E)); | |
419 | array[item++] = new TestCase( SECTION, "parseFloat(Math.LOG10E)", Math.LOG10E, parseFloat(Math.LOG10E)); | |
420 | array[item++] = new TestCase( SECTION, "parseFloat(Math.SQRT2)", Math.SQRT2, parseFloat(Math.SQRT2)); | |
421 | array[item++] = new TestCase( SECTION, "parseFloat(Math.SQRT1_2)", Math.SQRT1_2, parseFloat(Math.SQRT1_2)); | |
422 | ||
423 | array[item++] = new TestCase( SECTION, "parseFloat(Math.PI+'')", Math.PI, parseFloat(Math.PI+'')); | |
424 | array[item++] = new TestCase( SECTION, "parseFloat(Math.LN2+'')", Math.LN2, parseFloat(Math.LN2+'')); | |
425 | array[item++] = new TestCase( SECTION, "parseFloat(Math.LN10+'')", Math.LN10, parseFloat(Math.LN10+'')); | |
426 | array[item++] = new TestCase( SECTION, "parseFloat(Math.LOG2E+'')", Math.LOG2E, parseFloat(Math.LOG2E+'')); | |
427 | array[item++] = new TestCase( SECTION, "parseFloat(Math.LOG10E+'')", Math.LOG10E, parseFloat(Math.LOG10E+'')); | |
428 | array[item++] = new TestCase( SECTION, "parseFloat(Math.SQRT2+'')", Math.SQRT2, parseFloat(Math.SQRT2+'')); | |
429 | array[item++] = new TestCase( SECTION, "parseFloat(Math.SQRT1_2+'')", Math.SQRT1_2, parseFloat(Math.SQRT1_2+'')); | |
430 | ||
431 | return ( array ); | |
432 | } | |
433 | function test() { | |
434 | for ( tc=0; tc < testcases.length; tc++ ) { | |
435 | testcases[tc].passed = writeTestCaseResult( | |
436 | testcases[tc].expect, | |
437 | testcases[tc].actual, | |
438 | testcases[tc].description +" = "+ testcases[tc].actual ); | |
439 | ||
440 | testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; | |
441 | } | |
442 | stopTest(); | |
443 | return ( testcases ); | |
444 | } |