]>
git.saurik.com Git - apple/javascriptcore.git/blob - tests/mozilla/ecma/GlobalObject/15.1.2.3-1.js
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/
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.
11 * The Original Code is Mozilla Communicator client code, released March
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
23 File Name: 15.1.2.3.js
24 ECMA Section: 15.1.2.3 Function properties of the global object:
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.
31 When the parseFloat function is called, the following
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,
39 4. Compute the longest prefix of Result(2) which might
40 be Resusult(2) itself, that satisfies the syntax of
42 5. Return the number value for the MV of Result(4).
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.
52 DecimalDigits.DecimalDigits opt ExponentPart opt
53 .DecimalDigits ExponentPart opt
54 DecimalDigits ExponentPart opt
56 Author: christine@netscape.com
61 var SECTION
= "15.1.2.3-1" ;
62 var VERSION
= "ECMA_1" ;
64 var TITLE
= "parseFloat(string)" ;
65 var BUGNUMBER
= "77391" ;
67 writeHeaderToLog ( SECTION
+ " " + TITLE
);
69 var testcases
= getTestCases ();
74 function getTestCases () {
75 var array
= new Array ();
78 array
[ item
++] = new TestCase ( SECTION
, "parseFloat.length" , 1 , parseFloat
. length
);
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" ) );
85 array
[ item
++] = new TestCase ( SECTION
, "parseFloat()" , Number
. NaN
, parseFloat () );
86 array
[ item
++] = new TestCase ( SECTION
, "parseFloat('')" , Number
. NaN
, parseFloat ( '' ) );
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" ) );
93 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(' Infinity')" , Infinity
, parseFloat ( "Infinity" ) );
94 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(' Infinity ')" , Infinity
, parseFloat ( ' Infinity ' ) );
96 array
[ item
++] = new TestCase ( SECTION
, "parseFloat('Infinity')" , Infinity
, parseFloat ( "Infinity" ) );
97 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(Infinity)" , Infinity
, parseFloat ( Infinity
) );
100 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(' +Infinity')" , + Infinity
, parseFloat ( "+Infinity" ) );
101 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(' -Infinity ')" , - Infinity
, parseFloat ( ' -Infinity ' ) );
103 array
[ item
++] = new TestCase ( SECTION
, "parseFloat('+Infinity')" , + Infinity
, parseFloat ( "+Infinity" ) );
104 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(-Infinity)" , - Infinity
, parseFloat (- Infinity
) );
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" ) );
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" ) );
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" ) );
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" ) );
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" ) );
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" ) );
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" ) );
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" ) );
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" ) );
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" ) );
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" ) );
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." ) );
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" ) );
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" ) );
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" ) );
166 // StrDecimalLiteral::: .DecimalDigits ExponentPart opt
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" ) );
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" ) );
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" ) );
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" ) );
184 // StrDecimalLiteral::: DecimalDigits ExponentPart opt
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" ) );
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" ) );
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" ) );
199 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(0)" , 0 , parseFloat ( 0 ) );
200 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(-0)" , - 0 , parseFloat (- 0 ) );
202 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(1)" , 1 , parseFloat ( 1 ) );
203 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(-1)" , - 1 , parseFloat (- 1 ) );
205 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(2)" , 2 , parseFloat ( 2 ) );
206 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(-2)" , - 2 , parseFloat (- 2 ) );
208 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(3)" , 3 , parseFloat ( 3 ) );
209 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(-3)" , - 3 , parseFloat (- 3 ) );
211 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(4)" , 4 , parseFloat ( 4 ) );
212 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(-4)" , - 4 , parseFloat (- 4 ) );
214 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(5)" , 5 , parseFloat ( 5 ) );
215 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(-5)" , - 5 , parseFloat (- 5 ) );
217 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(6)" , 6 , parseFloat ( 6 ) );
218 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(-6)" , - 6 , parseFloat (- 6 ) );
220 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(7)" , 7 , parseFloat ( 7 ) );
221 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(-7)" , - 7 , parseFloat (- 7 ) );
223 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(8)" , 8 , parseFloat ( 8 ) );
224 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(-8)" , - 8 , parseFloat (- 8 ) );
226 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(9)" , 9 , parseFloat ( 9 ) );
227 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(-9)" , - 9 , parseFloat (- 9 ) );
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 ) );
232 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(3.)" , 3 , parseFloat ( 3 .) );
233 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(-3.)" , - 3 , parseFloat (- 3 .) );
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
) );
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 ) );
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 ) );
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
) );
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 ) );
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 ) );
254 // StrDecimalLiteral::: .DecimalDigits ExponentPart opt
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 ) );
259 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(.01e2)" , 1 , parseFloat ( .01 e2
) );
260 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(-.01e2)" , - 1 , parseFloat (- .01 e2
) );
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 ) );
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 ) );
268 // StrDecimalLiteral::: DecimalDigits ExponentPart opt
270 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(1234e5)" , 123400000 , parseFloat ( 1234 e5
) );
271 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(-1234e5)" , - 123400000 , parseFloat (- 1234 e5
) );
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 ) );
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 ) );
279 // hex cases should all return 0 (0 is the longest string that satisfies a StringDecimalLiteral)
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" ));
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 " ));
328 // hex literals should still succeed
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 ));
353 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(0X0)" , 0 , parseFloat ( 0 X0
));
354 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(0X1)" , 1 , parseFloat ( 0 X1
));
355 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(0X2)" , 2 , parseFloat ( 0 X2
));
356 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(0X3)" , 3 , parseFloat ( 0 X3
));
357 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(0X4)" , 4 , parseFloat ( 0 X4
));
358 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(0X5)" , 5 , parseFloat ( 0 X5
));
359 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(0X6)" , 6 , parseFloat ( 0 X6
));
360 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(0X7)" , 7 , parseFloat ( 0 X7
));
361 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(0X8)" , 8 , parseFloat ( 0 X8
));
362 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(0X9)" , 9 , parseFloat ( 0 X9
));
363 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(0Xa)" , 10 , parseFloat ( 0 Xa
));
364 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(0Xb)" , 11 , parseFloat ( 0 Xb
));
365 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(0Xc)" , 12 , parseFloat ( 0 Xc
));
366 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(0Xd)" , 13 , parseFloat ( 0 Xd
));
367 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(0Xe)" , 14 , parseFloat ( 0 Xe
));
368 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(0Xf)" , 15 , parseFloat ( 0 Xf
));
369 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(0XA)" , 10 , parseFloat ( 0 XA
));
370 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(0XB)" , 11 , parseFloat ( 0 XB
));
371 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(0XC)" , 12 , parseFloat ( 0 XC
));
372 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(0XD)" , 13 , parseFloat ( 0 XD
));
373 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(0XE)" , 14 , parseFloat ( 0 XE
));
374 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(0XF)" , 15 , parseFloat ( 0 XF
));
377 // A StringNumericLiteral may not use octal notation
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" ));
390 // A StringNumericLIteral may have any number of leading 0 digits
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 " ));
396 // an octal numeric literal should be treated as an octal
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 ));
409 // A StringNumericLIteral may have any number of leading 0 digits
411 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(001)" , 1 , parseFloat ( 001 ));
412 array
[ item
++] = new TestCase ( SECTION
, "parseFloat(0001)" , 1 , parseFloat ( 0001 ));
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
));
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
+ '' ));
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
);
440 testcases
[ tc
]. reason
+= ( testcases
[ tc
]. passed
) ? "" : "wrong value " ;
443 return ( testcases
);