QML_RUNTIME_TESTING should be disabled by default.
[profile/ivi/qtdeclarative.git] / tests / auto / qml / parserstress / tests / ecma / GlobalObject / 15.1.2.3-2.js
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* ***** BEGIN LICENSE BLOCK *****
3  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
4  *
5  * The contents of this file are subject to the Mozilla Public License Version
6  * 1.1 (the "License"); you may not use this file except in compliance with
7  * the License. You may obtain a copy of the License at
8  * http://www.mozilla.org/MPL/
9  *
10  * Software distributed under the License is distributed on an "AS IS" basis,
11  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12  * for the specific language governing rights and limitations under the
13  * License.
14  *
15  * The Original Code is Mozilla Communicator client code, released
16  * March 31, 1998.
17  *
18  * The Initial Developer of the Original Code is
19  * Netscape Communications Corporation.
20  * Portions created by the Initial Developer are Copyright (C) 1998
21  * the Initial Developer. All Rights Reserved.
22  *
23  * Contributor(s):
24  *
25  * Alternatively, the contents of this file may be used under the terms of
26  * either the GNU General Public License Version 2 or later (the "GPL"), or
27  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
28  * in which case the provisions of the GPL or the LGPL are applicable instead
29  * of those above. If you wish to allow use of your version of this file only
30  * under the terms of either the GPL or the LGPL, and not to allow others to
31  * use your version of this file under the terms of the MPL, indicate your
32  * decision by deleting the provisions above and replace them with the notice
33  * and other provisions required by the GPL or the LGPL. If you do not delete
34  * the provisions above, a recipient may use your version of this file under
35  * the terms of any one of the MPL, the GPL or the LGPL.
36  *
37  * ***** END LICENSE BLOCK ***** */
38
39 gTestfile = '15.1.2.3-2.js';
40
41 /**
42    File Name:          15.1.2.3-2.js
43    ECMA Section:       15.1.2.3 Function properties of the global object:
44    parseFloat( string )
45
46    Description:        The parseFloat function produces a number value dictated
47    by the interpretation of the contents of the string
48    argument defined as a decimal literal.
49
50    When the parseFloat function is called, the following
51    steps are taken:
52
53    1.  Call ToString( string ).
54    2.  Remove leading whitespace Result(1).
55    3.  If neither Result(2) nor any prefix of Result(2)
56    satisfies the syntax of a StrDecimalLiteral,
57    return NaN.
58    4.  Compute the longest prefix of Result(2) which might
59    be Resusult(2) itself, that satisfies the syntax of
60    a StrDecimalLiteral
61    5.  Return the number value for the MV of Result(4).
62
63    Note that parseFloate may interpret only a leading
64    portion of the string as a number value; it ignores any
65    characters that cannot be interpreted as part of the
66    notation of a decimal literal, and no indication is given
67    that such characters were ignored.
68
69    StrDecimalLiteral::
70    Infinity
71    DecimalDigits.DecimalDigits opt ExponentPart opt
72    .DecimalDigits ExponentPart opt
73    DecimalDigits ExponentPart opt
74
75    Author:             christine@netscape.com
76    Date:               28 october 1997
77
78 */
79 var SECTION = "15.1.2.3-2";
80 var VERSION = "ECMA_1";
81 startTest();
82
83 var BUGNUMBER="none";
84
85 new TestCase( SECTION, "parseFloat(true)",      Number.NaN,     parseFloat(true) );
86 new TestCase( SECTION, "parseFloat(false)",     Number.NaN,     parseFloat(false) );
87 new TestCase( SECTION, "parseFloat('string')",  Number.NaN,     parseFloat("string") );
88
89 new TestCase( SECTION, "parseFloat('     Infinity')",      Number.POSITIVE_INFINITY,    parseFloat("Infinity") );
90 //     new TestCase( SECTION, "parseFloat(Infinity)",      Number.POSITIVE_INFINITY,    parseFloat(Infinity) );
91
92 new TestCase( SECTION,  "parseFloat('          0')",          0,          parseFloat("          0") );
93 new TestCase( SECTION,  "parseFloat('          -0')",         -0,         parseFloat("          -0") );
94 new TestCase( SECTION,  "parseFloat('          +0')",          0,         parseFloat("          +0") );
95
96 new TestCase( SECTION,  "parseFloat('          1')",          1,          parseFloat("          1") );
97 new TestCase( SECTION,  "parseFloat('          -1')",         -1,         parseFloat("          -1") );
98 new TestCase( SECTION,  "parseFloat('          +1')",          1,         parseFloat("          +1") );
99
100 new TestCase( SECTION,  "parseFloat('          2')",          2,          parseFloat("          2") );
101 new TestCase( SECTION,  "parseFloat('          -2')",         -2,         parseFloat("          -2") );
102 new TestCase( SECTION,  "parseFloat('          +2')",          2,         parseFloat("          +2") );
103
104 new TestCase( SECTION,  "parseFloat('          3')",          3,          parseFloat("          3") );
105 new TestCase( SECTION,  "parseFloat('          -3')",         -3,         parseFloat("          -3") );
106 new TestCase( SECTION,  "parseFloat('          +3')",          3,         parseFloat("          +3") );
107
108 new TestCase( SECTION,  "parseFloat('          4')",          4,          parseFloat("          4") );
109 new TestCase( SECTION,  "parseFloat('          -4')",         -4,         parseFloat("          -4") );
110 new TestCase( SECTION,  "parseFloat('          +4')",          4,         parseFloat("          +4") );
111
112 new TestCase( SECTION,  "parseFloat('          5')",          5,          parseFloat("          5") );
113 new TestCase( SECTION,  "parseFloat('          -5')",         -5,         parseFloat("          -5") );
114 new TestCase( SECTION,  "parseFloat('          +5')",          5,         parseFloat("          +5") );
115
116 new TestCase( SECTION,  "parseFloat('          6')",          6,          parseFloat("          6") );
117 new TestCase( SECTION,  "parseFloat('          -6')",         -6,         parseFloat("          -6") );
118 new TestCase( SECTION,  "parseFloat('          +6')",          6,         parseFloat("          +6") );
119
120 new TestCase( SECTION,  "parseFloat('          7')",          7,          parseFloat("          7") );
121 new TestCase( SECTION,  "parseFloat('          -7')",         -7,         parseFloat("          -7") );
122 new TestCase( SECTION,  "parseFloat('          +7')",          7,         parseFloat("          +7") );
123
124 new TestCase( SECTION,  "parseFloat('          8')",          8,          parseFloat("          8") );
125 new TestCase( SECTION,  "parseFloat('          -8')",         -8,         parseFloat("          -8") );
126 new TestCase( SECTION,  "parseFloat('          +8')",          8,         parseFloat("          +8") );
127
128 new TestCase( SECTION,  "parseFloat('          9')",          9,          parseFloat("          9") );
129 new TestCase( SECTION,  "parseFloat('          -9')",         -9,         parseFloat("          -9") );
130 new TestCase( SECTION,  "parseFloat('          +9')",          9,         parseFloat("          +9") );
131
132 new TestCase( SECTION,  "parseFloat('          3.14159')",    3.14159,    parseFloat("          3.14159") );
133 new TestCase( SECTION,  "parseFloat('          -3.14159')",   -3.14159,   parseFloat("          -3.14159") );
134 new TestCase( SECTION,  "parseFloat('          +3.14159')",   3.14159,    parseFloat("          +3.14159") );
135
136 new TestCase( SECTION,  "parseFloat('          3.')",         3,          parseFloat("          3.") );
137 new TestCase( SECTION,  "parseFloat('          -3.')",        -3,         parseFloat("          -3.") );
138 new TestCase( SECTION,  "parseFloat('          +3.')",        3,          parseFloat("          +3.") );
139
140 new TestCase( SECTION,  "parseFloat('          3.e1')",       30,         parseFloat("          3.e1") );
141 new TestCase( SECTION,  "parseFloat('          -3.e1')",      -30,        parseFloat("          -3.e1") );
142 new TestCase( SECTION,  "parseFloat('          +3.e1')",      30,         parseFloat("          +3.e1") );
143
144 new TestCase( SECTION,  "parseFloat('          3.e+1')",       30,         parseFloat("          3.e+1") );
145 new TestCase( SECTION,  "parseFloat('          -3.e+1')",      -30,        parseFloat("          -3.e+1") );
146 new TestCase( SECTION,  "parseFloat('          +3.e+1')",      30,         parseFloat("          +3.e+1") );
147
148 new TestCase( SECTION,  "parseFloat('          3.e-1')",       .30,         parseFloat("          3.e-1") );
149 new TestCase( SECTION,  "parseFloat('          -3.e-1')",      -.30,        parseFloat("          -3.e-1") );
150 new TestCase( SECTION,  "parseFloat('          +3.e-1')",      .30,         parseFloat("          +3.e-1") );
151
152 // StrDecimalLiteral:::  .DecimalDigits ExponentPart opt
153
154 new TestCase( SECTION,  "parseFloat('          .00001')",     0.00001,    parseFloat("          .00001") );
155 new TestCase( SECTION,  "parseFloat('          +.00001')",    0.00001,    parseFloat("          +.00001") );
156 new TestCase( SECTION,  "parseFloat('          -0.0001')",    -0.00001,   parseFloat("          -.00001") );
157
158 new TestCase( SECTION,  "parseFloat('          .01e2')",      1,          parseFloat("          .01e2") );
159 new TestCase( SECTION,  "parseFloat('          +.01e2')",     1,          parseFloat("          +.01e2") );
160 new TestCase( SECTION,  "parseFloat('          -.01e2')",     -1,         parseFloat("          -.01e2") );
161
162 new TestCase( SECTION,  "parseFloat('          .01e+2')",      1,         parseFloat("          .01e+2") );
163 new TestCase( SECTION,  "parseFloat('          +.01e+2')",     1,         parseFloat("          +.01e+2") );
164 new TestCase( SECTION,  "parseFloat('          -.01e+2')",     -1,        parseFloat("          -.01e+2") );
165
166 new TestCase( SECTION,  "parseFloat('          .01e-2')",      0.0001,    parseFloat("          .01e-2") );
167 new TestCase( SECTION,  "parseFloat('          +.01e-2')",     0.0001,    parseFloat("          +.01e-2") );
168 new TestCase( SECTION,  "parseFloat('          -.01e-2')",     -0.0001,   parseFloat("          -.01e-2") );
169
170 //  StrDecimalLiteral:::    DecimalDigits ExponentPart opt
171
172 new TestCase( SECTION,  "parseFloat('          1234e5')",     123400000,  parseFloat("          1234e5") );
173 new TestCase( SECTION,  "parseFloat('          +1234e5')",    123400000,  parseFloat("          +1234e5") );
174 new TestCase( SECTION,  "parseFloat('          -1234e5')",    -123400000, parseFloat("          -1234e5") );
175
176 new TestCase( SECTION,  "parseFloat('          1234e+5')",    123400000,  parseFloat("          1234e+5") );
177 new TestCase( SECTION,  "parseFloat('          +1234e+5')",   123400000,  parseFloat("          +1234e+5") );
178 new TestCase( SECTION,  "parseFloat('          -1234e+5')",   -123400000, parseFloat("          -1234e+5") );
179
180 new TestCase( SECTION,  "parseFloat('          1234e-5')",     0.01234,  parseFloat("          1234e-5") );
181 new TestCase( SECTION,  "parseFloat('          +1234e-5')",    0.01234,  parseFloat("          +1234e-5") );
182 new TestCase( SECTION,  "parseFloat('          -1234e-5')",    -0.01234, parseFloat("          -1234e-5") );
183
184
185 new TestCase( SECTION,  "parseFloat('          .01E2')",      1,          parseFloat("          .01E2") );
186 new TestCase( SECTION,  "parseFloat('          +.01E2')",     1,          parseFloat("          +.01E2") );
187 new TestCase( SECTION,  "parseFloat('          -.01E2')",     -1,         parseFloat("          -.01E2") );
188
189 new TestCase( SECTION,  "parseFloat('          .01E+2')",      1,         parseFloat("          .01E+2") );
190 new TestCase( SECTION,  "parseFloat('          +.01E+2')",     1,         parseFloat("          +.01E+2") );
191 new TestCase( SECTION,  "parseFloat('          -.01E+2')",     -1,        parseFloat("          -.01E+2") );
192
193 new TestCase( SECTION,  "parseFloat('          .01E-2')",      0.0001,    parseFloat("          .01E-2") );
194 new TestCase( SECTION,  "parseFloat('          +.01E-2')",     0.0001,    parseFloat("          +.01E-2") );
195 new TestCase( SECTION,  "parseFloat('          -.01E-2')",     -0.0001,   parseFloat("          -.01E-2") );
196
197 //  StrDecimalLiteral:::    DecimalDigits ExponentPart opt
198 new TestCase( SECTION,  "parseFloat('          1234E5')",     123400000,  parseFloat("          1234E5") );
199 new TestCase( SECTION,  "parseFloat('          +1234E5')",    123400000,  parseFloat("          +1234E5") );
200 new TestCase( SECTION,  "parseFloat('          -1234E5')",    -123400000, parseFloat("          -1234E5") );
201
202 new TestCase( SECTION,  "parseFloat('          1234E+5')",    123400000,  parseFloat("          1234E+5") );
203 new TestCase( SECTION,  "parseFloat('          +1234E+5')",   123400000,  parseFloat("          +1234E+5") );
204 new TestCase( SECTION,  "parseFloat('          -1234E+5')",   -123400000, parseFloat("          -1234E+5") );
205
206 new TestCase( SECTION,  "parseFloat('          1234E-5')",     0.01234,  parseFloat("          1234E-5") );
207 new TestCase( SECTION,  "parseFloat('          +1234E-5')",    0.01234,  parseFloat("          +1234E-5") );
208 new TestCase( SECTION,  "parseFloat('          -1234E-5')",    -0.01234, parseFloat("          -1234E-5") );
209
210
211 // hex cases should all return NaN
212
213 new TestCase( SECTION,  "parseFloat('          0x0')",        0,         parseFloat("          0x0"));
214 new TestCase( SECTION,  "parseFloat('          0x1')",        0,         parseFloat("          0x1"));
215 new TestCase( SECTION,  "parseFloat('          0x2')",        0,         parseFloat("          0x2"));
216 new TestCase( SECTION,  "parseFloat('          0x3')",        0,         parseFloat("          0x3"));
217 new TestCase( SECTION,  "parseFloat('          0x4')",        0,         parseFloat("          0x4"));
218 new TestCase( SECTION,  "parseFloat('          0x5')",        0,         parseFloat("          0x5"));
219 new TestCase( SECTION,  "parseFloat('          0x6')",        0,         parseFloat("          0x6"));
220 new TestCase( SECTION,  "parseFloat('          0x7')",        0,         parseFloat("          0x7"));
221 new TestCase( SECTION,  "parseFloat('          0x8')",        0,         parseFloat("          0x8"));
222 new TestCase( SECTION,  "parseFloat('          0x9')",        0,         parseFloat("          0x9"));
223 new TestCase( SECTION,  "parseFloat('          0xa')",        0,         parseFloat("          0xa"));
224 new TestCase( SECTION,  "parseFloat('          0xb')",        0,         parseFloat("          0xb"));
225 new TestCase( SECTION,  "parseFloat('          0xc')",        0,         parseFloat("          0xc"));
226 new TestCase( SECTION,  "parseFloat('          0xd')",        0,         parseFloat("          0xd"));
227 new TestCase( SECTION,  "parseFloat('          0xe')",        0,         parseFloat("          0xe"));
228 new TestCase( SECTION,  "parseFloat('          0xf')",        0,         parseFloat("          0xf"));
229 new TestCase( SECTION,  "parseFloat('          0xA')",        0,         parseFloat("          0xA"));
230 new TestCase( SECTION,  "parseFloat('          0xB')",        0,         parseFloat("          0xB"));
231 new TestCase( SECTION,  "parseFloat('          0xC')",        0,         parseFloat("          0xC"));
232 new TestCase( SECTION,  "parseFloat('          0xD')",        0,         parseFloat("          0xD"));
233 new TestCase( SECTION,  "parseFloat('          0xE')",        0,         parseFloat("          0xE"));
234 new TestCase( SECTION,  "parseFloat('          0xF')",        0,         parseFloat("          0xF"));
235
236 new TestCase( SECTION,  "parseFloat('          0X0')",        0,         parseFloat("          0X0"));
237 new TestCase( SECTION,  "parseFloat('          0X1')",        0,         parseFloat("          0X1"));
238 new TestCase( SECTION,  "parseFloat('          0X2')",        0,         parseFloat("          0X2"));
239 new TestCase( SECTION,  "parseFloat('          0X3')",        0,         parseFloat("          0X3"));
240 new TestCase( SECTION,  "parseFloat('          0X4')",        0,         parseFloat("          0X4"));
241 new TestCase( SECTION,  "parseFloat('          0X5')",        0,         parseFloat("          0X5"));
242 new TestCase( SECTION,  "parseFloat('          0X6')",        0,         parseFloat("          0X6"));
243 new TestCase( SECTION,  "parseFloat('          0X7')",        0,         parseFloat("          0X7"));
244 new TestCase( SECTION,  "parseFloat('          0X8')",        0,         parseFloat("          0X8"));
245 new TestCase( SECTION,  "parseFloat('          0X9')",        0,         parseFloat("          0X9"));
246 new TestCase( SECTION,  "parseFloat('          0Xa')",        0,         parseFloat("          0Xa"));
247 new TestCase( SECTION,  "parseFloat('          0Xb')",        0,         parseFloat("          0Xb"));
248 new TestCase( SECTION,  "parseFloat('          0Xc')",        0,         parseFloat("          0Xc"));
249 new TestCase( SECTION,  "parseFloat('          0Xd')",        0,         parseFloat("          0Xd"));
250 new TestCase( SECTION,  "parseFloat('          0Xe')",        0,         parseFloat("          0Xe"));
251 new TestCase( SECTION,  "parseFloat('          0Xf')",        0,         parseFloat("          0Xf"));
252 new TestCase( SECTION,  "parseFloat('          0XA')",        0,         parseFloat("          0XA"));
253 new TestCase( SECTION,  "parseFloat('          0XB')",        0,         parseFloat("          0XB"));
254 new TestCase( SECTION,  "parseFloat('          0XC')",        0,         parseFloat("          0XC"));
255 new TestCase( SECTION,  "parseFloat('          0XD')",        0,         parseFloat("          0XD"));
256 new TestCase( SECTION,  "parseFloat('          0XE')",        0,         parseFloat("          0XE"));
257 new TestCase( SECTION,  "parseFloat('          0XF')",        0,         parseFloat("          0XF"));
258
259 // A StringNumericLiteral may not use octal notation
260
261 new TestCase( SECTION,  "parseFloat('          00')",        0,         parseFloat("          00"));
262 new TestCase( SECTION,  "parseFloat('          01')",        1,         parseFloat("          01"));
263 new TestCase( SECTION,  "parseFloat('          02')",        2,         parseFloat("          02"));
264 new TestCase( SECTION,  "parseFloat('          03')",        3,         parseFloat("          03"));
265 new TestCase( SECTION,  "parseFloat('          04')",        4,         parseFloat("          04"));
266 new TestCase( SECTION,  "parseFloat('          05')",        5,         parseFloat("          05"));
267 new TestCase( SECTION,  "parseFloat('          06')",        6,         parseFloat("          06"));
268 new TestCase( SECTION,  "parseFloat('          07')",        7,         parseFloat("          07"));
269 new TestCase( SECTION,  "parseFloat('          010')",       10,        parseFloat("          010"));
270 new TestCase( SECTION,  "parseFloat('          011')",       11,        parseFloat("          011"));
271
272 // A StringNumericLIteral may have any number of leading 0 digits
273
274 new TestCase( SECTION,  "parseFloat('          001')",        1,         parseFloat("          001"));
275 new TestCase( SECTION,  "parseFloat('          0001')",       1,         parseFloat("          0001"));
276
277 // A StringNumericLIteral may have any number of leading 0 digits
278
279 new TestCase( SECTION,  "parseFloat(001)",        1,         parseFloat(001));
280 new TestCase( SECTION,  "parseFloat(0001)",       1,         parseFloat(0001));
281
282 // make sure it'          s reflexive
283 new TestCase( SECTION,  "parseFloat( '                    '          +Math.PI+'          ')",      Math.PI,        parseFloat( '                    '          +Math.PI+'          '));
284 new TestCase( SECTION,  "parseFloat( '                    '          +Math.LN2+'          ')",     Math.LN2,       parseFloat( '                    '          +Math.LN2+'          '));
285 new TestCase( SECTION,  "parseFloat( '                    '          +Math.LN10+'          ')",    Math.LN10,      parseFloat( '                    '          +Math.LN10+'          '));
286 new TestCase( SECTION,  "parseFloat( '                    '          +Math.LOG2E+'          ')",   Math.LOG2E,     parseFloat( '                    '          +Math.LOG2E+'          '));
287 new TestCase( SECTION,  "parseFloat( '                    '          +Math.LOG10E+'          ')",  Math.LOG10E,    parseFloat( '                    '          +Math.LOG10E+'          '));
288 new TestCase( SECTION,  "parseFloat( '                    '          +Math.SQRT2+'          ')",   Math.SQRT2,     parseFloat( '                    '          +Math.SQRT2+'          '));
289 new TestCase( SECTION,  "parseFloat( '                    '          +Math.SQRT1_2+'          ')", Math.SQRT1_2,   parseFloat( '                    '          +Math.SQRT1_2+'          '));
290
291 test();