initial import
[vuplus_webkit] / Source / JavaScriptCore / qt / tests / qscriptvalue / tst_qscriptvalue_generated_totype.cpp
1 /*
2     Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
3
4     This library is free software; you can redistribute it and/or
5     modify it under the terms of the GNU Library General Public
6     License as published by the Free Software Foundation; either
7     version 2 of the License, or (at your option) any later version.
8
9     This library is distributed in the hope that it will be useful,
10     but WITHOUT ANY WARRANTY; without even the implied warranty of
11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12     Library General Public License for more details.
13
14     You should have received a copy of the GNU Library General Public License
15     along with this library; see the file COPYING.LIB.  If not, write to
16     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17     Boston, MA 02110-1301, USA.
18 */
19
20 /****************************************************************************
21 *************** This file has been generated. DO NOT MODIFY! ****************
22 ****************************************************************************/
23
24 #include "tst_qscriptvalue.h"
25
26 static const QString toString_tagArray[] = {
27     "QScriptValue()",
28     "QScriptValue(QScriptValue::UndefinedValue)",
29     "QScriptValue(QScriptValue::NullValue)",
30     "QScriptValue(true)",
31     "QScriptValue(false)",
32     "QScriptValue(int(122))",
33     "QScriptValue(uint(124))",
34     "QScriptValue(0)",
35     "QScriptValue(0.0)",
36     "QScriptValue(123.0)",
37     "QScriptValue(6.37e-8)",
38     "QScriptValue(-6.37e-8)",
39     "QScriptValue(0x43211234)",
40     "QScriptValue(0x10000)",
41     "QScriptValue(0x10001)",
42     "QScriptValue(qSNaN())",
43     "QScriptValue(qQNaN())",
44     "QScriptValue(qInf())",
45     "QScriptValue(-qInf())",
46     "QScriptValue(\"NaN\")",
47     "QScriptValue(\"Infinity\")",
48     "QScriptValue(\"-Infinity\")",
49     "QScriptValue(\"ciao\")",
50     "QScriptValue(QString::fromLatin1(\"ciao\"))",
51     "QScriptValue(QString(\"\"))",
52     "QScriptValue(QString())",
53     "QScriptValue(QString(\"0\"))",
54     "QScriptValue(QString(\"123\"))",
55     "QScriptValue(QString(\"12.4\"))",
56     "QScriptValue(0, QScriptValue::UndefinedValue)",
57     "QScriptValue(0, QScriptValue::NullValue)",
58     "QScriptValue(0, true)",
59     "QScriptValue(0, false)",
60     "QScriptValue(0, int(122))",
61     "QScriptValue(0, uint(124))",
62     "QScriptValue(0, 0)",
63     "QScriptValue(0, 0.0)",
64     "QScriptValue(0, 123.0)",
65     "QScriptValue(0, 6.37e-8)",
66     "QScriptValue(0, -6.37e-8)",
67     "QScriptValue(0, 0x43211234)",
68     "QScriptValue(0, 0x10000)",
69     "QScriptValue(0, 0x10001)",
70     "QScriptValue(0, qSNaN())",
71     "QScriptValue(0, qQNaN())",
72     "QScriptValue(0, qInf())",
73     "QScriptValue(0, -qInf())",
74     "QScriptValue(0, \"NaN\")",
75     "QScriptValue(0, \"Infinity\")",
76     "QScriptValue(0, \"-Infinity\")",
77     "QScriptValue(0, \"ciao\")",
78     "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
79     "QScriptValue(0, QString(\"\"))",
80     "QScriptValue(0, QString())",
81     "QScriptValue(0, QString(\"0\"))",
82     "QScriptValue(0, QString(\"123\"))",
83     "QScriptValue(0, QString(\"12.3\"))",
84     "QScriptValue(engine, QScriptValue::UndefinedValue)",
85     "QScriptValue(engine, QScriptValue::NullValue)",
86     "QScriptValue(engine, true)",
87     "QScriptValue(engine, false)",
88     "QScriptValue(engine, int(122))",
89     "QScriptValue(engine, uint(124))",
90     "QScriptValue(engine, 0)",
91     "QScriptValue(engine, 0.0)",
92     "QScriptValue(engine, 123.0)",
93     "QScriptValue(engine, 6.37e-8)",
94     "QScriptValue(engine, -6.37e-8)",
95     "QScriptValue(engine, 0x43211234)",
96     "QScriptValue(engine, 0x10000)",
97     "QScriptValue(engine, 0x10001)",
98     "QScriptValue(engine, qSNaN())",
99     "QScriptValue(engine, qQNaN())",
100     "QScriptValue(engine, qInf())",
101     "QScriptValue(engine, -qInf())",
102     "QScriptValue(engine, \"NaN\")",
103     "QScriptValue(engine, \"Infinity\")",
104     "QScriptValue(engine, \"-Infinity\")",
105     "QScriptValue(engine, \"ciao\")",
106     "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
107     "QScriptValue(engine, QString(\"\"))",
108     "QScriptValue(engine, QString())",
109     "QScriptValue(engine, QString(\"0\"))",
110     "QScriptValue(engine, QString(\"123\"))",
111     "QScriptValue(engine, QString(\"1.23\"))",
112     "engine->evaluate(\"[]\")",
113     "engine->evaluate(\"{}\")",
114     "engine->evaluate(\"Object.prototype\")",
115     "engine->evaluate(\"Date.prototype\")",
116     "engine->evaluate(\"Array.prototype\")",
117     "engine->evaluate(\"Function.prototype\")",
118     "engine->evaluate(\"Error.prototype\")",
119     "engine->evaluate(\"Object\")",
120     "engine->evaluate(\"Array\")",
121     "engine->evaluate(\"Number\")",
122     "engine->evaluate(\"Function\")",
123     "engine->evaluate(\"(function() { return 1; })\")",
124     "engine->evaluate(\"(function() { return 'ciao'; })\")",
125     "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
126     "engine->evaluate(\"/foo/\")",
127     "engine->evaluate(\"new Object()\")",
128     "engine->evaluate(\"new Array()\")",
129     "engine->evaluate(\"new Error()\")",
130     "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
131     "engine->evaluate(\"Undefined\")",
132     "engine->evaluate(\"Null\")",
133     "engine->evaluate(\"True\")",
134     "engine->evaluate(\"False\")",
135     "engine->evaluate(\"undefined\")",
136     "engine->evaluate(\"null\")",
137     "engine->evaluate(\"true\")",
138     "engine->evaluate(\"false\")",
139     "engine->evaluate(\"122\")",
140     "engine->evaluate(\"124\")",
141     "engine->evaluate(\"0\")",
142     "engine->evaluate(\"0.0\")",
143     "engine->evaluate(\"123.0\")",
144     "engine->evaluate(\"6.37e-8\")",
145     "engine->evaluate(\"-6.37e-8\")",
146     "engine->evaluate(\"0x43211234\")",
147     "engine->evaluate(\"0x10000\")",
148     "engine->evaluate(\"0x10001\")",
149     "engine->evaluate(\"NaN\")",
150     "engine->evaluate(\"Infinity\")",
151     "engine->evaluate(\"-Infinity\")",
152     "engine->evaluate(\"'ciao'\")",
153     "engine->evaluate(\"''\")",
154     "engine->evaluate(\"'0'\")",
155     "engine->evaluate(\"'123'\")",
156     "engine->evaluate(\"'12.4'\")",
157     "engine->nullValue()",
158     "engine->undefinedValue()",
159     "engine->newObject()",
160     "engine->newArray()",
161     "engine->newArray(10)"};
162
163 static const QString toString_valueArray[] = {
164     "", "undefined",
165     "null", "true",
166     "false", "122",
167     "124", "0",
168     "0", "123",
169     "6.37e-8", "-6.37e-8",
170     "1126240820", "65536",
171     "65537", "NaN",
172     "NaN", "Infinity",
173     "-Infinity", "NaN",
174     "Infinity", "-Infinity",
175     "ciao", "ciao",
176     "", "",
177     "0", "123",
178     "12.4", "undefined",
179     "null", "true",
180     "false", "122",
181     "124", "0",
182     "0", "123",
183     "6.37e-8", "-6.37e-8",
184     "1126240820", "65536",
185     "65537", "NaN",
186     "NaN", "Infinity",
187     "-Infinity", "NaN",
188     "Infinity", "-Infinity",
189     "ciao", "ciao",
190     "", "",
191     "0", "123",
192     "12.3", "undefined",
193     "null", "true",
194     "false", "122",
195     "124", "0",
196     "0", "123",
197     "6.37e-8", "-6.37e-8",
198     "1126240820", "65536",
199     "65537", "NaN",
200     "NaN", "Infinity",
201     "-Infinity", "NaN",
202     "Infinity", "-Infinity",
203     "ciao", "ciao",
204     "", "",
205     "0", "123",
206     "1.23", "",
207     "undefined", "[object Object]",
208     "Invalid Date", "",
209     "function () {\n    [native code]\n}", "Error: Unknown error",
210     "function Object() {\n    [native code]\n}", "function Array() {\n    [native code]\n}",
211     "function Number() {\n    [native code]\n}", "function Function() {\n    [native code]\n}",
212     "function () { return 1; }", "function () { return 'ciao'; }",
213     "function () { throw new Error('foo'); }", "/foo/",
214     "[object Object]", "",
215     "Error: Unknown error", "22",
216     "ReferenceError: Can't find variable: Undefined", "ReferenceError: Can't find variable: Null",
217     "ReferenceError: Can't find variable: True", "ReferenceError: Can't find variable: False",
218     "undefined", "null",
219     "true", "false",
220     "122", "124",
221     "0", "0",
222     "123", "6.37e-8",
223     "-6.37e-8", "1126240820",
224     "65536", "65537",
225     "NaN", "Infinity",
226     "-Infinity", "ciao",
227     "", "0",
228     "123", "12.4",
229     "null", "undefined",
230     "[object Object]", "",
231     ",,,,,,,,,"};
232
233 void tst_QScriptValue::toString_data()
234 {
235     QTest::addColumn<QScriptValue>("value");
236     QTest::addColumn<QString>("expected");
237     if (m_engine)
238         delete m_engine;
239     m_engine = new QScriptEngine();
240     QHash<QString, QString> expectedValue;
241     expectedValue.reserve(135);
242     for (uint i = 0; i < 135; ++i)
243         expectedValue.insert(toString_tagArray[i], toString_valueArray[i]);
244     for (uint i = 0; i < 135; ++i) {
245         QPair<QString, QScriptValue> testcase = initScriptValues(i);
246         QTest::newRow(testcase.first.toAscii().constData()) << testcase.second << expectedValue[testcase.first];
247     }
248 }
249
250 void tst_QScriptValue::toString()
251 {
252     QFETCH(QScriptValue, value);
253     QFETCH(QString, expected);
254     QCOMPARE(value.toString(), expected);
255     QCOMPARE(value.toString(), expected);
256 }
257
258 static const QString toNumber_tagArray[] = {
259     "QScriptValue()",
260     "QScriptValue(QScriptValue::UndefinedValue)",
261     "QScriptValue(QScriptValue::NullValue)",
262     "QScriptValue(true)",
263     "QScriptValue(false)",
264     "QScriptValue(int(122))",
265     "QScriptValue(uint(124))",
266     "QScriptValue(0)",
267     "QScriptValue(0.0)",
268     "QScriptValue(123.0)",
269     "QScriptValue(6.37e-8)",
270     "QScriptValue(-6.37e-8)",
271     "QScriptValue(0x43211234)",
272     "QScriptValue(0x10000)",
273     "QScriptValue(0x10001)",
274     "QScriptValue(qSNaN())",
275     "QScriptValue(qQNaN())",
276     "QScriptValue(qInf())",
277     "QScriptValue(-qInf())",
278     "QScriptValue(\"NaN\")",
279     "QScriptValue(\"Infinity\")",
280     "QScriptValue(\"-Infinity\")",
281     "QScriptValue(\"ciao\")",
282     "QScriptValue(QString::fromLatin1(\"ciao\"))",
283     "QScriptValue(QString(\"\"))",
284     "QScriptValue(QString())",
285     "QScriptValue(QString(\"0\"))",
286     "QScriptValue(QString(\"123\"))",
287     "QScriptValue(QString(\"12.4\"))",
288     "QScriptValue(0, QScriptValue::UndefinedValue)",
289     "QScriptValue(0, QScriptValue::NullValue)",
290     "QScriptValue(0, true)",
291     "QScriptValue(0, false)",
292     "QScriptValue(0, int(122))",
293     "QScriptValue(0, uint(124))",
294     "QScriptValue(0, 0)",
295     "QScriptValue(0, 0.0)",
296     "QScriptValue(0, 123.0)",
297     "QScriptValue(0, 6.37e-8)",
298     "QScriptValue(0, -6.37e-8)",
299     "QScriptValue(0, 0x43211234)",
300     "QScriptValue(0, 0x10000)",
301     "QScriptValue(0, 0x10001)",
302     "QScriptValue(0, qSNaN())",
303     "QScriptValue(0, qQNaN())",
304     "QScriptValue(0, qInf())",
305     "QScriptValue(0, -qInf())",
306     "QScriptValue(0, \"NaN\")",
307     "QScriptValue(0, \"Infinity\")",
308     "QScriptValue(0, \"-Infinity\")",
309     "QScriptValue(0, \"ciao\")",
310     "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
311     "QScriptValue(0, QString(\"\"))",
312     "QScriptValue(0, QString())",
313     "QScriptValue(0, QString(\"0\"))",
314     "QScriptValue(0, QString(\"123\"))",
315     "QScriptValue(0, QString(\"12.3\"))",
316     "QScriptValue(engine, QScriptValue::UndefinedValue)",
317     "QScriptValue(engine, QScriptValue::NullValue)",
318     "QScriptValue(engine, true)",
319     "QScriptValue(engine, false)",
320     "QScriptValue(engine, int(122))",
321     "QScriptValue(engine, uint(124))",
322     "QScriptValue(engine, 0)",
323     "QScriptValue(engine, 0.0)",
324     "QScriptValue(engine, 123.0)",
325     "QScriptValue(engine, 6.37e-8)",
326     "QScriptValue(engine, -6.37e-8)",
327     "QScriptValue(engine, 0x43211234)",
328     "QScriptValue(engine, 0x10000)",
329     "QScriptValue(engine, 0x10001)",
330     "QScriptValue(engine, qSNaN())",
331     "QScriptValue(engine, qQNaN())",
332     "QScriptValue(engine, qInf())",
333     "QScriptValue(engine, -qInf())",
334     "QScriptValue(engine, \"NaN\")",
335     "QScriptValue(engine, \"Infinity\")",
336     "QScriptValue(engine, \"-Infinity\")",
337     "QScriptValue(engine, \"ciao\")",
338     "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
339     "QScriptValue(engine, QString(\"\"))",
340     "QScriptValue(engine, QString())",
341     "QScriptValue(engine, QString(\"0\"))",
342     "QScriptValue(engine, QString(\"123\"))",
343     "QScriptValue(engine, QString(\"1.23\"))",
344     "engine->evaluate(\"[]\")",
345     "engine->evaluate(\"{}\")",
346     "engine->evaluate(\"Object.prototype\")",
347     "engine->evaluate(\"Date.prototype\")",
348     "engine->evaluate(\"Array.prototype\")",
349     "engine->evaluate(\"Function.prototype\")",
350     "engine->evaluate(\"Error.prototype\")",
351     "engine->evaluate(\"Object\")",
352     "engine->evaluate(\"Array\")",
353     "engine->evaluate(\"Number\")",
354     "engine->evaluate(\"Function\")",
355     "engine->evaluate(\"(function() { return 1; })\")",
356     "engine->evaluate(\"(function() { return 'ciao'; })\")",
357     "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
358     "engine->evaluate(\"/foo/\")",
359     "engine->evaluate(\"new Object()\")",
360     "engine->evaluate(\"new Array()\")",
361     "engine->evaluate(\"new Error()\")",
362     "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
363     "engine->evaluate(\"Undefined\")",
364     "engine->evaluate(\"Null\")",
365     "engine->evaluate(\"True\")",
366     "engine->evaluate(\"False\")",
367     "engine->evaluate(\"undefined\")",
368     "engine->evaluate(\"null\")",
369     "engine->evaluate(\"true\")",
370     "engine->evaluate(\"false\")",
371     "engine->evaluate(\"122\")",
372     "engine->evaluate(\"124\")",
373     "engine->evaluate(\"0\")",
374     "engine->evaluate(\"0.0\")",
375     "engine->evaluate(\"123.0\")",
376     "engine->evaluate(\"6.37e-8\")",
377     "engine->evaluate(\"-6.37e-8\")",
378     "engine->evaluate(\"0x43211234\")",
379     "engine->evaluate(\"0x10000\")",
380     "engine->evaluate(\"0x10001\")",
381     "engine->evaluate(\"NaN\")",
382     "engine->evaluate(\"Infinity\")",
383     "engine->evaluate(\"-Infinity\")",
384     "engine->evaluate(\"'ciao'\")",
385     "engine->evaluate(\"''\")",
386     "engine->evaluate(\"'0'\")",
387     "engine->evaluate(\"'123'\")",
388     "engine->evaluate(\"'12.4'\")",
389     "engine->nullValue()",
390     "engine->undefinedValue()",
391     "engine->newObject()",
392     "engine->newArray()",
393     "engine->newArray(10)"};
394
395 static const qsreal toNumber_valueArray[] = {
396     0, qQNaN(), 0, 1, 0, 122, 124, 0, 0, 123,
397     6.369999999999999e-08, -6.369999999999999e-08, 1126240820, 65536, 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(),
398     qInf(), qInf(), qQNaN(), qQNaN(), 0, 0, 0, 123, 12.4, qQNaN(),
399     0, 1, 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08,
400     1126240820, 65536, 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(), qInf(), qInf(),
401     qQNaN(), qQNaN(), 0, 0, 0, 123, 12.3, qQNaN(), 0, 1,
402     0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, 65536,
403     65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(), qInf(), qInf(), qQNaN(), qQNaN(),
404     0, 0, 0, 123, 1.23, 0, qQNaN(), qQNaN(), qQNaN(), 0,
405     qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(),
406     qQNaN(), 0, qQNaN(), 22, qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), 0,
407     1, 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08, 1126240820,
408     65536, 65537, qQNaN(), qInf(), qInf(), qQNaN(), 0, 0, 123, 12.4,
409     0, qQNaN(), qQNaN(), 0, qQNaN()};
410
411 void tst_QScriptValue::toNumber_data()
412 {
413     QTest::addColumn<QScriptValue>("value");
414     QTest::addColumn<qsreal>("expected");
415     if (m_engine)
416         delete m_engine;
417     m_engine = new QScriptEngine();
418     QHash<QString, qsreal> expectedValue;
419     expectedValue.reserve(135);
420     for (uint i = 0; i < 135; ++i)
421         expectedValue.insert(toNumber_tagArray[i], toNumber_valueArray[i]);
422     for (uint i = 0; i < 135; ++i) {
423         QPair<QString, QScriptValue> testcase = initScriptValues(i);
424         QTest::newRow(testcase.first.toAscii().constData()) << testcase.second << expectedValue[testcase.first];
425     }
426 }
427
428 void tst_QScriptValue::toNumber()
429 {
430     QFETCH(QScriptValue, value);
431     QFETCH(qsreal, expected);
432     if (qIsNaN(expected)) {
433         QVERIFY(qIsNaN(value.toNumber()));
434         return;
435     }
436     if (qIsInf(expected)) {
437         QVERIFY(qIsInf(value.toNumber()));
438         QVERIFY(qIsInf(value.toNumber()));
439         return;
440     }
441     QCOMPARE(value.toNumber(), expected);
442     QCOMPARE(value.toNumber(), expected);
443 }
444
445 static const QString toBool_tagArray[] = {
446     "QScriptValue()",
447     "QScriptValue(QScriptValue::UndefinedValue)",
448     "QScriptValue(QScriptValue::NullValue)",
449     "QScriptValue(true)",
450     "QScriptValue(false)",
451     "QScriptValue(int(122))",
452     "QScriptValue(uint(124))",
453     "QScriptValue(0)",
454     "QScriptValue(0.0)",
455     "QScriptValue(123.0)",
456     "QScriptValue(6.37e-8)",
457     "QScriptValue(-6.37e-8)",
458     "QScriptValue(0x43211234)",
459     "QScriptValue(0x10000)",
460     "QScriptValue(0x10001)",
461     "QScriptValue(qSNaN())",
462     "QScriptValue(qQNaN())",
463     "QScriptValue(qInf())",
464     "QScriptValue(-qInf())",
465     "QScriptValue(\"NaN\")",
466     "QScriptValue(\"Infinity\")",
467     "QScriptValue(\"-Infinity\")",
468     "QScriptValue(\"ciao\")",
469     "QScriptValue(QString::fromLatin1(\"ciao\"))",
470     "QScriptValue(QString(\"\"))",
471     "QScriptValue(QString())",
472     "QScriptValue(QString(\"0\"))",
473     "QScriptValue(QString(\"123\"))",
474     "QScriptValue(QString(\"12.4\"))",
475     "QScriptValue(0, QScriptValue::UndefinedValue)",
476     "QScriptValue(0, QScriptValue::NullValue)",
477     "QScriptValue(0, true)",
478     "QScriptValue(0, false)",
479     "QScriptValue(0, int(122))",
480     "QScriptValue(0, uint(124))",
481     "QScriptValue(0, 0)",
482     "QScriptValue(0, 0.0)",
483     "QScriptValue(0, 123.0)",
484     "QScriptValue(0, 6.37e-8)",
485     "QScriptValue(0, -6.37e-8)",
486     "QScriptValue(0, 0x43211234)",
487     "QScriptValue(0, 0x10000)",
488     "QScriptValue(0, 0x10001)",
489     "QScriptValue(0, qSNaN())",
490     "QScriptValue(0, qQNaN())",
491     "QScriptValue(0, qInf())",
492     "QScriptValue(0, -qInf())",
493     "QScriptValue(0, \"NaN\")",
494     "QScriptValue(0, \"Infinity\")",
495     "QScriptValue(0, \"-Infinity\")",
496     "QScriptValue(0, \"ciao\")",
497     "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
498     "QScriptValue(0, QString(\"\"))",
499     "QScriptValue(0, QString())",
500     "QScriptValue(0, QString(\"0\"))",
501     "QScriptValue(0, QString(\"123\"))",
502     "QScriptValue(0, QString(\"12.3\"))",
503     "QScriptValue(engine, QScriptValue::UndefinedValue)",
504     "QScriptValue(engine, QScriptValue::NullValue)",
505     "QScriptValue(engine, true)",
506     "QScriptValue(engine, false)",
507     "QScriptValue(engine, int(122))",
508     "QScriptValue(engine, uint(124))",
509     "QScriptValue(engine, 0)",
510     "QScriptValue(engine, 0.0)",
511     "QScriptValue(engine, 123.0)",
512     "QScriptValue(engine, 6.37e-8)",
513     "QScriptValue(engine, -6.37e-8)",
514     "QScriptValue(engine, 0x43211234)",
515     "QScriptValue(engine, 0x10000)",
516     "QScriptValue(engine, 0x10001)",
517     "QScriptValue(engine, qSNaN())",
518     "QScriptValue(engine, qQNaN())",
519     "QScriptValue(engine, qInf())",
520     "QScriptValue(engine, -qInf())",
521     "QScriptValue(engine, \"NaN\")",
522     "QScriptValue(engine, \"Infinity\")",
523     "QScriptValue(engine, \"-Infinity\")",
524     "QScriptValue(engine, \"ciao\")",
525     "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
526     "QScriptValue(engine, QString(\"\"))",
527     "QScriptValue(engine, QString())",
528     "QScriptValue(engine, QString(\"0\"))",
529     "QScriptValue(engine, QString(\"123\"))",
530     "QScriptValue(engine, QString(\"1.23\"))",
531     "engine->evaluate(\"[]\")",
532     "engine->evaluate(\"{}\")",
533     "engine->evaluate(\"Object.prototype\")",
534     "engine->evaluate(\"Date.prototype\")",
535     "engine->evaluate(\"Array.prototype\")",
536     "engine->evaluate(\"Function.prototype\")",
537     "engine->evaluate(\"Error.prototype\")",
538     "engine->evaluate(\"Object\")",
539     "engine->evaluate(\"Array\")",
540     "engine->evaluate(\"Number\")",
541     "engine->evaluate(\"Function\")",
542     "engine->evaluate(\"(function() { return 1; })\")",
543     "engine->evaluate(\"(function() { return 'ciao'; })\")",
544     "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
545     "engine->evaluate(\"/foo/\")",
546     "engine->evaluate(\"new Object()\")",
547     "engine->evaluate(\"new Array()\")",
548     "engine->evaluate(\"new Error()\")",
549     "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
550     "engine->evaluate(\"Undefined\")",
551     "engine->evaluate(\"Null\")",
552     "engine->evaluate(\"True\")",
553     "engine->evaluate(\"False\")",
554     "engine->evaluate(\"undefined\")",
555     "engine->evaluate(\"null\")",
556     "engine->evaluate(\"true\")",
557     "engine->evaluate(\"false\")",
558     "engine->evaluate(\"122\")",
559     "engine->evaluate(\"124\")",
560     "engine->evaluate(\"0\")",
561     "engine->evaluate(\"0.0\")",
562     "engine->evaluate(\"123.0\")",
563     "engine->evaluate(\"6.37e-8\")",
564     "engine->evaluate(\"-6.37e-8\")",
565     "engine->evaluate(\"0x43211234\")",
566     "engine->evaluate(\"0x10000\")",
567     "engine->evaluate(\"0x10001\")",
568     "engine->evaluate(\"NaN\")",
569     "engine->evaluate(\"Infinity\")",
570     "engine->evaluate(\"-Infinity\")",
571     "engine->evaluate(\"'ciao'\")",
572     "engine->evaluate(\"''\")",
573     "engine->evaluate(\"'0'\")",
574     "engine->evaluate(\"'123'\")",
575     "engine->evaluate(\"'12.4'\")",
576     "engine->nullValue()",
577     "engine->undefinedValue()",
578     "engine->newObject()",
579     "engine->newArray()",
580     "engine->newArray(10)"};
581
582 static const bool toBool_valueArray[] = {
583     false, false,
584     false, true,
585     false, true,
586     true, false,
587     false, true,
588     true, true,
589     true, true,
590     true, false,
591     false, true,
592     true, true,
593     true, true,
594     true, true,
595     false, false,
596     true, true,
597     true, false,
598     false, true,
599     false, true,
600     true, false,
601     false, true,
602     true, true,
603     true, true,
604     true, false,
605     false, true,
606     true, true,
607     true, true,
608     true, true,
609     false, false,
610     true, true,
611     true, false,
612     false, true,
613     false, true,
614     true, false,
615     false, true,
616     true, true,
617     true, true,
618     true, false,
619     false, true,
620     true, true,
621     true, true,
622     true, true,
623     false, false,
624     true, true,
625     true, true,
626     false, true,
627     true, true,
628     true, true,
629     true, true,
630     true, true,
631     true, true,
632     true, true,
633     true, true,
634     true, true,
635     true, true,
636     true, true,
637     false, false,
638     true, false,
639     true, true,
640     false, false,
641     true, true,
642     true, true,
643     true, true,
644     false, true,
645     true, true,
646     false, true,
647     true, true,
648     false, false,
649     true, true,
650     true};
651
652 void tst_QScriptValue::toBool_data()
653 {
654     QTest::addColumn<QScriptValue>("value");
655     QTest::addColumn<bool>("expected");
656     if (m_engine)
657         delete m_engine;
658     m_engine = new QScriptEngine();
659     QHash<QString, bool> expectedValue;
660     expectedValue.reserve(135);
661     for (uint i = 0; i < 135; ++i)
662         expectedValue.insert(toBool_tagArray[i], toBool_valueArray[i]);
663     for (uint i = 0; i < 135; ++i) {
664         QPair<QString, QScriptValue> testcase = initScriptValues(i);
665         QTest::newRow(testcase.first.toAscii().constData()) << testcase.second << expectedValue[testcase.first];
666     }
667 }
668
669 void tst_QScriptValue::toBool()
670 {
671     QFETCH(QScriptValue, value);
672     QFETCH(bool, expected);
673     QCOMPARE(value.toBool(), expected);
674     QCOMPARE(value.toBool(), expected);
675 }
676
677 static const QString toBoolean_tagArray[] = {
678     "QScriptValue()",
679     "QScriptValue(QScriptValue::UndefinedValue)",
680     "QScriptValue(QScriptValue::NullValue)",
681     "QScriptValue(true)",
682     "QScriptValue(false)",
683     "QScriptValue(int(122))",
684     "QScriptValue(uint(124))",
685     "QScriptValue(0)",
686     "QScriptValue(0.0)",
687     "QScriptValue(123.0)",
688     "QScriptValue(6.37e-8)",
689     "QScriptValue(-6.37e-8)",
690     "QScriptValue(0x43211234)",
691     "QScriptValue(0x10000)",
692     "QScriptValue(0x10001)",
693     "QScriptValue(qSNaN())",
694     "QScriptValue(qQNaN())",
695     "QScriptValue(qInf())",
696     "QScriptValue(-qInf())",
697     "QScriptValue(\"NaN\")",
698     "QScriptValue(\"Infinity\")",
699     "QScriptValue(\"-Infinity\")",
700     "QScriptValue(\"ciao\")",
701     "QScriptValue(QString::fromLatin1(\"ciao\"))",
702     "QScriptValue(QString(\"\"))",
703     "QScriptValue(QString())",
704     "QScriptValue(QString(\"0\"))",
705     "QScriptValue(QString(\"123\"))",
706     "QScriptValue(QString(\"12.4\"))",
707     "QScriptValue(0, QScriptValue::UndefinedValue)",
708     "QScriptValue(0, QScriptValue::NullValue)",
709     "QScriptValue(0, true)",
710     "QScriptValue(0, false)",
711     "QScriptValue(0, int(122))",
712     "QScriptValue(0, uint(124))",
713     "QScriptValue(0, 0)",
714     "QScriptValue(0, 0.0)",
715     "QScriptValue(0, 123.0)",
716     "QScriptValue(0, 6.37e-8)",
717     "QScriptValue(0, -6.37e-8)",
718     "QScriptValue(0, 0x43211234)",
719     "QScriptValue(0, 0x10000)",
720     "QScriptValue(0, 0x10001)",
721     "QScriptValue(0, qSNaN())",
722     "QScriptValue(0, qQNaN())",
723     "QScriptValue(0, qInf())",
724     "QScriptValue(0, -qInf())",
725     "QScriptValue(0, \"NaN\")",
726     "QScriptValue(0, \"Infinity\")",
727     "QScriptValue(0, \"-Infinity\")",
728     "QScriptValue(0, \"ciao\")",
729     "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
730     "QScriptValue(0, QString(\"\"))",
731     "QScriptValue(0, QString())",
732     "QScriptValue(0, QString(\"0\"))",
733     "QScriptValue(0, QString(\"123\"))",
734     "QScriptValue(0, QString(\"12.3\"))",
735     "QScriptValue(engine, QScriptValue::UndefinedValue)",
736     "QScriptValue(engine, QScriptValue::NullValue)",
737     "QScriptValue(engine, true)",
738     "QScriptValue(engine, false)",
739     "QScriptValue(engine, int(122))",
740     "QScriptValue(engine, uint(124))",
741     "QScriptValue(engine, 0)",
742     "QScriptValue(engine, 0.0)",
743     "QScriptValue(engine, 123.0)",
744     "QScriptValue(engine, 6.37e-8)",
745     "QScriptValue(engine, -6.37e-8)",
746     "QScriptValue(engine, 0x43211234)",
747     "QScriptValue(engine, 0x10000)",
748     "QScriptValue(engine, 0x10001)",
749     "QScriptValue(engine, qSNaN())",
750     "QScriptValue(engine, qQNaN())",
751     "QScriptValue(engine, qInf())",
752     "QScriptValue(engine, -qInf())",
753     "QScriptValue(engine, \"NaN\")",
754     "QScriptValue(engine, \"Infinity\")",
755     "QScriptValue(engine, \"-Infinity\")",
756     "QScriptValue(engine, \"ciao\")",
757     "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
758     "QScriptValue(engine, QString(\"\"))",
759     "QScriptValue(engine, QString())",
760     "QScriptValue(engine, QString(\"0\"))",
761     "QScriptValue(engine, QString(\"123\"))",
762     "QScriptValue(engine, QString(\"1.23\"))",
763     "engine->evaluate(\"[]\")",
764     "engine->evaluate(\"{}\")",
765     "engine->evaluate(\"Object.prototype\")",
766     "engine->evaluate(\"Date.prototype\")",
767     "engine->evaluate(\"Array.prototype\")",
768     "engine->evaluate(\"Function.prototype\")",
769     "engine->evaluate(\"Error.prototype\")",
770     "engine->evaluate(\"Object\")",
771     "engine->evaluate(\"Array\")",
772     "engine->evaluate(\"Number\")",
773     "engine->evaluate(\"Function\")",
774     "engine->evaluate(\"(function() { return 1; })\")",
775     "engine->evaluate(\"(function() { return 'ciao'; })\")",
776     "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
777     "engine->evaluate(\"/foo/\")",
778     "engine->evaluate(\"new Object()\")",
779     "engine->evaluate(\"new Array()\")",
780     "engine->evaluate(\"new Error()\")",
781     "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
782     "engine->evaluate(\"Undefined\")",
783     "engine->evaluate(\"Null\")",
784     "engine->evaluate(\"True\")",
785     "engine->evaluate(\"False\")",
786     "engine->evaluate(\"undefined\")",
787     "engine->evaluate(\"null\")",
788     "engine->evaluate(\"true\")",
789     "engine->evaluate(\"false\")",
790     "engine->evaluate(\"122\")",
791     "engine->evaluate(\"124\")",
792     "engine->evaluate(\"0\")",
793     "engine->evaluate(\"0.0\")",
794     "engine->evaluate(\"123.0\")",
795     "engine->evaluate(\"6.37e-8\")",
796     "engine->evaluate(\"-6.37e-8\")",
797     "engine->evaluate(\"0x43211234\")",
798     "engine->evaluate(\"0x10000\")",
799     "engine->evaluate(\"0x10001\")",
800     "engine->evaluate(\"NaN\")",
801     "engine->evaluate(\"Infinity\")",
802     "engine->evaluate(\"-Infinity\")",
803     "engine->evaluate(\"'ciao'\")",
804     "engine->evaluate(\"''\")",
805     "engine->evaluate(\"'0'\")",
806     "engine->evaluate(\"'123'\")",
807     "engine->evaluate(\"'12.4'\")",
808     "engine->nullValue()",
809     "engine->undefinedValue()",
810     "engine->newObject()",
811     "engine->newArray()",
812     "engine->newArray(10)"};
813
814 static const bool toBoolean_valueArray[] = {
815     false, false,
816     false, true,
817     false, true,
818     true, false,
819     false, true,
820     true, true,
821     true, true,
822     true, false,
823     false, true,
824     true, true,
825     true, true,
826     true, true,
827     false, false,
828     true, true,
829     true, false,
830     false, true,
831     false, true,
832     true, false,
833     false, true,
834     true, true,
835     true, true,
836     true, false,
837     false, true,
838     true, true,
839     true, true,
840     true, true,
841     false, false,
842     true, true,
843     true, false,
844     false, true,
845     false, true,
846     true, false,
847     false, true,
848     true, true,
849     true, true,
850     true, false,
851     false, true,
852     true, true,
853     true, true,
854     true, true,
855     false, false,
856     true, true,
857     true, true,
858     false, true,
859     true, true,
860     true, true,
861     true, true,
862     true, true,
863     true, true,
864     true, true,
865     true, true,
866     true, true,
867     true, true,
868     true, true,
869     false, false,
870     true, false,
871     true, true,
872     false, false,
873     true, true,
874     true, true,
875     true, true,
876     false, true,
877     true, true,
878     false, true,
879     true, true,
880     false, false,
881     true, true,
882     true};
883
884 void tst_QScriptValue::toBoolean_data()
885 {
886     QTest::addColumn<QScriptValue>("value");
887     QTest::addColumn<bool>("expected");
888     if (m_engine)
889         delete m_engine;
890     m_engine = new QScriptEngine();
891     QHash<QString, bool> expectedValue;
892     expectedValue.reserve(135);
893     for (uint i = 0; i < 135; ++i)
894         expectedValue.insert(toBoolean_tagArray[i], toBoolean_valueArray[i]);
895     for (uint i = 0; i < 135; ++i) {
896         QPair<QString, QScriptValue> testcase = initScriptValues(i);
897         QTest::newRow(testcase.first.toAscii().constData()) << testcase.second << expectedValue[testcase.first];
898     }
899 }
900
901 void tst_QScriptValue::toBoolean()
902 {
903     QFETCH(QScriptValue, value);
904     QFETCH(bool, expected);
905     QCOMPARE(value.toBoolean(), expected);
906     QCOMPARE(value.toBoolean(), expected);
907 }
908
909 static const QString toInteger_tagArray[] = {
910     "QScriptValue()",
911     "QScriptValue(QScriptValue::UndefinedValue)",
912     "QScriptValue(QScriptValue::NullValue)",
913     "QScriptValue(true)",
914     "QScriptValue(false)",
915     "QScriptValue(int(122))",
916     "QScriptValue(uint(124))",
917     "QScriptValue(0)",
918     "QScriptValue(0.0)",
919     "QScriptValue(123.0)",
920     "QScriptValue(6.37e-8)",
921     "QScriptValue(-6.37e-8)",
922     "QScriptValue(0x43211234)",
923     "QScriptValue(0x10000)",
924     "QScriptValue(0x10001)",
925     "QScriptValue(qSNaN())",
926     "QScriptValue(qQNaN())",
927     "QScriptValue(qInf())",
928     "QScriptValue(-qInf())",
929     "QScriptValue(\"NaN\")",
930     "QScriptValue(\"Infinity\")",
931     "QScriptValue(\"-Infinity\")",
932     "QScriptValue(\"ciao\")",
933     "QScriptValue(QString::fromLatin1(\"ciao\"))",
934     "QScriptValue(QString(\"\"))",
935     "QScriptValue(QString())",
936     "QScriptValue(QString(\"0\"))",
937     "QScriptValue(QString(\"123\"))",
938     "QScriptValue(QString(\"12.4\"))",
939     "QScriptValue(0, QScriptValue::UndefinedValue)",
940     "QScriptValue(0, QScriptValue::NullValue)",
941     "QScriptValue(0, true)",
942     "QScriptValue(0, false)",
943     "QScriptValue(0, int(122))",
944     "QScriptValue(0, uint(124))",
945     "QScriptValue(0, 0)",
946     "QScriptValue(0, 0.0)",
947     "QScriptValue(0, 123.0)",
948     "QScriptValue(0, 6.37e-8)",
949     "QScriptValue(0, -6.37e-8)",
950     "QScriptValue(0, 0x43211234)",
951     "QScriptValue(0, 0x10000)",
952     "QScriptValue(0, 0x10001)",
953     "QScriptValue(0, qSNaN())",
954     "QScriptValue(0, qQNaN())",
955     "QScriptValue(0, qInf())",
956     "QScriptValue(0, -qInf())",
957     "QScriptValue(0, \"NaN\")",
958     "QScriptValue(0, \"Infinity\")",
959     "QScriptValue(0, \"-Infinity\")",
960     "QScriptValue(0, \"ciao\")",
961     "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
962     "QScriptValue(0, QString(\"\"))",
963     "QScriptValue(0, QString())",
964     "QScriptValue(0, QString(\"0\"))",
965     "QScriptValue(0, QString(\"123\"))",
966     "QScriptValue(0, QString(\"12.3\"))",
967     "QScriptValue(engine, QScriptValue::UndefinedValue)",
968     "QScriptValue(engine, QScriptValue::NullValue)",
969     "QScriptValue(engine, true)",
970     "QScriptValue(engine, false)",
971     "QScriptValue(engine, int(122))",
972     "QScriptValue(engine, uint(124))",
973     "QScriptValue(engine, 0)",
974     "QScriptValue(engine, 0.0)",
975     "QScriptValue(engine, 123.0)",
976     "QScriptValue(engine, 6.37e-8)",
977     "QScriptValue(engine, -6.37e-8)",
978     "QScriptValue(engine, 0x43211234)",
979     "QScriptValue(engine, 0x10000)",
980     "QScriptValue(engine, 0x10001)",
981     "QScriptValue(engine, qSNaN())",
982     "QScriptValue(engine, qQNaN())",
983     "QScriptValue(engine, qInf())",
984     "QScriptValue(engine, -qInf())",
985     "QScriptValue(engine, \"NaN\")",
986     "QScriptValue(engine, \"Infinity\")",
987     "QScriptValue(engine, \"-Infinity\")",
988     "QScriptValue(engine, \"ciao\")",
989     "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
990     "QScriptValue(engine, QString(\"\"))",
991     "QScriptValue(engine, QString())",
992     "QScriptValue(engine, QString(\"0\"))",
993     "QScriptValue(engine, QString(\"123\"))",
994     "QScriptValue(engine, QString(\"1.23\"))",
995     "engine->evaluate(\"[]\")",
996     "engine->evaluate(\"{}\")",
997     "engine->evaluate(\"Object.prototype\")",
998     "engine->evaluate(\"Date.prototype\")",
999     "engine->evaluate(\"Array.prototype\")",
1000     "engine->evaluate(\"Function.prototype\")",
1001     "engine->evaluate(\"Error.prototype\")",
1002     "engine->evaluate(\"Object\")",
1003     "engine->evaluate(\"Array\")",
1004     "engine->evaluate(\"Number\")",
1005     "engine->evaluate(\"Function\")",
1006     "engine->evaluate(\"(function() { return 1; })\")",
1007     "engine->evaluate(\"(function() { return 'ciao'; })\")",
1008     "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
1009     "engine->evaluate(\"/foo/\")",
1010     "engine->evaluate(\"new Object()\")",
1011     "engine->evaluate(\"new Array()\")",
1012     "engine->evaluate(\"new Error()\")",
1013     "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
1014     "engine->evaluate(\"Undefined\")",
1015     "engine->evaluate(\"Null\")",
1016     "engine->evaluate(\"True\")",
1017     "engine->evaluate(\"False\")",
1018     "engine->evaluate(\"undefined\")",
1019     "engine->evaluate(\"null\")",
1020     "engine->evaluate(\"true\")",
1021     "engine->evaluate(\"false\")",
1022     "engine->evaluate(\"122\")",
1023     "engine->evaluate(\"124\")",
1024     "engine->evaluate(\"0\")",
1025     "engine->evaluate(\"0.0\")",
1026     "engine->evaluate(\"123.0\")",
1027     "engine->evaluate(\"6.37e-8\")",
1028     "engine->evaluate(\"-6.37e-8\")",
1029     "engine->evaluate(\"0x43211234\")",
1030     "engine->evaluate(\"0x10000\")",
1031     "engine->evaluate(\"0x10001\")",
1032     "engine->evaluate(\"NaN\")",
1033     "engine->evaluate(\"Infinity\")",
1034     "engine->evaluate(\"-Infinity\")",
1035     "engine->evaluate(\"'ciao'\")",
1036     "engine->evaluate(\"''\")",
1037     "engine->evaluate(\"'0'\")",
1038     "engine->evaluate(\"'123'\")",
1039     "engine->evaluate(\"'12.4'\")",
1040     "engine->nullValue()",
1041     "engine->undefinedValue()",
1042     "engine->newObject()",
1043     "engine->newArray()",
1044     "engine->newArray(10)"};
1045
1046 static const qsreal toInteger_valueArray[] = {
1047     0, 0, 0, 1, 0, 122, 124, 0, 0, 123,
1048     0, 0, 1126240820, 65536, 65537, 0, 0, qInf(), qInf(), 0,
1049     qInf(), qInf(), 0, 0, 0, 0, 0, 123, 12, 0,
1050     0, 1, 0, 122, 124, 0, 0, 123, 0, 0,
1051     1126240820, 65536, 65537, 0, 0, qInf(), qInf(), 0, qInf(), qInf(),
1052     0, 0, 0, 0, 0, 123, 12, 0, 0, 1,
1053     0, 122, 124, 0, 0, 123, 0, 0, 1126240820, 65536,
1054     65537, 0, 0, qInf(), qInf(), 0, qInf(), qInf(), 0, 0,
1055     0, 0, 0, 123, 1, 0, 0, 0, 0, 0,
1056     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1057     0, 0, 0, 22, 0, 0, 0, 0, 0, 0,
1058     1, 0, 122, 124, 0, 0, 123, 0, 0, 1126240820,
1059     65536, 65537, 0, qInf(), qInf(), 0, 0, 0, 123, 12,
1060     0, 0, 0, 0, 0};
1061
1062 void tst_QScriptValue::toInteger_data()
1063 {
1064     QTest::addColumn<QScriptValue>("value");
1065     QTest::addColumn<qsreal>("expected");
1066     if (m_engine)
1067         delete m_engine;
1068     m_engine = new QScriptEngine();
1069     QHash<QString, qsreal> expectedValue;
1070     expectedValue.reserve(135);
1071     for (uint i = 0; i < 135; ++i)
1072         expectedValue.insert(toInteger_tagArray[i], toInteger_valueArray[i]);
1073     for (uint i = 0; i < 135; ++i) {
1074         QPair<QString, QScriptValue> testcase = initScriptValues(i);
1075         QTest::newRow(testcase.first.toAscii().constData()) << testcase.second << expectedValue[testcase.first];
1076     }
1077 }
1078
1079 void tst_QScriptValue::toInteger()
1080 {
1081     QFETCH(QScriptValue, value);
1082     QFETCH(qsreal, expected);
1083     if (qIsInf(expected)) {
1084         QVERIFY(qIsInf(value.toInteger()));
1085         QVERIFY(qIsInf(value.toInteger()));
1086         return;
1087     }
1088     QCOMPARE(value.toInteger(), expected);
1089     QCOMPARE(value.toInteger(), expected);
1090 }
1091
1092 static const QString toInt32_tagArray[] = {
1093     "QScriptValue()",
1094     "QScriptValue(QScriptValue::UndefinedValue)",
1095     "QScriptValue(QScriptValue::NullValue)",
1096     "QScriptValue(true)",
1097     "QScriptValue(false)",
1098     "QScriptValue(int(122))",
1099     "QScriptValue(uint(124))",
1100     "QScriptValue(0)",
1101     "QScriptValue(0.0)",
1102     "QScriptValue(123.0)",
1103     "QScriptValue(6.37e-8)",
1104     "QScriptValue(-6.37e-8)",
1105     "QScriptValue(0x43211234)",
1106     "QScriptValue(0x10000)",
1107     "QScriptValue(0x10001)",
1108     "QScriptValue(qSNaN())",
1109     "QScriptValue(qQNaN())",
1110     "QScriptValue(qInf())",
1111     "QScriptValue(-qInf())",
1112     "QScriptValue(\"NaN\")",
1113     "QScriptValue(\"Infinity\")",
1114     "QScriptValue(\"-Infinity\")",
1115     "QScriptValue(\"ciao\")",
1116     "QScriptValue(QString::fromLatin1(\"ciao\"))",
1117     "QScriptValue(QString(\"\"))",
1118     "QScriptValue(QString())",
1119     "QScriptValue(QString(\"0\"))",
1120     "QScriptValue(QString(\"123\"))",
1121     "QScriptValue(QString(\"12.4\"))",
1122     "QScriptValue(0, QScriptValue::UndefinedValue)",
1123     "QScriptValue(0, QScriptValue::NullValue)",
1124     "QScriptValue(0, true)",
1125     "QScriptValue(0, false)",
1126     "QScriptValue(0, int(122))",
1127     "QScriptValue(0, uint(124))",
1128     "QScriptValue(0, 0)",
1129     "QScriptValue(0, 0.0)",
1130     "QScriptValue(0, 123.0)",
1131     "QScriptValue(0, 6.37e-8)",
1132     "QScriptValue(0, -6.37e-8)",
1133     "QScriptValue(0, 0x43211234)",
1134     "QScriptValue(0, 0x10000)",
1135     "QScriptValue(0, 0x10001)",
1136     "QScriptValue(0, qSNaN())",
1137     "QScriptValue(0, qQNaN())",
1138     "QScriptValue(0, qInf())",
1139     "QScriptValue(0, -qInf())",
1140     "QScriptValue(0, \"NaN\")",
1141     "QScriptValue(0, \"Infinity\")",
1142     "QScriptValue(0, \"-Infinity\")",
1143     "QScriptValue(0, \"ciao\")",
1144     "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
1145     "QScriptValue(0, QString(\"\"))",
1146     "QScriptValue(0, QString())",
1147     "QScriptValue(0, QString(\"0\"))",
1148     "QScriptValue(0, QString(\"123\"))",
1149     "QScriptValue(0, QString(\"12.3\"))",
1150     "QScriptValue(engine, QScriptValue::UndefinedValue)",
1151     "QScriptValue(engine, QScriptValue::NullValue)",
1152     "QScriptValue(engine, true)",
1153     "QScriptValue(engine, false)",
1154     "QScriptValue(engine, int(122))",
1155     "QScriptValue(engine, uint(124))",
1156     "QScriptValue(engine, 0)",
1157     "QScriptValue(engine, 0.0)",
1158     "QScriptValue(engine, 123.0)",
1159     "QScriptValue(engine, 6.37e-8)",
1160     "QScriptValue(engine, -6.37e-8)",
1161     "QScriptValue(engine, 0x43211234)",
1162     "QScriptValue(engine, 0x10000)",
1163     "QScriptValue(engine, 0x10001)",
1164     "QScriptValue(engine, qSNaN())",
1165     "QScriptValue(engine, qQNaN())",
1166     "QScriptValue(engine, qInf())",
1167     "QScriptValue(engine, -qInf())",
1168     "QScriptValue(engine, \"NaN\")",
1169     "QScriptValue(engine, \"Infinity\")",
1170     "QScriptValue(engine, \"-Infinity\")",
1171     "QScriptValue(engine, \"ciao\")",
1172     "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
1173     "QScriptValue(engine, QString(\"\"))",
1174     "QScriptValue(engine, QString())",
1175     "QScriptValue(engine, QString(\"0\"))",
1176     "QScriptValue(engine, QString(\"123\"))",
1177     "QScriptValue(engine, QString(\"1.23\"))",
1178     "engine->evaluate(\"[]\")",
1179     "engine->evaluate(\"{}\")",
1180     "engine->evaluate(\"Object.prototype\")",
1181     "engine->evaluate(\"Date.prototype\")",
1182     "engine->evaluate(\"Array.prototype\")",
1183     "engine->evaluate(\"Function.prototype\")",
1184     "engine->evaluate(\"Error.prototype\")",
1185     "engine->evaluate(\"Object\")",
1186     "engine->evaluate(\"Array\")",
1187     "engine->evaluate(\"Number\")",
1188     "engine->evaluate(\"Function\")",
1189     "engine->evaluate(\"(function() { return 1; })\")",
1190     "engine->evaluate(\"(function() { return 'ciao'; })\")",
1191     "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
1192     "engine->evaluate(\"/foo/\")",
1193     "engine->evaluate(\"new Object()\")",
1194     "engine->evaluate(\"new Array()\")",
1195     "engine->evaluate(\"new Error()\")",
1196     "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
1197     "engine->evaluate(\"Undefined\")",
1198     "engine->evaluate(\"Null\")",
1199     "engine->evaluate(\"True\")",
1200     "engine->evaluate(\"False\")",
1201     "engine->evaluate(\"undefined\")",
1202     "engine->evaluate(\"null\")",
1203     "engine->evaluate(\"true\")",
1204     "engine->evaluate(\"false\")",
1205     "engine->evaluate(\"122\")",
1206     "engine->evaluate(\"124\")",
1207     "engine->evaluate(\"0\")",
1208     "engine->evaluate(\"0.0\")",
1209     "engine->evaluate(\"123.0\")",
1210     "engine->evaluate(\"6.37e-8\")",
1211     "engine->evaluate(\"-6.37e-8\")",
1212     "engine->evaluate(\"0x43211234\")",
1213     "engine->evaluate(\"0x10000\")",
1214     "engine->evaluate(\"0x10001\")",
1215     "engine->evaluate(\"NaN\")",
1216     "engine->evaluate(\"Infinity\")",
1217     "engine->evaluate(\"-Infinity\")",
1218     "engine->evaluate(\"'ciao'\")",
1219     "engine->evaluate(\"''\")",
1220     "engine->evaluate(\"'0'\")",
1221     "engine->evaluate(\"'123'\")",
1222     "engine->evaluate(\"'12.4'\")",
1223     "engine->nullValue()",
1224     "engine->undefinedValue()",
1225     "engine->newObject()",
1226     "engine->newArray()",
1227     "engine->newArray(10)"};
1228
1229 static const qint32 toInt32_valueArray[] = {
1230     0, 0,
1231     0, 1,
1232     0, 122,
1233     124, 0,
1234     0, 123,
1235     0, 0,
1236     1126240820, 65536,
1237     65537, 0,
1238     0, 0,
1239     0, 0,
1240     0, 0,
1241     0, 0,
1242     0, 0,
1243     0, 123,
1244     12, 0,
1245     0, 1,
1246     0, 122,
1247     124, 0,
1248     0, 123,
1249     0, 0,
1250     1126240820, 65536,
1251     65537, 0,
1252     0, 0,
1253     0, 0,
1254     0, 0,
1255     0, 0,
1256     0, 0,
1257     0, 123,
1258     12, 0,
1259     0, 1,
1260     0, 122,
1261     124, 0,
1262     0, 123,
1263     0, 0,
1264     1126240820, 65536,
1265     65537, 0,
1266     0, 0,
1267     0, 0,
1268     0, 0,
1269     0, 0,
1270     0, 0,
1271     0, 123,
1272     1, 0,
1273     0, 0,
1274     0, 0,
1275     0, 0,
1276     0, 0,
1277     0, 0,
1278     0, 0,
1279     0, 0,
1280     0, 0,
1281     0, 22,
1282     0, 0,
1283     0, 0,
1284     0, 0,
1285     1, 0,
1286     122, 124,
1287     0, 0,
1288     123, 0,
1289     0, 1126240820,
1290     65536, 65537,
1291     0, 0,
1292     0, 0,
1293     0, 0,
1294     123, 12,
1295     0, 0,
1296     0, 0,
1297     0};
1298
1299 void tst_QScriptValue::toInt32_data()
1300 {
1301     QTest::addColumn<QScriptValue>("value");
1302     QTest::addColumn<qint32>("expected");
1303     if (m_engine)
1304         delete m_engine;
1305     m_engine = new QScriptEngine();
1306     QHash<QString, qint32> expectedValue;
1307     expectedValue.reserve(135);
1308     for (uint i = 0; i < 135; ++i)
1309         expectedValue.insert(toInt32_tagArray[i], toInt32_valueArray[i]);
1310     for (uint i = 0; i < 135; ++i) {
1311         QPair<QString, QScriptValue> testcase = initScriptValues(i);
1312         QTest::newRow(testcase.first.toAscii().constData()) << testcase.second << expectedValue[testcase.first];
1313     }
1314 }
1315
1316 void tst_QScriptValue::toInt32()
1317 {
1318     QFETCH(QScriptValue, value);
1319     QFETCH(qint32, expected);
1320     QCOMPARE(value.toInt32(), expected);
1321     QCOMPARE(value.toInt32(), expected);
1322 }
1323
1324 static const QString toUInt32_tagArray[] = {
1325     "QScriptValue()",
1326     "QScriptValue(QScriptValue::UndefinedValue)",
1327     "QScriptValue(QScriptValue::NullValue)",
1328     "QScriptValue(true)",
1329     "QScriptValue(false)",
1330     "QScriptValue(int(122))",
1331     "QScriptValue(uint(124))",
1332     "QScriptValue(0)",
1333     "QScriptValue(0.0)",
1334     "QScriptValue(123.0)",
1335     "QScriptValue(6.37e-8)",
1336     "QScriptValue(-6.37e-8)",
1337     "QScriptValue(0x43211234)",
1338     "QScriptValue(0x10000)",
1339     "QScriptValue(0x10001)",
1340     "QScriptValue(qSNaN())",
1341     "QScriptValue(qQNaN())",
1342     "QScriptValue(qInf())",
1343     "QScriptValue(-qInf())",
1344     "QScriptValue(\"NaN\")",
1345     "QScriptValue(\"Infinity\")",
1346     "QScriptValue(\"-Infinity\")",
1347     "QScriptValue(\"ciao\")",
1348     "QScriptValue(QString::fromLatin1(\"ciao\"))",
1349     "QScriptValue(QString(\"\"))",
1350     "QScriptValue(QString())",
1351     "QScriptValue(QString(\"0\"))",
1352     "QScriptValue(QString(\"123\"))",
1353     "QScriptValue(QString(\"12.4\"))",
1354     "QScriptValue(0, QScriptValue::UndefinedValue)",
1355     "QScriptValue(0, QScriptValue::NullValue)",
1356     "QScriptValue(0, true)",
1357     "QScriptValue(0, false)",
1358     "QScriptValue(0, int(122))",
1359     "QScriptValue(0, uint(124))",
1360     "QScriptValue(0, 0)",
1361     "QScriptValue(0, 0.0)",
1362     "QScriptValue(0, 123.0)",
1363     "QScriptValue(0, 6.37e-8)",
1364     "QScriptValue(0, -6.37e-8)",
1365     "QScriptValue(0, 0x43211234)",
1366     "QScriptValue(0, 0x10000)",
1367     "QScriptValue(0, 0x10001)",
1368     "QScriptValue(0, qSNaN())",
1369     "QScriptValue(0, qQNaN())",
1370     "QScriptValue(0, qInf())",
1371     "QScriptValue(0, -qInf())",
1372     "QScriptValue(0, \"NaN\")",
1373     "QScriptValue(0, \"Infinity\")",
1374     "QScriptValue(0, \"-Infinity\")",
1375     "QScriptValue(0, \"ciao\")",
1376     "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
1377     "QScriptValue(0, QString(\"\"))",
1378     "QScriptValue(0, QString())",
1379     "QScriptValue(0, QString(\"0\"))",
1380     "QScriptValue(0, QString(\"123\"))",
1381     "QScriptValue(0, QString(\"12.3\"))",
1382     "QScriptValue(engine, QScriptValue::UndefinedValue)",
1383     "QScriptValue(engine, QScriptValue::NullValue)",
1384     "QScriptValue(engine, true)",
1385     "QScriptValue(engine, false)",
1386     "QScriptValue(engine, int(122))",
1387     "QScriptValue(engine, uint(124))",
1388     "QScriptValue(engine, 0)",
1389     "QScriptValue(engine, 0.0)",
1390     "QScriptValue(engine, 123.0)",
1391     "QScriptValue(engine, 6.37e-8)",
1392     "QScriptValue(engine, -6.37e-8)",
1393     "QScriptValue(engine, 0x43211234)",
1394     "QScriptValue(engine, 0x10000)",
1395     "QScriptValue(engine, 0x10001)",
1396     "QScriptValue(engine, qSNaN())",
1397     "QScriptValue(engine, qQNaN())",
1398     "QScriptValue(engine, qInf())",
1399     "QScriptValue(engine, -qInf())",
1400     "QScriptValue(engine, \"NaN\")",
1401     "QScriptValue(engine, \"Infinity\")",
1402     "QScriptValue(engine, \"-Infinity\")",
1403     "QScriptValue(engine, \"ciao\")",
1404     "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
1405     "QScriptValue(engine, QString(\"\"))",
1406     "QScriptValue(engine, QString())",
1407     "QScriptValue(engine, QString(\"0\"))",
1408     "QScriptValue(engine, QString(\"123\"))",
1409     "QScriptValue(engine, QString(\"1.23\"))",
1410     "engine->evaluate(\"[]\")",
1411     "engine->evaluate(\"{}\")",
1412     "engine->evaluate(\"Object.prototype\")",
1413     "engine->evaluate(\"Date.prototype\")",
1414     "engine->evaluate(\"Array.prototype\")",
1415     "engine->evaluate(\"Function.prototype\")",
1416     "engine->evaluate(\"Error.prototype\")",
1417     "engine->evaluate(\"Object\")",
1418     "engine->evaluate(\"Array\")",
1419     "engine->evaluate(\"Number\")",
1420     "engine->evaluate(\"Function\")",
1421     "engine->evaluate(\"(function() { return 1; })\")",
1422     "engine->evaluate(\"(function() { return 'ciao'; })\")",
1423     "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
1424     "engine->evaluate(\"/foo/\")",
1425     "engine->evaluate(\"new Object()\")",
1426     "engine->evaluate(\"new Array()\")",
1427     "engine->evaluate(\"new Error()\")",
1428     "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
1429     "engine->evaluate(\"Undefined\")",
1430     "engine->evaluate(\"Null\")",
1431     "engine->evaluate(\"True\")",
1432     "engine->evaluate(\"False\")",
1433     "engine->evaluate(\"undefined\")",
1434     "engine->evaluate(\"null\")",
1435     "engine->evaluate(\"true\")",
1436     "engine->evaluate(\"false\")",
1437     "engine->evaluate(\"122\")",
1438     "engine->evaluate(\"124\")",
1439     "engine->evaluate(\"0\")",
1440     "engine->evaluate(\"0.0\")",
1441     "engine->evaluate(\"123.0\")",
1442     "engine->evaluate(\"6.37e-8\")",
1443     "engine->evaluate(\"-6.37e-8\")",
1444     "engine->evaluate(\"0x43211234\")",
1445     "engine->evaluate(\"0x10000\")",
1446     "engine->evaluate(\"0x10001\")",
1447     "engine->evaluate(\"NaN\")",
1448     "engine->evaluate(\"Infinity\")",
1449     "engine->evaluate(\"-Infinity\")",
1450     "engine->evaluate(\"'ciao'\")",
1451     "engine->evaluate(\"''\")",
1452     "engine->evaluate(\"'0'\")",
1453     "engine->evaluate(\"'123'\")",
1454     "engine->evaluate(\"'12.4'\")",
1455     "engine->nullValue()",
1456     "engine->undefinedValue()",
1457     "engine->newObject()",
1458     "engine->newArray()",
1459     "engine->newArray(10)"};
1460
1461 static const quint32 toUInt32_valueArray[] = {
1462     0, 0,
1463     0, 1,
1464     0, 122,
1465     124, 0,
1466     0, 123,
1467     0, 0,
1468     1126240820, 65536,
1469     65537, 0,
1470     0, 0,
1471     0, 0,
1472     0, 0,
1473     0, 0,
1474     0, 0,
1475     0, 123,
1476     12, 0,
1477     0, 1,
1478     0, 122,
1479     124, 0,
1480     0, 123,
1481     0, 0,
1482     1126240820, 65536,
1483     65537, 0,
1484     0, 0,
1485     0, 0,
1486     0, 0,
1487     0, 0,
1488     0, 0,
1489     0, 123,
1490     12, 0,
1491     0, 1,
1492     0, 122,
1493     124, 0,
1494     0, 123,
1495     0, 0,
1496     1126240820, 65536,
1497     65537, 0,
1498     0, 0,
1499     0, 0,
1500     0, 0,
1501     0, 0,
1502     0, 0,
1503     0, 123,
1504     1, 0,
1505     0, 0,
1506     0, 0,
1507     0, 0,
1508     0, 0,
1509     0, 0,
1510     0, 0,
1511     0, 0,
1512     0, 0,
1513     0, 22,
1514     0, 0,
1515     0, 0,
1516     0, 0,
1517     1, 0,
1518     122, 124,
1519     0, 0,
1520     123, 0,
1521     0, 1126240820,
1522     65536, 65537,
1523     0, 0,
1524     0, 0,
1525     0, 0,
1526     123, 12,
1527     0, 0,
1528     0, 0,
1529     0};
1530
1531 void tst_QScriptValue::toUInt32_data()
1532 {
1533     QTest::addColumn<QScriptValue>("value");
1534     QTest::addColumn<quint32>("expected");
1535     if (m_engine)
1536         delete m_engine;
1537     m_engine = new QScriptEngine();
1538     QHash<QString, quint32> expectedValue;
1539     expectedValue.reserve(135);
1540     for (uint i = 0; i < 135; ++i)
1541         expectedValue.insert(toUInt32_tagArray[i], toUInt32_valueArray[i]);
1542     for (uint i = 0; i < 135; ++i) {
1543         QPair<QString, QScriptValue> testcase = initScriptValues(i);
1544         QTest::newRow(testcase.first.toAscii().constData()) << testcase.second << expectedValue[testcase.first];
1545     }
1546 }
1547
1548 void tst_QScriptValue::toUInt32()
1549 {
1550     QFETCH(QScriptValue, value);
1551     QFETCH(quint32, expected);
1552     QCOMPARE(value.toUInt32(), expected);
1553     QCOMPARE(value.toUInt32(), expected);
1554 }
1555
1556 static const QString toUInt16_tagArray[] = {
1557     "QScriptValue()",
1558     "QScriptValue(QScriptValue::UndefinedValue)",
1559     "QScriptValue(QScriptValue::NullValue)",
1560     "QScriptValue(true)",
1561     "QScriptValue(false)",
1562     "QScriptValue(int(122))",
1563     "QScriptValue(uint(124))",
1564     "QScriptValue(0)",
1565     "QScriptValue(0.0)",
1566     "QScriptValue(123.0)",
1567     "QScriptValue(6.37e-8)",
1568     "QScriptValue(-6.37e-8)",
1569     "QScriptValue(0x43211234)",
1570     "QScriptValue(0x10000)",
1571     "QScriptValue(0x10001)",
1572     "QScriptValue(qSNaN())",
1573     "QScriptValue(qQNaN())",
1574     "QScriptValue(qInf())",
1575     "QScriptValue(-qInf())",
1576     "QScriptValue(\"NaN\")",
1577     "QScriptValue(\"Infinity\")",
1578     "QScriptValue(\"-Infinity\")",
1579     "QScriptValue(\"ciao\")",
1580     "QScriptValue(QString::fromLatin1(\"ciao\"))",
1581     "QScriptValue(QString(\"\"))",
1582     "QScriptValue(QString())",
1583     "QScriptValue(QString(\"0\"))",
1584     "QScriptValue(QString(\"123\"))",
1585     "QScriptValue(QString(\"12.4\"))",
1586     "QScriptValue(0, QScriptValue::UndefinedValue)",
1587     "QScriptValue(0, QScriptValue::NullValue)",
1588     "QScriptValue(0, true)",
1589     "QScriptValue(0, false)",
1590     "QScriptValue(0, int(122))",
1591     "QScriptValue(0, uint(124))",
1592     "QScriptValue(0, 0)",
1593     "QScriptValue(0, 0.0)",
1594     "QScriptValue(0, 123.0)",
1595     "QScriptValue(0, 6.37e-8)",
1596     "QScriptValue(0, -6.37e-8)",
1597     "QScriptValue(0, 0x43211234)",
1598     "QScriptValue(0, 0x10000)",
1599     "QScriptValue(0, 0x10001)",
1600     "QScriptValue(0, qSNaN())",
1601     "QScriptValue(0, qQNaN())",
1602     "QScriptValue(0, qInf())",
1603     "QScriptValue(0, -qInf())",
1604     "QScriptValue(0, \"NaN\")",
1605     "QScriptValue(0, \"Infinity\")",
1606     "QScriptValue(0, \"-Infinity\")",
1607     "QScriptValue(0, \"ciao\")",
1608     "QScriptValue(0, QString::fromLatin1(\"ciao\"))",
1609     "QScriptValue(0, QString(\"\"))",
1610     "QScriptValue(0, QString())",
1611     "QScriptValue(0, QString(\"0\"))",
1612     "QScriptValue(0, QString(\"123\"))",
1613     "QScriptValue(0, QString(\"12.3\"))",
1614     "QScriptValue(engine, QScriptValue::UndefinedValue)",
1615     "QScriptValue(engine, QScriptValue::NullValue)",
1616     "QScriptValue(engine, true)",
1617     "QScriptValue(engine, false)",
1618     "QScriptValue(engine, int(122))",
1619     "QScriptValue(engine, uint(124))",
1620     "QScriptValue(engine, 0)",
1621     "QScriptValue(engine, 0.0)",
1622     "QScriptValue(engine, 123.0)",
1623     "QScriptValue(engine, 6.37e-8)",
1624     "QScriptValue(engine, -6.37e-8)",
1625     "QScriptValue(engine, 0x43211234)",
1626     "QScriptValue(engine, 0x10000)",
1627     "QScriptValue(engine, 0x10001)",
1628     "QScriptValue(engine, qSNaN())",
1629     "QScriptValue(engine, qQNaN())",
1630     "QScriptValue(engine, qInf())",
1631     "QScriptValue(engine, -qInf())",
1632     "QScriptValue(engine, \"NaN\")",
1633     "QScriptValue(engine, \"Infinity\")",
1634     "QScriptValue(engine, \"-Infinity\")",
1635     "QScriptValue(engine, \"ciao\")",
1636     "QScriptValue(engine, QString::fromLatin1(\"ciao\"))",
1637     "QScriptValue(engine, QString(\"\"))",
1638     "QScriptValue(engine, QString())",
1639     "QScriptValue(engine, QString(\"0\"))",
1640     "QScriptValue(engine, QString(\"123\"))",
1641     "QScriptValue(engine, QString(\"1.23\"))",
1642     "engine->evaluate(\"[]\")",
1643     "engine->evaluate(\"{}\")",
1644     "engine->evaluate(\"Object.prototype\")",
1645     "engine->evaluate(\"Date.prototype\")",
1646     "engine->evaluate(\"Array.prototype\")",
1647     "engine->evaluate(\"Function.prototype\")",
1648     "engine->evaluate(\"Error.prototype\")",
1649     "engine->evaluate(\"Object\")",
1650     "engine->evaluate(\"Array\")",
1651     "engine->evaluate(\"Number\")",
1652     "engine->evaluate(\"Function\")",
1653     "engine->evaluate(\"(function() { return 1; })\")",
1654     "engine->evaluate(\"(function() { return 'ciao'; })\")",
1655     "engine->evaluate(\"(function() { throw new Error('foo'); })\")",
1656     "engine->evaluate(\"/foo/\")",
1657     "engine->evaluate(\"new Object()\")",
1658     "engine->evaluate(\"new Array()\")",
1659     "engine->evaluate(\"new Error()\")",
1660     "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")",
1661     "engine->evaluate(\"Undefined\")",
1662     "engine->evaluate(\"Null\")",
1663     "engine->evaluate(\"True\")",
1664     "engine->evaluate(\"False\")",
1665     "engine->evaluate(\"undefined\")",
1666     "engine->evaluate(\"null\")",
1667     "engine->evaluate(\"true\")",
1668     "engine->evaluate(\"false\")",
1669     "engine->evaluate(\"122\")",
1670     "engine->evaluate(\"124\")",
1671     "engine->evaluate(\"0\")",
1672     "engine->evaluate(\"0.0\")",
1673     "engine->evaluate(\"123.0\")",
1674     "engine->evaluate(\"6.37e-8\")",
1675     "engine->evaluate(\"-6.37e-8\")",
1676     "engine->evaluate(\"0x43211234\")",
1677     "engine->evaluate(\"0x10000\")",
1678     "engine->evaluate(\"0x10001\")",
1679     "engine->evaluate(\"NaN\")",
1680     "engine->evaluate(\"Infinity\")",
1681     "engine->evaluate(\"-Infinity\")",
1682     "engine->evaluate(\"'ciao'\")",
1683     "engine->evaluate(\"''\")",
1684     "engine->evaluate(\"'0'\")",
1685     "engine->evaluate(\"'123'\")",
1686     "engine->evaluate(\"'12.4'\")",
1687     "engine->nullValue()",
1688     "engine->undefinedValue()",
1689     "engine->newObject()",
1690     "engine->newArray()",
1691     "engine->newArray(10)"};
1692
1693 static const quint16 toUInt16_valueArray[] = {
1694     0, 0,
1695     0, 1,
1696     0, 122,
1697     124, 0,
1698     0, 123,
1699     0, 0,
1700     4660, 0,
1701     1, 0,
1702     0, 0,
1703     0, 0,
1704     0, 0,
1705     0, 0,
1706     0, 0,
1707     0, 123,
1708     12, 0,
1709     0, 1,
1710     0, 122,
1711     124, 0,
1712     0, 123,
1713     0, 0,
1714     4660, 0,
1715     1, 0,
1716     0, 0,
1717     0, 0,
1718     0, 0,
1719     0, 0,
1720     0, 0,
1721     0, 123,
1722     12, 0,
1723     0, 1,
1724     0, 122,
1725     124, 0,
1726     0, 123,
1727     0, 0,
1728     4660, 0,
1729     1, 0,
1730     0, 0,
1731     0, 0,
1732     0, 0,
1733     0, 0,
1734     0, 0,
1735     0, 123,
1736     1, 0,
1737     0, 0,
1738     0, 0,
1739     0, 0,
1740     0, 0,
1741     0, 0,
1742     0, 0,
1743     0, 0,
1744     0, 0,
1745     0, 22,
1746     0, 0,
1747     0, 0,
1748     0, 0,
1749     1, 0,
1750     122, 124,
1751     0, 0,
1752     123, 0,
1753     0, 4660,
1754     0, 1,
1755     0, 0,
1756     0, 0,
1757     0, 0,
1758     123, 12,
1759     0, 0,
1760     0, 0,
1761     0};
1762
1763 void tst_QScriptValue::toUInt16_data()
1764 {
1765     QTest::addColumn<QScriptValue>("value");
1766     QTest::addColumn<quint16>("expected");
1767     if (m_engine)
1768         delete m_engine;
1769     m_engine = new QScriptEngine();
1770     QHash<QString, quint16> expectedValue;
1771     expectedValue.reserve(135);
1772     for (uint i = 0; i < 135; ++i)
1773         expectedValue.insert(toUInt16_tagArray[i], toUInt16_valueArray[i]);
1774     for (uint i = 0; i < 135; ++i) {
1775         QPair<QString, QScriptValue> testcase = initScriptValues(i);
1776         QTest::newRow(testcase.first.toAscii().constData()) << testcase.second << expectedValue[testcase.first];
1777     }
1778 }
1779
1780 void tst_QScriptValue::toUInt16()
1781 {
1782     QFETCH(QScriptValue, value);
1783     QFETCH(quint16, expected);
1784     QCOMPARE(value.toUInt16(), expected);
1785     QCOMPARE(value.toUInt16(), expected);
1786 }