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
26static 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
163static 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
233void 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
250void tst_QScriptValue::toString()
251{
252    QFETCH(QScriptValue, value);
253    QFETCH(QString, expected);
254    QCOMPARE(value.toString(), expected);
255    QCOMPARE(value.toString(), expected);
256}
257
258static 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
395static 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
411void 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
428void 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
445static 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
582static 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
652void 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
669void tst_QScriptValue::toBool()
670{
671    QFETCH(QScriptValue, value);
672    QFETCH(bool, expected);
673    QCOMPARE(value.toBool(), expected);
674    QCOMPARE(value.toBool(), expected);
675}
676
677static 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
814static 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
884void 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
901void tst_QScriptValue::toBoolean()
902{
903    QFETCH(QScriptValue, value);
904    QFETCH(bool, expected);
905    QCOMPARE(value.toBoolean(), expected);
906    QCOMPARE(value.toBoolean(), expected);
907}
908
909static 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
1046static 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
1062void 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
1079void 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
1092static 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
1229static 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
1299void 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
1316void tst_QScriptValue::toInt32()
1317{
1318    QFETCH(QScriptValue, value);
1319    QFETCH(qint32, expected);
1320    QCOMPARE(value.toInt32(), expected);
1321    QCOMPARE(value.toInt32(), expected);
1322}
1323
1324static 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
1461static 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
1531void 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
1548void tst_QScriptValue::toUInt32()
1549{
1550    QFETCH(QScriptValue, value);
1551    QFETCH(quint32, expected);
1552    QCOMPARE(value.toUInt32(), expected);
1553    QCOMPARE(value.toUInt32(), expected);
1554}
1555
1556static 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
1693static 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
1763void 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
1780void tst_QScriptValue::toUInt16()
1781{
1782    QFETCH(QScriptValue, value);
1783    QFETCH(quint16, expected);
1784    QCOMPARE(value.toUInt16(), expected);
1785    QCOMPARE(value.toUInt16(), expected);
1786}
1787