]>
git.saurik.com Git - apple/javascriptcore.git/blob - qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp
970c96083aee0e8f3e601bdbc8239edc84ffb9db
2 Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
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.
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.
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.
20 #include "tst_qscriptvalue.h"
22 #define DEFINE_TEST_VALUE(expr) m_values.insert(QString::fromLatin1(#expr), expr)
24 void tst_QScriptValue::initScriptValues()
29 engine
= new QScriptEngine
;
30 DEFINE_TEST_VALUE(QScriptValue());
31 DEFINE_TEST_VALUE(QScriptValue(QScriptValue::UndefinedValue
));
32 DEFINE_TEST_VALUE(QScriptValue(QScriptValue::NullValue
));
33 DEFINE_TEST_VALUE(QScriptValue(true));
34 DEFINE_TEST_VALUE(QScriptValue(false));
35 DEFINE_TEST_VALUE(QScriptValue(int(122)));
36 DEFINE_TEST_VALUE(QScriptValue(uint(124)));
37 DEFINE_TEST_VALUE(QScriptValue(0));
38 DEFINE_TEST_VALUE(QScriptValue(0.0));
39 DEFINE_TEST_VALUE(QScriptValue(123.0));
40 DEFINE_TEST_VALUE(QScriptValue(6.37e-8));
41 DEFINE_TEST_VALUE(QScriptValue(-6.37e-8));
42 DEFINE_TEST_VALUE(QScriptValue(0x43211234));
43 DEFINE_TEST_VALUE(QScriptValue(0x10000));
44 DEFINE_TEST_VALUE(QScriptValue(0x10001));
45 DEFINE_TEST_VALUE(QScriptValue(qSNaN()));
46 DEFINE_TEST_VALUE(QScriptValue(qQNaN()));
47 DEFINE_TEST_VALUE(QScriptValue(qInf()));
48 DEFINE_TEST_VALUE(QScriptValue(-qInf()));
49 DEFINE_TEST_VALUE(QScriptValue("NaN"));
50 DEFINE_TEST_VALUE(QScriptValue("Infinity"));
51 DEFINE_TEST_VALUE(QScriptValue("-Infinity"));
52 DEFINE_TEST_VALUE(QScriptValue("ciao"));
53 DEFINE_TEST_VALUE(QScriptValue(QString::fromLatin1("ciao")));
54 DEFINE_TEST_VALUE(QScriptValue(QString("")));
55 DEFINE_TEST_VALUE(QScriptValue(QString()));
56 DEFINE_TEST_VALUE(QScriptValue(QString("0")));
57 DEFINE_TEST_VALUE(QScriptValue(QString("123")));
58 DEFINE_TEST_VALUE(QScriptValue(QString("12.4")));
59 DEFINE_TEST_VALUE(QScriptValue(0, QScriptValue::UndefinedValue
));
60 DEFINE_TEST_VALUE(QScriptValue(0, QScriptValue::NullValue
));
61 DEFINE_TEST_VALUE(QScriptValue(0, true));
62 DEFINE_TEST_VALUE(QScriptValue(0, false));
63 DEFINE_TEST_VALUE(QScriptValue(0, int(122)));
64 DEFINE_TEST_VALUE(QScriptValue(0, uint(124)));
65 DEFINE_TEST_VALUE(QScriptValue(0, 0));
66 DEFINE_TEST_VALUE(QScriptValue(0, 0.0));
67 DEFINE_TEST_VALUE(QScriptValue(0, 123.0));
68 DEFINE_TEST_VALUE(QScriptValue(0, 6.37e-8));
69 DEFINE_TEST_VALUE(QScriptValue(0, -6.37e-8));
70 DEFINE_TEST_VALUE(QScriptValue(0, 0x43211234));
71 DEFINE_TEST_VALUE(QScriptValue(0, 0x10000));
72 DEFINE_TEST_VALUE(QScriptValue(0, 0x10001));
73 DEFINE_TEST_VALUE(QScriptValue(0, qSNaN()));
74 DEFINE_TEST_VALUE(QScriptValue(0, qQNaN()));
75 DEFINE_TEST_VALUE(QScriptValue(0, qInf()));
76 DEFINE_TEST_VALUE(QScriptValue(0, -qInf()));
77 DEFINE_TEST_VALUE(QScriptValue(0, "NaN"));
78 DEFINE_TEST_VALUE(QScriptValue(0, "Infinity"));
79 DEFINE_TEST_VALUE(QScriptValue(0, "-Infinity"));
80 DEFINE_TEST_VALUE(QScriptValue(0, "ciao"));
81 DEFINE_TEST_VALUE(QScriptValue(0, QString::fromLatin1("ciao")));
82 DEFINE_TEST_VALUE(QScriptValue(0, QString("")));
83 DEFINE_TEST_VALUE(QScriptValue(0, QString()));
84 DEFINE_TEST_VALUE(QScriptValue(0, QString("0")));
85 DEFINE_TEST_VALUE(QScriptValue(0, QString("123")));
86 DEFINE_TEST_VALUE(QScriptValue(0, QString("12.3")));
87 DEFINE_TEST_VALUE(QScriptValue(engine
, QScriptValue::UndefinedValue
));
88 DEFINE_TEST_VALUE(QScriptValue(engine
, QScriptValue::NullValue
));
89 DEFINE_TEST_VALUE(QScriptValue(engine
, true));
90 DEFINE_TEST_VALUE(QScriptValue(engine
, false));
91 DEFINE_TEST_VALUE(QScriptValue(engine
, int(122)));
92 DEFINE_TEST_VALUE(QScriptValue(engine
, uint(124)));
93 DEFINE_TEST_VALUE(QScriptValue(engine
, 0));
94 DEFINE_TEST_VALUE(QScriptValue(engine
, 0.0));
95 DEFINE_TEST_VALUE(QScriptValue(engine
, 123.0));
96 DEFINE_TEST_VALUE(QScriptValue(engine
, 6.37e-8));
97 DEFINE_TEST_VALUE(QScriptValue(engine
, -6.37e-8));
98 DEFINE_TEST_VALUE(QScriptValue(engine
, 0x43211234));
99 DEFINE_TEST_VALUE(QScriptValue(engine
, 0x10000));
100 DEFINE_TEST_VALUE(QScriptValue(engine
, 0x10001));
101 DEFINE_TEST_VALUE(QScriptValue(engine
, qSNaN()));
102 DEFINE_TEST_VALUE(QScriptValue(engine
, qQNaN()));
103 DEFINE_TEST_VALUE(QScriptValue(engine
, qInf()));
104 DEFINE_TEST_VALUE(QScriptValue(engine
, -qInf()));
105 DEFINE_TEST_VALUE(QScriptValue(engine
, "NaN"));
106 DEFINE_TEST_VALUE(QScriptValue(engine
, "Infinity"));
107 DEFINE_TEST_VALUE(QScriptValue(engine
, "-Infinity"));
108 DEFINE_TEST_VALUE(QScriptValue(engine
, "ciao"));
109 DEFINE_TEST_VALUE(QScriptValue(engine
, QString::fromLatin1("ciao")));
110 DEFINE_TEST_VALUE(QScriptValue(engine
, QString("")));
111 DEFINE_TEST_VALUE(QScriptValue(engine
, QString()));
112 DEFINE_TEST_VALUE(QScriptValue(engine
, QString("0")));
113 DEFINE_TEST_VALUE(QScriptValue(engine
, QString("123")));
114 DEFINE_TEST_VALUE(QScriptValue(engine
, QString("1.23")));
115 DEFINE_TEST_VALUE(engine
->evaluate("[]"));
116 DEFINE_TEST_VALUE(engine
->evaluate("{}"));
117 DEFINE_TEST_VALUE(engine
->evaluate("Object.prototype"));
118 DEFINE_TEST_VALUE(engine
->evaluate("Date.prototype"));
119 DEFINE_TEST_VALUE(engine
->evaluate("Array.prototype"));
120 DEFINE_TEST_VALUE(engine
->evaluate("Function.prototype"));
121 DEFINE_TEST_VALUE(engine
->evaluate("Error.prototype"));
122 DEFINE_TEST_VALUE(engine
->evaluate("Object"));
123 DEFINE_TEST_VALUE(engine
->evaluate("Array"));
124 DEFINE_TEST_VALUE(engine
->evaluate("Number"));
125 DEFINE_TEST_VALUE(engine
->evaluate("Function"));
126 DEFINE_TEST_VALUE(engine
->evaluate("(function() { return 1; })"));
127 DEFINE_TEST_VALUE(engine
->evaluate("(function() { return 'ciao'; })"));
128 DEFINE_TEST_VALUE(engine
->evaluate("(function() { throw new Error('foo'); })"));
129 DEFINE_TEST_VALUE(engine
->evaluate("/foo/"));
130 DEFINE_TEST_VALUE(engine
->evaluate("new Object()"));
131 DEFINE_TEST_VALUE(engine
->evaluate("new Array()"));
132 DEFINE_TEST_VALUE(engine
->evaluate("new Error()"));
133 DEFINE_TEST_VALUE(engine
->evaluate("a = new Object(); a.foo = 22; a.foo"));
134 DEFINE_TEST_VALUE(engine
->evaluate("Undefined"));
135 DEFINE_TEST_VALUE(engine
->evaluate("Null"));
136 DEFINE_TEST_VALUE(engine
->evaluate("True"));
137 DEFINE_TEST_VALUE(engine
->evaluate("False"));
138 DEFINE_TEST_VALUE(engine
->evaluate("undefined"));
139 DEFINE_TEST_VALUE(engine
->evaluate("null"));
140 DEFINE_TEST_VALUE(engine
->evaluate("true"));
141 DEFINE_TEST_VALUE(engine
->evaluate("false"));
142 DEFINE_TEST_VALUE(engine
->evaluate("122"));
143 DEFINE_TEST_VALUE(engine
->evaluate("124"));
144 DEFINE_TEST_VALUE(engine
->evaluate("0"));
145 DEFINE_TEST_VALUE(engine
->evaluate("0.0"));
146 DEFINE_TEST_VALUE(engine
->evaluate("123.0"));
147 DEFINE_TEST_VALUE(engine
->evaluate("6.37e-8"));
148 DEFINE_TEST_VALUE(engine
->evaluate("-6.37e-8"));
149 DEFINE_TEST_VALUE(engine
->evaluate("0x43211234"));
150 DEFINE_TEST_VALUE(engine
->evaluate("0x10000"));
151 DEFINE_TEST_VALUE(engine
->evaluate("0x10001"));
152 DEFINE_TEST_VALUE(engine
->evaluate("NaN"));
153 DEFINE_TEST_VALUE(engine
->evaluate("Infinity"));
154 DEFINE_TEST_VALUE(engine
->evaluate("-Infinity"));
155 DEFINE_TEST_VALUE(engine
->evaluate("'ciao'"));
156 DEFINE_TEST_VALUE(engine
->evaluate("''"));
157 DEFINE_TEST_VALUE(engine
->evaluate("'0'"));
158 DEFINE_TEST_VALUE(engine
->evaluate("'123'"));
159 DEFINE_TEST_VALUE(engine
->evaluate("'12.4'"));
160 DEFINE_TEST_VALUE(engine
->nullValue());
161 DEFINE_TEST_VALUE(engine
->undefinedValue());
165 void tst_QScriptValue::isValid_initData()
167 QTest::addColumn
<bool>("expected");
171 void tst_QScriptValue::isValid_makeData(const char* expr
)
173 static QSet
<QString
> isValid
;
174 if (isValid
.isEmpty()) {
175 isValid
<< "QScriptValue(QScriptValue::UndefinedValue)"
176 << "QScriptValue(QScriptValue::NullValue)"
177 << "QScriptValue(true)"
178 << "QScriptValue(false)"
179 << "QScriptValue(int(122))"
180 << "QScriptValue(uint(124))"
182 << "QScriptValue(0.0)"
183 << "QScriptValue(123.0)"
184 << "QScriptValue(6.37e-8)"
185 << "QScriptValue(-6.37e-8)"
186 << "QScriptValue(0x43211234)"
187 << "QScriptValue(0x10000)"
188 << "QScriptValue(0x10001)"
189 << "QScriptValue(qSNaN())"
190 << "QScriptValue(qQNaN())"
191 << "QScriptValue(qInf())"
192 << "QScriptValue(-qInf())"
193 << "QScriptValue(\"NaN\")"
194 << "QScriptValue(\"Infinity\")"
195 << "QScriptValue(\"-Infinity\")"
196 << "QScriptValue(\"ciao\")"
197 << "QScriptValue(QString::fromLatin1(\"ciao\"))"
198 << "QScriptValue(QString(\"\"))"
199 << "QScriptValue(QString())"
200 << "QScriptValue(QString(\"0\"))"
201 << "QScriptValue(QString(\"123\"))"
202 << "QScriptValue(QString(\"12.4\"))"
203 << "QScriptValue(0, QScriptValue::UndefinedValue)"
204 << "QScriptValue(0, QScriptValue::NullValue)"
205 << "QScriptValue(0, true)"
206 << "QScriptValue(0, false)"
207 << "QScriptValue(0, int(122))"
208 << "QScriptValue(0, uint(124))"
209 << "QScriptValue(0, 0)"
210 << "QScriptValue(0, 0.0)"
211 << "QScriptValue(0, 123.0)"
212 << "QScriptValue(0, 6.37e-8)"
213 << "QScriptValue(0, -6.37e-8)"
214 << "QScriptValue(0, 0x43211234)"
215 << "QScriptValue(0, 0x10000)"
216 << "QScriptValue(0, 0x10001)"
217 << "QScriptValue(0, qSNaN())"
218 << "QScriptValue(0, qQNaN())"
219 << "QScriptValue(0, qInf())"
220 << "QScriptValue(0, -qInf())"
221 << "QScriptValue(0, \"NaN\")"
222 << "QScriptValue(0, \"Infinity\")"
223 << "QScriptValue(0, \"-Infinity\")"
224 << "QScriptValue(0, \"ciao\")"
225 << "QScriptValue(0, QString::fromLatin1(\"ciao\"))"
226 << "QScriptValue(0, QString(\"\"))"
227 << "QScriptValue(0, QString())"
228 << "QScriptValue(0, QString(\"0\"))"
229 << "QScriptValue(0, QString(\"123\"))"
230 << "QScriptValue(0, QString(\"12.3\"))"
231 << "QScriptValue(engine, QScriptValue::UndefinedValue)"
232 << "QScriptValue(engine, QScriptValue::NullValue)"
233 << "QScriptValue(engine, true)"
234 << "QScriptValue(engine, false)"
235 << "QScriptValue(engine, int(122))"
236 << "QScriptValue(engine, uint(124))"
237 << "QScriptValue(engine, 0)"
238 << "QScriptValue(engine, 0.0)"
239 << "QScriptValue(engine, 123.0)"
240 << "QScriptValue(engine, 6.37e-8)"
241 << "QScriptValue(engine, -6.37e-8)"
242 << "QScriptValue(engine, 0x43211234)"
243 << "QScriptValue(engine, 0x10000)"
244 << "QScriptValue(engine, 0x10001)"
245 << "QScriptValue(engine, qSNaN())"
246 << "QScriptValue(engine, qQNaN())"
247 << "QScriptValue(engine, qInf())"
248 << "QScriptValue(engine, -qInf())"
249 << "QScriptValue(engine, \"NaN\")"
250 << "QScriptValue(engine, \"Infinity\")"
251 << "QScriptValue(engine, \"-Infinity\")"
252 << "QScriptValue(engine, \"ciao\")"
253 << "QScriptValue(engine, QString::fromLatin1(\"ciao\"))"
254 << "QScriptValue(engine, QString(\"\"))"
255 << "QScriptValue(engine, QString())"
256 << "QScriptValue(engine, QString(\"0\"))"
257 << "QScriptValue(engine, QString(\"123\"))"
258 << "QScriptValue(engine, QString(\"1.23\"))"
259 << "engine->evaluate(\"[]\")"
260 << "engine->evaluate(\"{}\")"
261 << "engine->evaluate(\"Object.prototype\")"
262 << "engine->evaluate(\"Date.prototype\")"
263 << "engine->evaluate(\"Array.prototype\")"
264 << "engine->evaluate(\"Function.prototype\")"
265 << "engine->evaluate(\"Error.prototype\")"
266 << "engine->evaluate(\"Object\")"
267 << "engine->evaluate(\"Array\")"
268 << "engine->evaluate(\"Number\")"
269 << "engine->evaluate(\"Function\")"
270 << "engine->evaluate(\"(function() { return 1; })\")"
271 << "engine->evaluate(\"(function() { return 'ciao'; })\")"
272 << "engine->evaluate(\"(function() { throw new Error('foo'); })\")"
273 << "engine->evaluate(\"/foo/\")"
274 << "engine->evaluate(\"new Object()\")"
275 << "engine->evaluate(\"new Array()\")"
276 << "engine->evaluate(\"new Error()\")"
277 << "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"
278 << "engine->evaluate(\"Undefined\")"
279 << "engine->evaluate(\"Null\")"
280 << "engine->evaluate(\"True\")"
281 << "engine->evaluate(\"False\")"
282 << "engine->evaluate(\"undefined\")"
283 << "engine->evaluate(\"null\")"
284 << "engine->evaluate(\"true\")"
285 << "engine->evaluate(\"false\")"
286 << "engine->evaluate(\"122\")"
287 << "engine->evaluate(\"124\")"
288 << "engine->evaluate(\"0\")"
289 << "engine->evaluate(\"0.0\")"
290 << "engine->evaluate(\"123.0\")"
291 << "engine->evaluate(\"6.37e-8\")"
292 << "engine->evaluate(\"-6.37e-8\")"
293 << "engine->evaluate(\"0x43211234\")"
294 << "engine->evaluate(\"0x10000\")"
295 << "engine->evaluate(\"0x10001\")"
296 << "engine->evaluate(\"NaN\")"
297 << "engine->evaluate(\"Infinity\")"
298 << "engine->evaluate(\"-Infinity\")"
299 << "engine->evaluate(\"'ciao'\")"
300 << "engine->evaluate(\"''\")"
301 << "engine->evaluate(\"'0'\")"
302 << "engine->evaluate(\"'123'\")"
303 << "engine->evaluate(\"'12.4'\")"
304 << "engine->nullValue()"
305 << "engine->undefinedValue()";
307 newRow(expr
) << isValid
.contains(expr
);
310 void tst_QScriptValue::isValid_test(const char*, const QScriptValue
& value
)
312 QFETCH(bool, expected
);
313 QCOMPARE(value
.isValid(), expected
);
314 QCOMPARE(value
.isValid(), expected
);
317 DEFINE_TEST_FUNCTION(isValid
)
320 void tst_QScriptValue::isBool_initData()
322 QTest::addColumn
<bool>("expected");
326 void tst_QScriptValue::isBool_makeData(const char* expr
)
328 static QSet
<QString
> isBool
;
329 if (isBool
.isEmpty()) {
330 isBool
<< "QScriptValue(true)"
331 << "QScriptValue(false)"
332 << "QScriptValue(0, true)"
333 << "QScriptValue(0, false)"
334 << "QScriptValue(engine, true)"
335 << "QScriptValue(engine, false)"
336 << "engine->evaluate(\"true\")"
337 << "engine->evaluate(\"false\")";
339 newRow(expr
) << isBool
.contains(expr
);
342 void tst_QScriptValue::isBool_test(const char*, const QScriptValue
& value
)
344 QFETCH(bool, expected
);
345 QCOMPARE(value
.isBool(), expected
);
346 QCOMPARE(value
.isBool(), expected
);
349 DEFINE_TEST_FUNCTION(isBool
)
352 void tst_QScriptValue::isBoolean_initData()
354 QTest::addColumn
<bool>("expected");
358 void tst_QScriptValue::isBoolean_makeData(const char* expr
)
360 static QSet
<QString
> isBoolean
;
361 if (isBoolean
.isEmpty()) {
362 isBoolean
<< "QScriptValue(true)"
363 << "QScriptValue(false)"
364 << "QScriptValue(0, true)"
365 << "QScriptValue(0, false)"
366 << "QScriptValue(engine, true)"
367 << "QScriptValue(engine, false)"
368 << "engine->evaluate(\"true\")"
369 << "engine->evaluate(\"false\")";
371 newRow(expr
) << isBoolean
.contains(expr
);
374 void tst_QScriptValue::isBoolean_test(const char*, const QScriptValue
& value
)
376 QFETCH(bool, expected
);
377 QCOMPARE(value
.isBoolean(), expected
);
378 QCOMPARE(value
.isBoolean(), expected
);
381 DEFINE_TEST_FUNCTION(isBoolean
)
384 void tst_QScriptValue::isNumber_initData()
386 QTest::addColumn
<bool>("expected");
390 void tst_QScriptValue::isNumber_makeData(const char* expr
)
392 static QSet
<QString
> isNumber
;
393 if (isNumber
.isEmpty()) {
394 isNumber
<< "QScriptValue(int(122))"
395 << "QScriptValue(uint(124))"
397 << "QScriptValue(0.0)"
398 << "QScriptValue(123.0)"
399 << "QScriptValue(6.37e-8)"
400 << "QScriptValue(-6.37e-8)"
401 << "QScriptValue(0x43211234)"
402 << "QScriptValue(0x10000)"
403 << "QScriptValue(0x10001)"
404 << "QScriptValue(qSNaN())"
405 << "QScriptValue(qQNaN())"
406 << "QScriptValue(qInf())"
407 << "QScriptValue(-qInf())"
408 << "QScriptValue(0, int(122))"
409 << "QScriptValue(0, uint(124))"
410 << "QScriptValue(0, 0)"
411 << "QScriptValue(0, 0.0)"
412 << "QScriptValue(0, 123.0)"
413 << "QScriptValue(0, 6.37e-8)"
414 << "QScriptValue(0, -6.37e-8)"
415 << "QScriptValue(0, 0x43211234)"
416 << "QScriptValue(0, 0x10000)"
417 << "QScriptValue(0, 0x10001)"
418 << "QScriptValue(0, qSNaN())"
419 << "QScriptValue(0, qQNaN())"
420 << "QScriptValue(0, qInf())"
421 << "QScriptValue(0, -qInf())"
422 << "QScriptValue(engine, int(122))"
423 << "QScriptValue(engine, uint(124))"
424 << "QScriptValue(engine, 0)"
425 << "QScriptValue(engine, 0.0)"
426 << "QScriptValue(engine, 123.0)"
427 << "QScriptValue(engine, 6.37e-8)"
428 << "QScriptValue(engine, -6.37e-8)"
429 << "QScriptValue(engine, 0x43211234)"
430 << "QScriptValue(engine, 0x10000)"
431 << "QScriptValue(engine, 0x10001)"
432 << "QScriptValue(engine, qSNaN())"
433 << "QScriptValue(engine, qQNaN())"
434 << "QScriptValue(engine, qInf())"
435 << "QScriptValue(engine, -qInf())"
436 << "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"
437 << "engine->evaluate(\"122\")"
438 << "engine->evaluate(\"124\")"
439 << "engine->evaluate(\"0\")"
440 << "engine->evaluate(\"0.0\")"
441 << "engine->evaluate(\"123.0\")"
442 << "engine->evaluate(\"6.37e-8\")"
443 << "engine->evaluate(\"-6.37e-8\")"
444 << "engine->evaluate(\"0x43211234\")"
445 << "engine->evaluate(\"0x10000\")"
446 << "engine->evaluate(\"0x10001\")"
447 << "engine->evaluate(\"NaN\")"
448 << "engine->evaluate(\"Infinity\")"
449 << "engine->evaluate(\"-Infinity\")";
451 newRow(expr
) << isNumber
.contains(expr
);
454 void tst_QScriptValue::isNumber_test(const char*, const QScriptValue
& value
)
456 QFETCH(bool, expected
);
457 QCOMPARE(value
.isNumber(), expected
);
458 QCOMPARE(value
.isNumber(), expected
);
461 DEFINE_TEST_FUNCTION(isNumber
)
464 void tst_QScriptValue::isFunction_initData()
466 QTest::addColumn
<bool>("expected");
470 void tst_QScriptValue::isFunction_makeData(const char* expr
)
472 static QSet
<QString
> isFunction
;
473 if (isFunction
.isEmpty()) {
474 isFunction
<< "engine->evaluate(\"Function.prototype\")"
475 << "engine->evaluate(\"Object\")"
476 << "engine->evaluate(\"Array\")"
477 << "engine->evaluate(\"Number\")"
478 << "engine->evaluate(\"Function\")"
479 << "engine->evaluate(\"(function() { return 1; })\")"
480 << "engine->evaluate(\"(function() { return 'ciao'; })\")"
481 << "engine->evaluate(\"(function() { throw new Error('foo'); })\")"
482 << "engine->evaluate(\"/foo/\")";
484 newRow(expr
) << isFunction
.contains(expr
);
487 void tst_QScriptValue::isFunction_test(const char*, const QScriptValue
& value
)
489 QFETCH(bool, expected
);
490 QCOMPARE(value
.isFunction(), expected
);
491 QCOMPARE(value
.isFunction(), expected
);
494 DEFINE_TEST_FUNCTION(isFunction
)
497 void tst_QScriptValue::isNull_initData()
499 QTest::addColumn
<bool>("expected");
503 void tst_QScriptValue::isNull_makeData(const char* expr
)
505 static QSet
<QString
> isNull
;
506 if (isNull
.isEmpty()) {
507 isNull
<< "QScriptValue(QScriptValue::NullValue)"
508 << "QScriptValue(0, QScriptValue::NullValue)"
509 << "QScriptValue(engine, QScriptValue::NullValue)"
510 << "engine->evaluate(\"null\")"
511 << "engine->nullValue()";
513 newRow(expr
) << isNull
.contains(expr
);
516 void tst_QScriptValue::isNull_test(const char*, const QScriptValue
& value
)
518 QFETCH(bool, expected
);
519 QCOMPARE(value
.isNull(), expected
);
520 QCOMPARE(value
.isNull(), expected
);
523 DEFINE_TEST_FUNCTION(isNull
)
526 void tst_QScriptValue::isString_initData()
528 QTest::addColumn
<bool>("expected");
532 void tst_QScriptValue::isString_makeData(const char* expr
)
534 static QSet
<QString
> isString
;
535 if (isString
.isEmpty()) {
536 isString
<< "QScriptValue(\"NaN\")"
537 << "QScriptValue(\"Infinity\")"
538 << "QScriptValue(\"-Infinity\")"
539 << "QScriptValue(\"ciao\")"
540 << "QScriptValue(QString::fromLatin1(\"ciao\"))"
541 << "QScriptValue(QString(\"\"))"
542 << "QScriptValue(QString())"
543 << "QScriptValue(QString(\"0\"))"
544 << "QScriptValue(QString(\"123\"))"
545 << "QScriptValue(QString(\"12.4\"))"
546 << "QScriptValue(0, \"NaN\")"
547 << "QScriptValue(0, \"Infinity\")"
548 << "QScriptValue(0, \"-Infinity\")"
549 << "QScriptValue(0, \"ciao\")"
550 << "QScriptValue(0, QString::fromLatin1(\"ciao\"))"
551 << "QScriptValue(0, QString(\"\"))"
552 << "QScriptValue(0, QString())"
553 << "QScriptValue(0, QString(\"0\"))"
554 << "QScriptValue(0, QString(\"123\"))"
555 << "QScriptValue(0, QString(\"12.3\"))"
556 << "QScriptValue(engine, \"NaN\")"
557 << "QScriptValue(engine, \"Infinity\")"
558 << "QScriptValue(engine, \"-Infinity\")"
559 << "QScriptValue(engine, \"ciao\")"
560 << "QScriptValue(engine, QString::fromLatin1(\"ciao\"))"
561 << "QScriptValue(engine, QString(\"\"))"
562 << "QScriptValue(engine, QString())"
563 << "QScriptValue(engine, QString(\"0\"))"
564 << "QScriptValue(engine, QString(\"123\"))"
565 << "QScriptValue(engine, QString(\"1.23\"))"
566 << "engine->evaluate(\"'ciao'\")"
567 << "engine->evaluate(\"''\")"
568 << "engine->evaluate(\"'0'\")"
569 << "engine->evaluate(\"'123'\")"
570 << "engine->evaluate(\"'12.4'\")";
572 newRow(expr
) << isString
.contains(expr
);
575 void tst_QScriptValue::isString_test(const char*, const QScriptValue
& value
)
577 QFETCH(bool, expected
);
578 QCOMPARE(value
.isString(), expected
);
579 QCOMPARE(value
.isString(), expected
);
582 DEFINE_TEST_FUNCTION(isString
)
585 void tst_QScriptValue::isUndefined_initData()
587 QTest::addColumn
<bool>("expected");
591 void tst_QScriptValue::isUndefined_makeData(const char* expr
)
593 static QSet
<QString
> isUndefined
;
594 if (isUndefined
.isEmpty()) {
595 isUndefined
<< "QScriptValue(QScriptValue::UndefinedValue)"
596 << "QScriptValue(0, QScriptValue::UndefinedValue)"
597 << "QScriptValue(engine, QScriptValue::UndefinedValue)"
598 << "engine->evaluate(\"{}\")"
599 << "engine->evaluate(\"undefined\")"
600 << "engine->undefinedValue()";
602 newRow(expr
) << isUndefined
.contains(expr
);
605 void tst_QScriptValue::isUndefined_test(const char*, const QScriptValue
& value
)
607 QFETCH(bool, expected
);
608 QCOMPARE(value
.isUndefined(), expected
);
609 QCOMPARE(value
.isUndefined(), expected
);
612 DEFINE_TEST_FUNCTION(isUndefined
)
618 void tst_QScriptValue::isObject_initData()
620 QTest::addColumn
<bool>("expected");
624 void tst_QScriptValue::isObject_makeData(const char* expr
)
626 static QSet
<QString
> isObject
;
627 if (isObject
.isEmpty()) {
628 isObject
<< "engine->evaluate(\"[]\")"
629 << "engine->evaluate(\"Object.prototype\")"
630 << "engine->evaluate(\"Date.prototype\")"
631 << "engine->evaluate(\"Array.prototype\")"
632 << "engine->evaluate(\"Function.prototype\")"
633 << "engine->evaluate(\"Error.prototype\")"
634 << "engine->evaluate(\"Object\")"
635 << "engine->evaluate(\"Array\")"
636 << "engine->evaluate(\"Number\")"
637 << "engine->evaluate(\"Function\")"
638 << "engine->evaluate(\"(function() { return 1; })\")"
639 << "engine->evaluate(\"(function() { return 'ciao'; })\")"
640 << "engine->evaluate(\"(function() { throw new Error('foo'); })\")"
641 << "engine->evaluate(\"/foo/\")"
642 << "engine->evaluate(\"new Object()\")"
643 << "engine->evaluate(\"new Array()\")"
644 << "engine->evaluate(\"new Error()\")"
645 << "engine->evaluate(\"Undefined\")"
646 << "engine->evaluate(\"Null\")"
647 << "engine->evaluate(\"True\")"
648 << "engine->evaluate(\"False\")";
650 newRow(expr
) << isObject
.contains(expr
);
653 void tst_QScriptValue::isObject_test(const char*, const QScriptValue
& value
)
655 QFETCH(bool, expected
);
656 QCOMPARE(value
.isObject(), expected
);
657 QCOMPARE(value
.isObject(), expected
);
660 DEFINE_TEST_FUNCTION(isObject
)
663 void tst_QScriptValue::toString_initData()
665 QTest::addColumn
<QString
>("expected");
669 void tst_QScriptValue::toString_makeData(const char* expr
)
671 static QHash
<QString
, QString
> toString
;
672 if (toString
.isEmpty()) {
673 toString
.insert("QScriptValue()", "");
674 toString
.insert("QScriptValue(QScriptValue::UndefinedValue)", "undefined");
675 toString
.insert("QScriptValue(QScriptValue::NullValue)", "null");
676 toString
.insert("QScriptValue(true)", "true");
677 toString
.insert("QScriptValue(false)", "false");
678 toString
.insert("QScriptValue(int(122))", "122");
679 toString
.insert("QScriptValue(uint(124))", "124");
680 toString
.insert("QScriptValue(0)", "0");
681 toString
.insert("QScriptValue(0.0)", "0");
682 toString
.insert("QScriptValue(123.0)", "123");
683 toString
.insert("QScriptValue(6.37e-8)", "6.37e-8");
684 toString
.insert("QScriptValue(-6.37e-8)", "-6.37e-8");
685 toString
.insert("QScriptValue(0x43211234)", "1126240820");
686 toString
.insert("QScriptValue(0x10000)", "65536");
687 toString
.insert("QScriptValue(0x10001)", "65537");
688 toString
.insert("QScriptValue(qSNaN())", "NaN");
689 toString
.insert("QScriptValue(qQNaN())", "NaN");
690 toString
.insert("QScriptValue(qInf())", "Infinity");
691 toString
.insert("QScriptValue(-qInf())", "-Infinity");
692 toString
.insert("QScriptValue(\"NaN\")", "NaN");
693 toString
.insert("QScriptValue(\"Infinity\")", "Infinity");
694 toString
.insert("QScriptValue(\"-Infinity\")", "-Infinity");
695 toString
.insert("QScriptValue(\"ciao\")", "ciao");
696 toString
.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", "ciao");
697 toString
.insert("QScriptValue(QString(\"\"))", "");
698 toString
.insert("QScriptValue(QString())", "");
699 toString
.insert("QScriptValue(QString(\"0\"))", "0");
700 toString
.insert("QScriptValue(QString(\"123\"))", "123");
701 toString
.insert("QScriptValue(QString(\"12.4\"))", "12.4");
702 toString
.insert("QScriptValue(0, QScriptValue::UndefinedValue)", "undefined");
703 toString
.insert("QScriptValue(0, QScriptValue::NullValue)", "null");
704 toString
.insert("QScriptValue(0, true)", "true");
705 toString
.insert("QScriptValue(0, false)", "false");
706 toString
.insert("QScriptValue(0, int(122))", "122");
707 toString
.insert("QScriptValue(0, uint(124))", "124");
708 toString
.insert("QScriptValue(0, 0)", "0");
709 toString
.insert("QScriptValue(0, 0.0)", "0");
710 toString
.insert("QScriptValue(0, 123.0)", "123");
711 toString
.insert("QScriptValue(0, 6.37e-8)", "6.37e-8");
712 toString
.insert("QScriptValue(0, -6.37e-8)", "-6.37e-8");
713 toString
.insert("QScriptValue(0, 0x43211234)", "1126240820");
714 toString
.insert("QScriptValue(0, 0x10000)", "65536");
715 toString
.insert("QScriptValue(0, 0x10001)", "65537");
716 toString
.insert("QScriptValue(0, qSNaN())", "NaN");
717 toString
.insert("QScriptValue(0, qQNaN())", "NaN");
718 toString
.insert("QScriptValue(0, qInf())", "Infinity");
719 toString
.insert("QScriptValue(0, -qInf())", "-Infinity");
720 toString
.insert("QScriptValue(0, \"NaN\")", "NaN");
721 toString
.insert("QScriptValue(0, \"Infinity\")", "Infinity");
722 toString
.insert("QScriptValue(0, \"-Infinity\")", "-Infinity");
723 toString
.insert("QScriptValue(0, \"ciao\")", "ciao");
724 toString
.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", "ciao");
725 toString
.insert("QScriptValue(0, QString(\"\"))", "");
726 toString
.insert("QScriptValue(0, QString())", "");
727 toString
.insert("QScriptValue(0, QString(\"0\"))", "0");
728 toString
.insert("QScriptValue(0, QString(\"123\"))", "123");
729 toString
.insert("QScriptValue(0, QString(\"12.3\"))", "12.3");
730 toString
.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", "undefined");
731 toString
.insert("QScriptValue(engine, QScriptValue::NullValue)", "null");
732 toString
.insert("QScriptValue(engine, true)", "true");
733 toString
.insert("QScriptValue(engine, false)", "false");
734 toString
.insert("QScriptValue(engine, int(122))", "122");
735 toString
.insert("QScriptValue(engine, uint(124))", "124");
736 toString
.insert("QScriptValue(engine, 0)", "0");
737 toString
.insert("QScriptValue(engine, 0.0)", "0");
738 toString
.insert("QScriptValue(engine, 123.0)", "123");
739 toString
.insert("QScriptValue(engine, 6.37e-8)", "6.37e-8");
740 toString
.insert("QScriptValue(engine, -6.37e-8)", "-6.37e-8");
741 toString
.insert("QScriptValue(engine, 0x43211234)", "1126240820");
742 toString
.insert("QScriptValue(engine, 0x10000)", "65536");
743 toString
.insert("QScriptValue(engine, 0x10001)", "65537");
744 toString
.insert("QScriptValue(engine, qSNaN())", "NaN");
745 toString
.insert("QScriptValue(engine, qQNaN())", "NaN");
746 toString
.insert("QScriptValue(engine, qInf())", "Infinity");
747 toString
.insert("QScriptValue(engine, -qInf())", "-Infinity");
748 toString
.insert("QScriptValue(engine, \"NaN\")", "NaN");
749 toString
.insert("QScriptValue(engine, \"Infinity\")", "Infinity");
750 toString
.insert("QScriptValue(engine, \"-Infinity\")", "-Infinity");
751 toString
.insert("QScriptValue(engine, \"ciao\")", "ciao");
752 toString
.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", "ciao");
753 toString
.insert("QScriptValue(engine, QString(\"\"))", "");
754 toString
.insert("QScriptValue(engine, QString())", "");
755 toString
.insert("QScriptValue(engine, QString(\"0\"))", "0");
756 toString
.insert("QScriptValue(engine, QString(\"123\"))", "123");
757 toString
.insert("QScriptValue(engine, QString(\"1.23\"))", "1.23");
758 toString
.insert("engine->evaluate(\"[]\")", "");
759 toString
.insert("engine->evaluate(\"{}\")", "undefined");
760 toString
.insert("engine->evaluate(\"Object.prototype\")", "[object Object]");
761 toString
.insert("engine->evaluate(\"Date.prototype\")", "Invalid Date");
762 toString
.insert("engine->evaluate(\"Array.prototype\")", "");
763 toString
.insert("engine->evaluate(\"Function.prototype\")", "function () {\n [native code]\n}");
764 toString
.insert("engine->evaluate(\"Error.prototype\")", "Error: Unknown error");
765 toString
.insert("engine->evaluate(\"Object\")", "function Object() {\n [native code]\n}");
766 toString
.insert("engine->evaluate(\"Array\")", "function Array() {\n [native code]\n}");
767 toString
.insert("engine->evaluate(\"Number\")", "function Number() {\n [native code]\n}");
768 toString
.insert("engine->evaluate(\"Function\")", "function Function() {\n [native code]\n}");
769 toString
.insert("engine->evaluate(\"(function() { return 1; })\")", "function () { return 1; }");
770 toString
.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", "function () { return 'ciao'; }");
771 toString
.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", "function () { throw new Error('foo'); }");
772 toString
.insert("engine->evaluate(\"/foo/\")", "/foo/");
773 toString
.insert("engine->evaluate(\"new Object()\")", "[object Object]");
774 toString
.insert("engine->evaluate(\"new Array()\")", "");
775 toString
.insert("engine->evaluate(\"new Error()\")", "Error: Unknown error");
776 toString
.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", "22");
777 toString
.insert("engine->evaluate(\"Undefined\")", "ReferenceError: Can't find variable: Undefined");
778 toString
.insert("engine->evaluate(\"Null\")", "ReferenceError: Can't find variable: Null");
779 toString
.insert("engine->evaluate(\"True\")", "ReferenceError: Can't find variable: True");
780 toString
.insert("engine->evaluate(\"False\")", "ReferenceError: Can't find variable: False");
781 toString
.insert("engine->evaluate(\"undefined\")", "undefined");
782 toString
.insert("engine->evaluate(\"null\")", "null");
783 toString
.insert("engine->evaluate(\"true\")", "true");
784 toString
.insert("engine->evaluate(\"false\")", "false");
785 toString
.insert("engine->evaluate(\"122\")", "122");
786 toString
.insert("engine->evaluate(\"124\")", "124");
787 toString
.insert("engine->evaluate(\"0\")", "0");
788 toString
.insert("engine->evaluate(\"0.0\")", "0");
789 toString
.insert("engine->evaluate(\"123.0\")", "123");
790 toString
.insert("engine->evaluate(\"6.37e-8\")", "6.37e-8");
791 toString
.insert("engine->evaluate(\"-6.37e-8\")", "-6.37e-8");
792 toString
.insert("engine->evaluate(\"0x43211234\")", "1126240820");
793 toString
.insert("engine->evaluate(\"0x10000\")", "65536");
794 toString
.insert("engine->evaluate(\"0x10001\")", "65537");
795 toString
.insert("engine->evaluate(\"NaN\")", "NaN");
796 toString
.insert("engine->evaluate(\"Infinity\")", "Infinity");
797 toString
.insert("engine->evaluate(\"-Infinity\")", "-Infinity");
798 toString
.insert("engine->evaluate(\"'ciao'\")", "ciao");
799 toString
.insert("engine->evaluate(\"''\")", "");
800 toString
.insert("engine->evaluate(\"'0'\")", "0");
801 toString
.insert("engine->evaluate(\"'123'\")", "123");
802 toString
.insert("engine->evaluate(\"'12.4'\")", "12.4");
803 toString
.insert("engine->nullValue()", "null");
804 toString
.insert("engine->undefinedValue()", "undefined");
806 newRow(expr
) << toString
.value(expr
);
809 void tst_QScriptValue::toString_test(const char*, const QScriptValue
& value
)
811 QFETCH(QString
, expected
);
812 QCOMPARE(value
.toString(), expected
);
813 QCOMPARE(value
.toString(), expected
);
816 DEFINE_TEST_FUNCTION(toString
)
819 void tst_QScriptValue::toNumber_initData()
821 QTest::addColumn
<qsreal
>("expected");
825 void tst_QScriptValue::toNumber_makeData(const char* expr
)
827 static QHash
<QString
, qsreal
> toNumber
;
828 if (toNumber
.isEmpty()) {
829 toNumber
.insert("QScriptValue()", 0);
830 toNumber
.insert("QScriptValue(QScriptValue::UndefinedValue)", qQNaN());
831 toNumber
.insert("QScriptValue(QScriptValue::NullValue)", 0);
832 toNumber
.insert("QScriptValue(true)", 1);
833 toNumber
.insert("QScriptValue(false)", 0);
834 toNumber
.insert("QScriptValue(int(122))", 122);
835 toNumber
.insert("QScriptValue(uint(124))", 124);
836 toNumber
.insert("QScriptValue(0)", 0);
837 toNumber
.insert("QScriptValue(0.0)", 0);
838 toNumber
.insert("QScriptValue(123.0)", 123);
839 toNumber
.insert("QScriptValue(6.37e-8)", 6.369999999999999e-08);
840 toNumber
.insert("QScriptValue(-6.37e-8)", -6.369999999999999e-08);
841 toNumber
.insert("QScriptValue(0x43211234)", 1126240820);
842 toNumber
.insert("QScriptValue(0x10000)", 65536);
843 toNumber
.insert("QScriptValue(0x10001)", 65537);
844 toNumber
.insert("QScriptValue(qSNaN())", qQNaN());
845 toNumber
.insert("QScriptValue(qQNaN())", qQNaN());
846 toNumber
.insert("QScriptValue(qInf())", qInf());
847 toNumber
.insert("QScriptValue(-qInf())", qInf());
848 toNumber
.insert("QScriptValue(\"NaN\")", qQNaN());
849 toNumber
.insert("QScriptValue(\"Infinity\")", qInf());
850 toNumber
.insert("QScriptValue(\"-Infinity\")", qInf());
851 toNumber
.insert("QScriptValue(\"ciao\")", qQNaN());
852 toNumber
.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", qQNaN());
853 toNumber
.insert("QScriptValue(QString(\"\"))", 0);
854 toNumber
.insert("QScriptValue(QString())", 0);
855 toNumber
.insert("QScriptValue(QString(\"0\"))", 0);
856 toNumber
.insert("QScriptValue(QString(\"123\"))", 123);
857 toNumber
.insert("QScriptValue(QString(\"12.4\"))", 12.4);
858 toNumber
.insert("QScriptValue(0, QScriptValue::UndefinedValue)", qQNaN());
859 toNumber
.insert("QScriptValue(0, QScriptValue::NullValue)", 0);
860 toNumber
.insert("QScriptValue(0, true)", 1);
861 toNumber
.insert("QScriptValue(0, false)", 0);
862 toNumber
.insert("QScriptValue(0, int(122))", 122);
863 toNumber
.insert("QScriptValue(0, uint(124))", 124);
864 toNumber
.insert("QScriptValue(0, 0)", 0);
865 toNumber
.insert("QScriptValue(0, 0.0)", 0);
866 toNumber
.insert("QScriptValue(0, 123.0)", 123);
867 toNumber
.insert("QScriptValue(0, 6.37e-8)", 6.369999999999999e-08);
868 toNumber
.insert("QScriptValue(0, -6.37e-8)", -6.369999999999999e-08);
869 toNumber
.insert("QScriptValue(0, 0x43211234)", 1126240820);
870 toNumber
.insert("QScriptValue(0, 0x10000)", 65536);
871 toNumber
.insert("QScriptValue(0, 0x10001)", 65537);
872 toNumber
.insert("QScriptValue(0, qSNaN())", qQNaN());
873 toNumber
.insert("QScriptValue(0, qQNaN())", qQNaN());
874 toNumber
.insert("QScriptValue(0, qInf())", qInf());
875 toNumber
.insert("QScriptValue(0, -qInf())", qInf());
876 toNumber
.insert("QScriptValue(0, \"NaN\")", qQNaN());
877 toNumber
.insert("QScriptValue(0, \"Infinity\")", qInf());
878 toNumber
.insert("QScriptValue(0, \"-Infinity\")", qInf());
879 toNumber
.insert("QScriptValue(0, \"ciao\")", qQNaN());
880 toNumber
.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", qQNaN());
881 toNumber
.insert("QScriptValue(0, QString(\"\"))", 0);
882 toNumber
.insert("QScriptValue(0, QString())", 0);
883 toNumber
.insert("QScriptValue(0, QString(\"0\"))", 0);
884 toNumber
.insert("QScriptValue(0, QString(\"123\"))", 123);
885 toNumber
.insert("QScriptValue(0, QString(\"12.3\"))", 12.3);
886 toNumber
.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", qQNaN());
887 toNumber
.insert("QScriptValue(engine, QScriptValue::NullValue)", 0);
888 toNumber
.insert("QScriptValue(engine, true)", 1);
889 toNumber
.insert("QScriptValue(engine, false)", 0);
890 toNumber
.insert("QScriptValue(engine, int(122))", 122);
891 toNumber
.insert("QScriptValue(engine, uint(124))", 124);
892 toNumber
.insert("QScriptValue(engine, 0)", 0);
893 toNumber
.insert("QScriptValue(engine, 0.0)", 0);
894 toNumber
.insert("QScriptValue(engine, 123.0)", 123);
895 toNumber
.insert("QScriptValue(engine, 6.37e-8)", 6.369999999999999e-08);
896 toNumber
.insert("QScriptValue(engine, -6.37e-8)", -6.369999999999999e-08);
897 toNumber
.insert("QScriptValue(engine, 0x43211234)", 1126240820);
898 toNumber
.insert("QScriptValue(engine, 0x10000)", 65536);
899 toNumber
.insert("QScriptValue(engine, 0x10001)", 65537);
900 toNumber
.insert("QScriptValue(engine, qSNaN())", qQNaN());
901 toNumber
.insert("QScriptValue(engine, qQNaN())", qQNaN());
902 toNumber
.insert("QScriptValue(engine, qInf())", qInf());
903 toNumber
.insert("QScriptValue(engine, -qInf())", qInf());
904 toNumber
.insert("QScriptValue(engine, \"NaN\")", qQNaN());
905 toNumber
.insert("QScriptValue(engine, \"Infinity\")", qInf());
906 toNumber
.insert("QScriptValue(engine, \"-Infinity\")", qInf());
907 toNumber
.insert("QScriptValue(engine, \"ciao\")", qQNaN());
908 toNumber
.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", qQNaN());
909 toNumber
.insert("QScriptValue(engine, QString(\"\"))", 0);
910 toNumber
.insert("QScriptValue(engine, QString())", 0);
911 toNumber
.insert("QScriptValue(engine, QString(\"0\"))", 0);
912 toNumber
.insert("QScriptValue(engine, QString(\"123\"))", 123);
913 toNumber
.insert("QScriptValue(engine, QString(\"1.23\"))", 1.23);
914 toNumber
.insert("engine->evaluate(\"[]\")", 0);
915 toNumber
.insert("engine->evaluate(\"{}\")", qQNaN());
916 toNumber
.insert("engine->evaluate(\"Object.prototype\")", qQNaN());
917 toNumber
.insert("engine->evaluate(\"Date.prototype\")", qQNaN());
918 toNumber
.insert("engine->evaluate(\"Array.prototype\")", 0);
919 toNumber
.insert("engine->evaluate(\"Function.prototype\")", qQNaN());
920 toNumber
.insert("engine->evaluate(\"Error.prototype\")", qQNaN());
921 toNumber
.insert("engine->evaluate(\"Object\")", qQNaN());
922 toNumber
.insert("engine->evaluate(\"Array\")", qQNaN());
923 toNumber
.insert("engine->evaluate(\"Number\")", qQNaN());
924 toNumber
.insert("engine->evaluate(\"Function\")", qQNaN());
925 toNumber
.insert("engine->evaluate(\"(function() { return 1; })\")", qQNaN());
926 toNumber
.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", qQNaN());
927 toNumber
.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", qQNaN());
928 toNumber
.insert("engine->evaluate(\"/foo/\")", qQNaN());
929 toNumber
.insert("engine->evaluate(\"new Object()\")", qQNaN());
930 toNumber
.insert("engine->evaluate(\"new Array()\")", 0);
931 toNumber
.insert("engine->evaluate(\"new Error()\")", qQNaN());
932 toNumber
.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22);
933 toNumber
.insert("engine->evaluate(\"Undefined\")", qQNaN());
934 toNumber
.insert("engine->evaluate(\"Null\")", qQNaN());
935 toNumber
.insert("engine->evaluate(\"True\")", qQNaN());
936 toNumber
.insert("engine->evaluate(\"False\")", qQNaN());
937 toNumber
.insert("engine->evaluate(\"undefined\")", qQNaN());
938 toNumber
.insert("engine->evaluate(\"null\")", 0);
939 toNumber
.insert("engine->evaluate(\"true\")", 1);
940 toNumber
.insert("engine->evaluate(\"false\")", 0);
941 toNumber
.insert("engine->evaluate(\"122\")", 122);
942 toNumber
.insert("engine->evaluate(\"124\")", 124);
943 toNumber
.insert("engine->evaluate(\"0\")", 0);
944 toNumber
.insert("engine->evaluate(\"0.0\")", 0);
945 toNumber
.insert("engine->evaluate(\"123.0\")", 123);
946 toNumber
.insert("engine->evaluate(\"6.37e-8\")", 6.369999999999999e-08);
947 toNumber
.insert("engine->evaluate(\"-6.37e-8\")", -6.369999999999999e-08);
948 toNumber
.insert("engine->evaluate(\"0x43211234\")", 1126240820);
949 toNumber
.insert("engine->evaluate(\"0x10000\")", 65536);
950 toNumber
.insert("engine->evaluate(\"0x10001\")", 65537);
951 toNumber
.insert("engine->evaluate(\"NaN\")", qQNaN());
952 toNumber
.insert("engine->evaluate(\"Infinity\")", qInf());
953 toNumber
.insert("engine->evaluate(\"-Infinity\")", qInf());
954 toNumber
.insert("engine->evaluate(\"'ciao'\")", qQNaN());
955 toNumber
.insert("engine->evaluate(\"''\")", 0);
956 toNumber
.insert("engine->evaluate(\"'0'\")", 0);
957 toNumber
.insert("engine->evaluate(\"'123'\")", 123);
958 toNumber
.insert("engine->evaluate(\"'12.4'\")", 12.4);
959 toNumber
.insert("engine->nullValue()", 0);
960 toNumber
.insert("engine->undefinedValue()", qQNaN());
962 newRow(expr
) << toNumber
.value(expr
);
965 void tst_QScriptValue::toNumber_test(const char*, const QScriptValue
& value
)
967 QFETCH(qsreal
, expected
);
968 if (qIsNaN(expected
)) {
969 QVERIFY(qIsNaN(value
.toNumber()));
972 if (qIsInf(expected
)) {
973 QVERIFY(qIsInf(value
.toNumber()));
974 QVERIFY(qIsInf(value
.toNumber()));
977 QCOMPARE(value
.toNumber(), expected
);
978 QCOMPARE(value
.toNumber(), expected
);
981 DEFINE_TEST_FUNCTION(toNumber
)
984 void tst_QScriptValue::toBool_initData()
986 QTest::addColumn
<bool>("expected");
990 void tst_QScriptValue::toBool_makeData(const char* expr
)
992 static QHash
<QString
, bool> toBool
;
993 if (toBool
.isEmpty()) {
994 toBool
.insert("QScriptValue()", false);
995 toBool
.insert("QScriptValue(QScriptValue::UndefinedValue)", false);
996 toBool
.insert("QScriptValue(QScriptValue::NullValue)", false);
997 toBool
.insert("QScriptValue(true)", true);
998 toBool
.insert("QScriptValue(false)", false);
999 toBool
.insert("QScriptValue(int(122))", true);
1000 toBool
.insert("QScriptValue(uint(124))", true);
1001 toBool
.insert("QScriptValue(0)", false);
1002 toBool
.insert("QScriptValue(0.0)", false);
1003 toBool
.insert("QScriptValue(123.0)", true);
1004 toBool
.insert("QScriptValue(6.37e-8)", true);
1005 toBool
.insert("QScriptValue(-6.37e-8)", true);
1006 toBool
.insert("QScriptValue(0x43211234)", true);
1007 toBool
.insert("QScriptValue(0x10000)", true);
1008 toBool
.insert("QScriptValue(0x10001)", true);
1009 toBool
.insert("QScriptValue(qSNaN())", false);
1010 toBool
.insert("QScriptValue(qQNaN())", false);
1011 toBool
.insert("QScriptValue(qInf())", true);
1012 toBool
.insert("QScriptValue(-qInf())", true);
1013 toBool
.insert("QScriptValue(\"NaN\")", true);
1014 toBool
.insert("QScriptValue(\"Infinity\")", true);
1015 toBool
.insert("QScriptValue(\"-Infinity\")", true);
1016 toBool
.insert("QScriptValue(\"ciao\")", true);
1017 toBool
.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", true);
1018 toBool
.insert("QScriptValue(QString(\"\"))", false);
1019 toBool
.insert("QScriptValue(QString())", false);
1020 toBool
.insert("QScriptValue(QString(\"0\"))", true);
1021 toBool
.insert("QScriptValue(QString(\"123\"))", true);
1022 toBool
.insert("QScriptValue(QString(\"12.4\"))", true);
1023 toBool
.insert("QScriptValue(0, QScriptValue::UndefinedValue)", false);
1024 toBool
.insert("QScriptValue(0, QScriptValue::NullValue)", false);
1025 toBool
.insert("QScriptValue(0, true)", true);
1026 toBool
.insert("QScriptValue(0, false)", false);
1027 toBool
.insert("QScriptValue(0, int(122))", true);
1028 toBool
.insert("QScriptValue(0, uint(124))", true);
1029 toBool
.insert("QScriptValue(0, 0)", false);
1030 toBool
.insert("QScriptValue(0, 0.0)", false);
1031 toBool
.insert("QScriptValue(0, 123.0)", true);
1032 toBool
.insert("QScriptValue(0, 6.37e-8)", true);
1033 toBool
.insert("QScriptValue(0, -6.37e-8)", true);
1034 toBool
.insert("QScriptValue(0, 0x43211234)", true);
1035 toBool
.insert("QScriptValue(0, 0x10000)", true);
1036 toBool
.insert("QScriptValue(0, 0x10001)", true);
1037 toBool
.insert("QScriptValue(0, qSNaN())", false);
1038 toBool
.insert("QScriptValue(0, qQNaN())", false);
1039 toBool
.insert("QScriptValue(0, qInf())", true);
1040 toBool
.insert("QScriptValue(0, -qInf())", true);
1041 toBool
.insert("QScriptValue(0, \"NaN\")", true);
1042 toBool
.insert("QScriptValue(0, \"Infinity\")", true);
1043 toBool
.insert("QScriptValue(0, \"-Infinity\")", true);
1044 toBool
.insert("QScriptValue(0, \"ciao\")", true);
1045 toBool
.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", true);
1046 toBool
.insert("QScriptValue(0, QString(\"\"))", false);
1047 toBool
.insert("QScriptValue(0, QString())", false);
1048 toBool
.insert("QScriptValue(0, QString(\"0\"))", true);
1049 toBool
.insert("QScriptValue(0, QString(\"123\"))", true);
1050 toBool
.insert("QScriptValue(0, QString(\"12.3\"))", true);
1051 toBool
.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", false);
1052 toBool
.insert("QScriptValue(engine, QScriptValue::NullValue)", false);
1053 toBool
.insert("QScriptValue(engine, true)", true);
1054 toBool
.insert("QScriptValue(engine, false)", false);
1055 toBool
.insert("QScriptValue(engine, int(122))", true);
1056 toBool
.insert("QScriptValue(engine, uint(124))", true);
1057 toBool
.insert("QScriptValue(engine, 0)", false);
1058 toBool
.insert("QScriptValue(engine, 0.0)", false);
1059 toBool
.insert("QScriptValue(engine, 123.0)", true);
1060 toBool
.insert("QScriptValue(engine, 6.37e-8)", true);
1061 toBool
.insert("QScriptValue(engine, -6.37e-8)", true);
1062 toBool
.insert("QScriptValue(engine, 0x43211234)", true);
1063 toBool
.insert("QScriptValue(engine, 0x10000)", true);
1064 toBool
.insert("QScriptValue(engine, 0x10001)", true);
1065 toBool
.insert("QScriptValue(engine, qSNaN())", false);
1066 toBool
.insert("QScriptValue(engine, qQNaN())", false);
1067 toBool
.insert("QScriptValue(engine, qInf())", true);
1068 toBool
.insert("QScriptValue(engine, -qInf())", true);
1069 toBool
.insert("QScriptValue(engine, \"NaN\")", true);
1070 toBool
.insert("QScriptValue(engine, \"Infinity\")", true);
1071 toBool
.insert("QScriptValue(engine, \"-Infinity\")", true);
1072 toBool
.insert("QScriptValue(engine, \"ciao\")", true);
1073 toBool
.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", true);
1074 toBool
.insert("QScriptValue(engine, QString(\"\"))", false);
1075 toBool
.insert("QScriptValue(engine, QString())", false);
1076 toBool
.insert("QScriptValue(engine, QString(\"0\"))", true);
1077 toBool
.insert("QScriptValue(engine, QString(\"123\"))", true);
1078 toBool
.insert("QScriptValue(engine, QString(\"1.23\"))", true);
1079 toBool
.insert("engine->evaluate(\"[]\")", true);
1080 toBool
.insert("engine->evaluate(\"{}\")", false);
1081 toBool
.insert("engine->evaluate(\"Object.prototype\")", true);
1082 toBool
.insert("engine->evaluate(\"Date.prototype\")", true);
1083 toBool
.insert("engine->evaluate(\"Array.prototype\")", true);
1084 toBool
.insert("engine->evaluate(\"Function.prototype\")", true);
1085 toBool
.insert("engine->evaluate(\"Error.prototype\")", true);
1086 toBool
.insert("engine->evaluate(\"Object\")", true);
1087 toBool
.insert("engine->evaluate(\"Array\")", true);
1088 toBool
.insert("engine->evaluate(\"Number\")", true);
1089 toBool
.insert("engine->evaluate(\"Function\")", true);
1090 toBool
.insert("engine->evaluate(\"(function() { return 1; })\")", true);
1091 toBool
.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", true);
1092 toBool
.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", true);
1093 toBool
.insert("engine->evaluate(\"/foo/\")", true);
1094 toBool
.insert("engine->evaluate(\"new Object()\")", true);
1095 toBool
.insert("engine->evaluate(\"new Array()\")", true);
1096 toBool
.insert("engine->evaluate(\"new Error()\")", true);
1097 toBool
.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", true);
1098 toBool
.insert("engine->evaluate(\"Undefined\")", true);
1099 toBool
.insert("engine->evaluate(\"Null\")", true);
1100 toBool
.insert("engine->evaluate(\"True\")", true);
1101 toBool
.insert("engine->evaluate(\"False\")", true);
1102 toBool
.insert("engine->evaluate(\"undefined\")", false);
1103 toBool
.insert("engine->evaluate(\"null\")", false);
1104 toBool
.insert("engine->evaluate(\"true\")", true);
1105 toBool
.insert("engine->evaluate(\"false\")", false);
1106 toBool
.insert("engine->evaluate(\"122\")", true);
1107 toBool
.insert("engine->evaluate(\"124\")", true);
1108 toBool
.insert("engine->evaluate(\"0\")", false);
1109 toBool
.insert("engine->evaluate(\"0.0\")", false);
1110 toBool
.insert("engine->evaluate(\"123.0\")", true);
1111 toBool
.insert("engine->evaluate(\"6.37e-8\")", true);
1112 toBool
.insert("engine->evaluate(\"-6.37e-8\")", true);
1113 toBool
.insert("engine->evaluate(\"0x43211234\")", true);
1114 toBool
.insert("engine->evaluate(\"0x10000\")", true);
1115 toBool
.insert("engine->evaluate(\"0x10001\")", true);
1116 toBool
.insert("engine->evaluate(\"NaN\")", false);
1117 toBool
.insert("engine->evaluate(\"Infinity\")", true);
1118 toBool
.insert("engine->evaluate(\"-Infinity\")", true);
1119 toBool
.insert("engine->evaluate(\"'ciao'\")", true);
1120 toBool
.insert("engine->evaluate(\"''\")", false);
1121 toBool
.insert("engine->evaluate(\"'0'\")", true);
1122 toBool
.insert("engine->evaluate(\"'123'\")", true);
1123 toBool
.insert("engine->evaluate(\"'12.4'\")", true);
1124 toBool
.insert("engine->nullValue()", false);
1125 toBool
.insert("engine->undefinedValue()", false);
1127 newRow(expr
) << toBool
.value(expr
);
1130 void tst_QScriptValue::toBool_test(const char*, const QScriptValue
& value
)
1132 QFETCH(bool, expected
);
1133 QCOMPARE(value
.toBool(), expected
);
1134 QCOMPARE(value
.toBool(), expected
);
1137 DEFINE_TEST_FUNCTION(toBool
)
1140 void tst_QScriptValue::toBoolean_initData()
1142 QTest::addColumn
<bool>("expected");
1146 void tst_QScriptValue::toBoolean_makeData(const char* expr
)
1148 static QHash
<QString
, bool> toBoolean
;
1149 if (toBoolean
.isEmpty()) {
1150 toBoolean
.insert("QScriptValue()", false);
1151 toBoolean
.insert("QScriptValue(QScriptValue::UndefinedValue)", false);
1152 toBoolean
.insert("QScriptValue(QScriptValue::NullValue)", false);
1153 toBoolean
.insert("QScriptValue(true)", true);
1154 toBoolean
.insert("QScriptValue(false)", false);
1155 toBoolean
.insert("QScriptValue(int(122))", true);
1156 toBoolean
.insert("QScriptValue(uint(124))", true);
1157 toBoolean
.insert("QScriptValue(0)", false);
1158 toBoolean
.insert("QScriptValue(0.0)", false);
1159 toBoolean
.insert("QScriptValue(123.0)", true);
1160 toBoolean
.insert("QScriptValue(6.37e-8)", true);
1161 toBoolean
.insert("QScriptValue(-6.37e-8)", true);
1162 toBoolean
.insert("QScriptValue(0x43211234)", true);
1163 toBoolean
.insert("QScriptValue(0x10000)", true);
1164 toBoolean
.insert("QScriptValue(0x10001)", true);
1165 toBoolean
.insert("QScriptValue(qSNaN())", false);
1166 toBoolean
.insert("QScriptValue(qQNaN())", false);
1167 toBoolean
.insert("QScriptValue(qInf())", true);
1168 toBoolean
.insert("QScriptValue(-qInf())", true);
1169 toBoolean
.insert("QScriptValue(\"NaN\")", true);
1170 toBoolean
.insert("QScriptValue(\"Infinity\")", true);
1171 toBoolean
.insert("QScriptValue(\"-Infinity\")", true);
1172 toBoolean
.insert("QScriptValue(\"ciao\")", true);
1173 toBoolean
.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", true);
1174 toBoolean
.insert("QScriptValue(QString(\"\"))", false);
1175 toBoolean
.insert("QScriptValue(QString())", false);
1176 toBoolean
.insert("QScriptValue(QString(\"0\"))", true);
1177 toBoolean
.insert("QScriptValue(QString(\"123\"))", true);
1178 toBoolean
.insert("QScriptValue(QString(\"12.4\"))", true);
1179 toBoolean
.insert("QScriptValue(0, QScriptValue::UndefinedValue)", false);
1180 toBoolean
.insert("QScriptValue(0, QScriptValue::NullValue)", false);
1181 toBoolean
.insert("QScriptValue(0, true)", true);
1182 toBoolean
.insert("QScriptValue(0, false)", false);
1183 toBoolean
.insert("QScriptValue(0, int(122))", true);
1184 toBoolean
.insert("QScriptValue(0, uint(124))", true);
1185 toBoolean
.insert("QScriptValue(0, 0)", false);
1186 toBoolean
.insert("QScriptValue(0, 0.0)", false);
1187 toBoolean
.insert("QScriptValue(0, 123.0)", true);
1188 toBoolean
.insert("QScriptValue(0, 6.37e-8)", true);
1189 toBoolean
.insert("QScriptValue(0, -6.37e-8)", true);
1190 toBoolean
.insert("QScriptValue(0, 0x43211234)", true);
1191 toBoolean
.insert("QScriptValue(0, 0x10000)", true);
1192 toBoolean
.insert("QScriptValue(0, 0x10001)", true);
1193 toBoolean
.insert("QScriptValue(0, qSNaN())", false);
1194 toBoolean
.insert("QScriptValue(0, qQNaN())", false);
1195 toBoolean
.insert("QScriptValue(0, qInf())", true);
1196 toBoolean
.insert("QScriptValue(0, -qInf())", true);
1197 toBoolean
.insert("QScriptValue(0, \"NaN\")", true);
1198 toBoolean
.insert("QScriptValue(0, \"Infinity\")", true);
1199 toBoolean
.insert("QScriptValue(0, \"-Infinity\")", true);
1200 toBoolean
.insert("QScriptValue(0, \"ciao\")", true);
1201 toBoolean
.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", true);
1202 toBoolean
.insert("QScriptValue(0, QString(\"\"))", false);
1203 toBoolean
.insert("QScriptValue(0, QString())", false);
1204 toBoolean
.insert("QScriptValue(0, QString(\"0\"))", true);
1205 toBoolean
.insert("QScriptValue(0, QString(\"123\"))", true);
1206 toBoolean
.insert("QScriptValue(0, QString(\"12.3\"))", true);
1207 toBoolean
.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", false);
1208 toBoolean
.insert("QScriptValue(engine, QScriptValue::NullValue)", false);
1209 toBoolean
.insert("QScriptValue(engine, true)", true);
1210 toBoolean
.insert("QScriptValue(engine, false)", false);
1211 toBoolean
.insert("QScriptValue(engine, int(122))", true);
1212 toBoolean
.insert("QScriptValue(engine, uint(124))", true);
1213 toBoolean
.insert("QScriptValue(engine, 0)", false);
1214 toBoolean
.insert("QScriptValue(engine, 0.0)", false);
1215 toBoolean
.insert("QScriptValue(engine, 123.0)", true);
1216 toBoolean
.insert("QScriptValue(engine, 6.37e-8)", true);
1217 toBoolean
.insert("QScriptValue(engine, -6.37e-8)", true);
1218 toBoolean
.insert("QScriptValue(engine, 0x43211234)", true);
1219 toBoolean
.insert("QScriptValue(engine, 0x10000)", true);
1220 toBoolean
.insert("QScriptValue(engine, 0x10001)", true);
1221 toBoolean
.insert("QScriptValue(engine, qSNaN())", false);
1222 toBoolean
.insert("QScriptValue(engine, qQNaN())", false);
1223 toBoolean
.insert("QScriptValue(engine, qInf())", true);
1224 toBoolean
.insert("QScriptValue(engine, -qInf())", true);
1225 toBoolean
.insert("QScriptValue(engine, \"NaN\")", true);
1226 toBoolean
.insert("QScriptValue(engine, \"Infinity\")", true);
1227 toBoolean
.insert("QScriptValue(engine, \"-Infinity\")", true);
1228 toBoolean
.insert("QScriptValue(engine, \"ciao\")", true);
1229 toBoolean
.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", true);
1230 toBoolean
.insert("QScriptValue(engine, QString(\"\"))", false);
1231 toBoolean
.insert("QScriptValue(engine, QString())", false);
1232 toBoolean
.insert("QScriptValue(engine, QString(\"0\"))", true);
1233 toBoolean
.insert("QScriptValue(engine, QString(\"123\"))", true);
1234 toBoolean
.insert("QScriptValue(engine, QString(\"1.23\"))", true);
1235 toBoolean
.insert("engine->evaluate(\"[]\")", true);
1236 toBoolean
.insert("engine->evaluate(\"{}\")", false);
1237 toBoolean
.insert("engine->evaluate(\"Object.prototype\")", true);
1238 toBoolean
.insert("engine->evaluate(\"Date.prototype\")", true);
1239 toBoolean
.insert("engine->evaluate(\"Array.prototype\")", true);
1240 toBoolean
.insert("engine->evaluate(\"Function.prototype\")", true);
1241 toBoolean
.insert("engine->evaluate(\"Error.prototype\")", true);
1242 toBoolean
.insert("engine->evaluate(\"Object\")", true);
1243 toBoolean
.insert("engine->evaluate(\"Array\")", true);
1244 toBoolean
.insert("engine->evaluate(\"Number\")", true);
1245 toBoolean
.insert("engine->evaluate(\"Function\")", true);
1246 toBoolean
.insert("engine->evaluate(\"(function() { return 1; })\")", true);
1247 toBoolean
.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", true);
1248 toBoolean
.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", true);
1249 toBoolean
.insert("engine->evaluate(\"/foo/\")", true);
1250 toBoolean
.insert("engine->evaluate(\"new Object()\")", true);
1251 toBoolean
.insert("engine->evaluate(\"new Array()\")", true);
1252 toBoolean
.insert("engine->evaluate(\"new Error()\")", true);
1253 toBoolean
.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", true);
1254 toBoolean
.insert("engine->evaluate(\"Undefined\")", true);
1255 toBoolean
.insert("engine->evaluate(\"Null\")", true);
1256 toBoolean
.insert("engine->evaluate(\"True\")", true);
1257 toBoolean
.insert("engine->evaluate(\"False\")", true);
1258 toBoolean
.insert("engine->evaluate(\"undefined\")", false);
1259 toBoolean
.insert("engine->evaluate(\"null\")", false);
1260 toBoolean
.insert("engine->evaluate(\"true\")", true);
1261 toBoolean
.insert("engine->evaluate(\"false\")", false);
1262 toBoolean
.insert("engine->evaluate(\"122\")", true);
1263 toBoolean
.insert("engine->evaluate(\"124\")", true);
1264 toBoolean
.insert("engine->evaluate(\"0\")", false);
1265 toBoolean
.insert("engine->evaluate(\"0.0\")", false);
1266 toBoolean
.insert("engine->evaluate(\"123.0\")", true);
1267 toBoolean
.insert("engine->evaluate(\"6.37e-8\")", true);
1268 toBoolean
.insert("engine->evaluate(\"-6.37e-8\")", true);
1269 toBoolean
.insert("engine->evaluate(\"0x43211234\")", true);
1270 toBoolean
.insert("engine->evaluate(\"0x10000\")", true);
1271 toBoolean
.insert("engine->evaluate(\"0x10001\")", true);
1272 toBoolean
.insert("engine->evaluate(\"NaN\")", false);
1273 toBoolean
.insert("engine->evaluate(\"Infinity\")", true);
1274 toBoolean
.insert("engine->evaluate(\"-Infinity\")", true);
1275 toBoolean
.insert("engine->evaluate(\"'ciao'\")", true);
1276 toBoolean
.insert("engine->evaluate(\"''\")", false);
1277 toBoolean
.insert("engine->evaluate(\"'0'\")", true);
1278 toBoolean
.insert("engine->evaluate(\"'123'\")", true);
1279 toBoolean
.insert("engine->evaluate(\"'12.4'\")", true);
1280 toBoolean
.insert("engine->nullValue()", false);
1281 toBoolean
.insert("engine->undefinedValue()", false);
1283 newRow(expr
) << toBoolean
.value(expr
);
1286 void tst_QScriptValue::toBoolean_test(const char*, const QScriptValue
& value
)
1288 QFETCH(bool, expected
);
1289 QCOMPARE(value
.toBoolean(), expected
);
1290 QCOMPARE(value
.toBoolean(), expected
);
1293 DEFINE_TEST_FUNCTION(toBoolean
)
1296 void tst_QScriptValue::toInteger_initData()
1298 QTest::addColumn
<qsreal
>("expected");
1302 void tst_QScriptValue::toInteger_makeData(const char* expr
)
1304 static QHash
<QString
, qsreal
> toInteger
;
1305 if (toInteger
.isEmpty()) {
1306 toInteger
.insert("QScriptValue()", 0);
1307 toInteger
.insert("QScriptValue(QScriptValue::UndefinedValue)", 0);
1308 toInteger
.insert("QScriptValue(QScriptValue::NullValue)", 0);
1309 toInteger
.insert("QScriptValue(true)", 1);
1310 toInteger
.insert("QScriptValue(false)", 0);
1311 toInteger
.insert("QScriptValue(int(122))", 122);
1312 toInteger
.insert("QScriptValue(uint(124))", 124);
1313 toInteger
.insert("QScriptValue(0)", 0);
1314 toInteger
.insert("QScriptValue(0.0)", 0);
1315 toInteger
.insert("QScriptValue(123.0)", 123);
1316 toInteger
.insert("QScriptValue(6.37e-8)", 0);
1317 toInteger
.insert("QScriptValue(-6.37e-8)", 0);
1318 toInteger
.insert("QScriptValue(0x43211234)", 1126240820);
1319 toInteger
.insert("QScriptValue(0x10000)", 65536);
1320 toInteger
.insert("QScriptValue(0x10001)", 65537);
1321 toInteger
.insert("QScriptValue(qSNaN())", 0);
1322 toInteger
.insert("QScriptValue(qQNaN())", 0);
1323 toInteger
.insert("QScriptValue(qInf())", qInf());
1324 toInteger
.insert("QScriptValue(-qInf())", qInf());
1325 toInteger
.insert("QScriptValue(\"NaN\")", 0);
1326 toInteger
.insert("QScriptValue(\"Infinity\")", qInf());
1327 toInteger
.insert("QScriptValue(\"-Infinity\")", qInf());
1328 toInteger
.insert("QScriptValue(\"ciao\")", 0);
1329 toInteger
.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", 0);
1330 toInteger
.insert("QScriptValue(QString(\"\"))", 0);
1331 toInteger
.insert("QScriptValue(QString())", 0);
1332 toInteger
.insert("QScriptValue(QString(\"0\"))", 0);
1333 toInteger
.insert("QScriptValue(QString(\"123\"))", 123);
1334 toInteger
.insert("QScriptValue(QString(\"12.4\"))", 12);
1335 toInteger
.insert("QScriptValue(0, QScriptValue::UndefinedValue)", 0);
1336 toInteger
.insert("QScriptValue(0, QScriptValue::NullValue)", 0);
1337 toInteger
.insert("QScriptValue(0, true)", 1);
1338 toInteger
.insert("QScriptValue(0, false)", 0);
1339 toInteger
.insert("QScriptValue(0, int(122))", 122);
1340 toInteger
.insert("QScriptValue(0, uint(124))", 124);
1341 toInteger
.insert("QScriptValue(0, 0)", 0);
1342 toInteger
.insert("QScriptValue(0, 0.0)", 0);
1343 toInteger
.insert("QScriptValue(0, 123.0)", 123);
1344 toInteger
.insert("QScriptValue(0, 6.37e-8)", 0);
1345 toInteger
.insert("QScriptValue(0, -6.37e-8)", 0);
1346 toInteger
.insert("QScriptValue(0, 0x43211234)", 1126240820);
1347 toInteger
.insert("QScriptValue(0, 0x10000)", 65536);
1348 toInteger
.insert("QScriptValue(0, 0x10001)", 65537);
1349 toInteger
.insert("QScriptValue(0, qSNaN())", 0);
1350 toInteger
.insert("QScriptValue(0, qQNaN())", 0);
1351 toInteger
.insert("QScriptValue(0, qInf())", qInf());
1352 toInteger
.insert("QScriptValue(0, -qInf())", qInf());
1353 toInteger
.insert("QScriptValue(0, \"NaN\")", 0);
1354 toInteger
.insert("QScriptValue(0, \"Infinity\")", qInf());
1355 toInteger
.insert("QScriptValue(0, \"-Infinity\")", qInf());
1356 toInteger
.insert("QScriptValue(0, \"ciao\")", 0);
1357 toInteger
.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", 0);
1358 toInteger
.insert("QScriptValue(0, QString(\"\"))", 0);
1359 toInteger
.insert("QScriptValue(0, QString())", 0);
1360 toInteger
.insert("QScriptValue(0, QString(\"0\"))", 0);
1361 toInteger
.insert("QScriptValue(0, QString(\"123\"))", 123);
1362 toInteger
.insert("QScriptValue(0, QString(\"12.3\"))", 12);
1363 toInteger
.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", 0);
1364 toInteger
.insert("QScriptValue(engine, QScriptValue::NullValue)", 0);
1365 toInteger
.insert("QScriptValue(engine, true)", 1);
1366 toInteger
.insert("QScriptValue(engine, false)", 0);
1367 toInteger
.insert("QScriptValue(engine, int(122))", 122);
1368 toInteger
.insert("QScriptValue(engine, uint(124))", 124);
1369 toInteger
.insert("QScriptValue(engine, 0)", 0);
1370 toInteger
.insert("QScriptValue(engine, 0.0)", 0);
1371 toInteger
.insert("QScriptValue(engine, 123.0)", 123);
1372 toInteger
.insert("QScriptValue(engine, 6.37e-8)", 0);
1373 toInteger
.insert("QScriptValue(engine, -6.37e-8)", 0);
1374 toInteger
.insert("QScriptValue(engine, 0x43211234)", 1126240820);
1375 toInteger
.insert("QScriptValue(engine, 0x10000)", 65536);
1376 toInteger
.insert("QScriptValue(engine, 0x10001)", 65537);
1377 toInteger
.insert("QScriptValue(engine, qSNaN())", 0);
1378 toInteger
.insert("QScriptValue(engine, qQNaN())", 0);
1379 toInteger
.insert("QScriptValue(engine, qInf())", qInf());
1380 toInteger
.insert("QScriptValue(engine, -qInf())", qInf());
1381 toInteger
.insert("QScriptValue(engine, \"NaN\")", 0);
1382 toInteger
.insert("QScriptValue(engine, \"Infinity\")", qInf());
1383 toInteger
.insert("QScriptValue(engine, \"-Infinity\")", qInf());
1384 toInteger
.insert("QScriptValue(engine, \"ciao\")", 0);
1385 toInteger
.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", 0);
1386 toInteger
.insert("QScriptValue(engine, QString(\"\"))", 0);
1387 toInteger
.insert("QScriptValue(engine, QString())", 0);
1388 toInteger
.insert("QScriptValue(engine, QString(\"0\"))", 0);
1389 toInteger
.insert("QScriptValue(engine, QString(\"123\"))", 123);
1390 toInteger
.insert("QScriptValue(engine, QString(\"1.23\"))", 1);
1391 toInteger
.insert("engine->evaluate(\"[]\")", 0);
1392 toInteger
.insert("engine->evaluate(\"{}\")", 0);
1393 toInteger
.insert("engine->evaluate(\"Object.prototype\")", 0);
1394 toInteger
.insert("engine->evaluate(\"Date.prototype\")", 0);
1395 toInteger
.insert("engine->evaluate(\"Array.prototype\")", 0);
1396 toInteger
.insert("engine->evaluate(\"Function.prototype\")", 0);
1397 toInteger
.insert("engine->evaluate(\"Error.prototype\")", 0);
1398 toInteger
.insert("engine->evaluate(\"Object\")", 0);
1399 toInteger
.insert("engine->evaluate(\"Array\")", 0);
1400 toInteger
.insert("engine->evaluate(\"Number\")", 0);
1401 toInteger
.insert("engine->evaluate(\"Function\")", 0);
1402 toInteger
.insert("engine->evaluate(\"(function() { return 1; })\")", 0);
1403 toInteger
.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", 0);
1404 toInteger
.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", 0);
1405 toInteger
.insert("engine->evaluate(\"/foo/\")", 0);
1406 toInteger
.insert("engine->evaluate(\"new Object()\")", 0);
1407 toInteger
.insert("engine->evaluate(\"new Array()\")", 0);
1408 toInteger
.insert("engine->evaluate(\"new Error()\")", 0);
1409 toInteger
.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22);
1410 toInteger
.insert("engine->evaluate(\"Undefined\")", 0);
1411 toInteger
.insert("engine->evaluate(\"Null\")", 0);
1412 toInteger
.insert("engine->evaluate(\"True\")", 0);
1413 toInteger
.insert("engine->evaluate(\"False\")", 0);
1414 toInteger
.insert("engine->evaluate(\"undefined\")", 0);
1415 toInteger
.insert("engine->evaluate(\"null\")", 0);
1416 toInteger
.insert("engine->evaluate(\"true\")", 1);
1417 toInteger
.insert("engine->evaluate(\"false\")", 0);
1418 toInteger
.insert("engine->evaluate(\"122\")", 122);
1419 toInteger
.insert("engine->evaluate(\"124\")", 124);
1420 toInteger
.insert("engine->evaluate(\"0\")", 0);
1421 toInteger
.insert("engine->evaluate(\"0.0\")", 0);
1422 toInteger
.insert("engine->evaluate(\"123.0\")", 123);
1423 toInteger
.insert("engine->evaluate(\"6.37e-8\")", 0);
1424 toInteger
.insert("engine->evaluate(\"-6.37e-8\")", 0);
1425 toInteger
.insert("engine->evaluate(\"0x43211234\")", 1126240820);
1426 toInteger
.insert("engine->evaluate(\"0x10000\")", 65536);
1427 toInteger
.insert("engine->evaluate(\"0x10001\")", 65537);
1428 toInteger
.insert("engine->evaluate(\"NaN\")", 0);
1429 toInteger
.insert("engine->evaluate(\"Infinity\")", qInf());
1430 toInteger
.insert("engine->evaluate(\"-Infinity\")", qInf());
1431 toInteger
.insert("engine->evaluate(\"'ciao'\")", 0);
1432 toInteger
.insert("engine->evaluate(\"''\")", 0);
1433 toInteger
.insert("engine->evaluate(\"'0'\")", 0);
1434 toInteger
.insert("engine->evaluate(\"'123'\")", 123);
1435 toInteger
.insert("engine->evaluate(\"'12.4'\")", 12);
1436 toInteger
.insert("engine->nullValue()", 0);
1437 toInteger
.insert("engine->undefinedValue()", 0);
1439 newRow(expr
) << toInteger
.value(expr
);
1442 void tst_QScriptValue::toInteger_test(const char*, const QScriptValue
& value
)
1444 QFETCH(qsreal
, expected
);
1445 if (qIsInf(expected
)) {
1446 QVERIFY(qIsInf(value
.toInteger()));
1447 QVERIFY(qIsInf(value
.toInteger()));
1450 QCOMPARE(value
.toInteger(), expected
);
1451 QCOMPARE(value
.toInteger(), expected
);
1454 DEFINE_TEST_FUNCTION(toInteger
)
1457 void tst_QScriptValue::toInt32_initData()
1459 QTest::addColumn
<qint32
>("expected");
1463 void tst_QScriptValue::toInt32_makeData(const char* expr
)
1465 static QHash
<QString
, qint32
> toInt32
;
1466 if (toInt32
.isEmpty()) {
1467 toInt32
.insert("QScriptValue()", 0);
1468 toInt32
.insert("QScriptValue(QScriptValue::UndefinedValue)", 0);
1469 toInt32
.insert("QScriptValue(QScriptValue::NullValue)", 0);
1470 toInt32
.insert("QScriptValue(true)", 1);
1471 toInt32
.insert("QScriptValue(false)", 0);
1472 toInt32
.insert("QScriptValue(int(122))", 122);
1473 toInt32
.insert("QScriptValue(uint(124))", 124);
1474 toInt32
.insert("QScriptValue(0)", 0);
1475 toInt32
.insert("QScriptValue(0.0)", 0);
1476 toInt32
.insert("QScriptValue(123.0)", 123);
1477 toInt32
.insert("QScriptValue(6.37e-8)", 0);
1478 toInt32
.insert("QScriptValue(-6.37e-8)", 0);
1479 toInt32
.insert("QScriptValue(0x43211234)", 1126240820);
1480 toInt32
.insert("QScriptValue(0x10000)", 65536);
1481 toInt32
.insert("QScriptValue(0x10001)", 65537);
1482 toInt32
.insert("QScriptValue(qSNaN())", 0);
1483 toInt32
.insert("QScriptValue(qQNaN())", 0);
1484 toInt32
.insert("QScriptValue(qInf())", 0);
1485 toInt32
.insert("QScriptValue(-qInf())", 0);
1486 toInt32
.insert("QScriptValue(\"NaN\")", 0);
1487 toInt32
.insert("QScriptValue(\"Infinity\")", 0);
1488 toInt32
.insert("QScriptValue(\"-Infinity\")", 0);
1489 toInt32
.insert("QScriptValue(\"ciao\")", 0);
1490 toInt32
.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", 0);
1491 toInt32
.insert("QScriptValue(QString(\"\"))", 0);
1492 toInt32
.insert("QScriptValue(QString())", 0);
1493 toInt32
.insert("QScriptValue(QString(\"0\"))", 0);
1494 toInt32
.insert("QScriptValue(QString(\"123\"))", 123);
1495 toInt32
.insert("QScriptValue(QString(\"12.4\"))", 12);
1496 toInt32
.insert("QScriptValue(0, QScriptValue::UndefinedValue)", 0);
1497 toInt32
.insert("QScriptValue(0, QScriptValue::NullValue)", 0);
1498 toInt32
.insert("QScriptValue(0, true)", 1);
1499 toInt32
.insert("QScriptValue(0, false)", 0);
1500 toInt32
.insert("QScriptValue(0, int(122))", 122);
1501 toInt32
.insert("QScriptValue(0, uint(124))", 124);
1502 toInt32
.insert("QScriptValue(0, 0)", 0);
1503 toInt32
.insert("QScriptValue(0, 0.0)", 0);
1504 toInt32
.insert("QScriptValue(0, 123.0)", 123);
1505 toInt32
.insert("QScriptValue(0, 6.37e-8)", 0);
1506 toInt32
.insert("QScriptValue(0, -6.37e-8)", 0);
1507 toInt32
.insert("QScriptValue(0, 0x43211234)", 1126240820);
1508 toInt32
.insert("QScriptValue(0, 0x10000)", 65536);
1509 toInt32
.insert("QScriptValue(0, 0x10001)", 65537);
1510 toInt32
.insert("QScriptValue(0, qSNaN())", 0);
1511 toInt32
.insert("QScriptValue(0, qQNaN())", 0);
1512 toInt32
.insert("QScriptValue(0, qInf())", 0);
1513 toInt32
.insert("QScriptValue(0, -qInf())", 0);
1514 toInt32
.insert("QScriptValue(0, \"NaN\")", 0);
1515 toInt32
.insert("QScriptValue(0, \"Infinity\")", 0);
1516 toInt32
.insert("QScriptValue(0, \"-Infinity\")", 0);
1517 toInt32
.insert("QScriptValue(0, \"ciao\")", 0);
1518 toInt32
.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", 0);
1519 toInt32
.insert("QScriptValue(0, QString(\"\"))", 0);
1520 toInt32
.insert("QScriptValue(0, QString())", 0);
1521 toInt32
.insert("QScriptValue(0, QString(\"0\"))", 0);
1522 toInt32
.insert("QScriptValue(0, QString(\"123\"))", 123);
1523 toInt32
.insert("QScriptValue(0, QString(\"12.3\"))", 12);
1524 toInt32
.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", 0);
1525 toInt32
.insert("QScriptValue(engine, QScriptValue::NullValue)", 0);
1526 toInt32
.insert("QScriptValue(engine, true)", 1);
1527 toInt32
.insert("QScriptValue(engine, false)", 0);
1528 toInt32
.insert("QScriptValue(engine, int(122))", 122);
1529 toInt32
.insert("QScriptValue(engine, uint(124))", 124);
1530 toInt32
.insert("QScriptValue(engine, 0)", 0);
1531 toInt32
.insert("QScriptValue(engine, 0.0)", 0);
1532 toInt32
.insert("QScriptValue(engine, 123.0)", 123);
1533 toInt32
.insert("QScriptValue(engine, 6.37e-8)", 0);
1534 toInt32
.insert("QScriptValue(engine, -6.37e-8)", 0);
1535 toInt32
.insert("QScriptValue(engine, 0x43211234)", 1126240820);
1536 toInt32
.insert("QScriptValue(engine, 0x10000)", 65536);
1537 toInt32
.insert("QScriptValue(engine, 0x10001)", 65537);
1538 toInt32
.insert("QScriptValue(engine, qSNaN())", 0);
1539 toInt32
.insert("QScriptValue(engine, qQNaN())", 0);
1540 toInt32
.insert("QScriptValue(engine, qInf())", 0);
1541 toInt32
.insert("QScriptValue(engine, -qInf())", 0);
1542 toInt32
.insert("QScriptValue(engine, \"NaN\")", 0);
1543 toInt32
.insert("QScriptValue(engine, \"Infinity\")", 0);
1544 toInt32
.insert("QScriptValue(engine, \"-Infinity\")", 0);
1545 toInt32
.insert("QScriptValue(engine, \"ciao\")", 0);
1546 toInt32
.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", 0);
1547 toInt32
.insert("QScriptValue(engine, QString(\"\"))", 0);
1548 toInt32
.insert("QScriptValue(engine, QString())", 0);
1549 toInt32
.insert("QScriptValue(engine, QString(\"0\"))", 0);
1550 toInt32
.insert("QScriptValue(engine, QString(\"123\"))", 123);
1551 toInt32
.insert("QScriptValue(engine, QString(\"1.23\"))", 1);
1552 toInt32
.insert("engine->evaluate(\"[]\")", 0);
1553 toInt32
.insert("engine->evaluate(\"{}\")", 0);
1554 toInt32
.insert("engine->evaluate(\"Object.prototype\")", 0);
1555 toInt32
.insert("engine->evaluate(\"Date.prototype\")", 0);
1556 toInt32
.insert("engine->evaluate(\"Array.prototype\")", 0);
1557 toInt32
.insert("engine->evaluate(\"Function.prototype\")", 0);
1558 toInt32
.insert("engine->evaluate(\"Error.prototype\")", 0);
1559 toInt32
.insert("engine->evaluate(\"Object\")", 0);
1560 toInt32
.insert("engine->evaluate(\"Array\")", 0);
1561 toInt32
.insert("engine->evaluate(\"Number\")", 0);
1562 toInt32
.insert("engine->evaluate(\"Function\")", 0);
1563 toInt32
.insert("engine->evaluate(\"(function() { return 1; })\")", 0);
1564 toInt32
.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", 0);
1565 toInt32
.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", 0);
1566 toInt32
.insert("engine->evaluate(\"/foo/\")", 0);
1567 toInt32
.insert("engine->evaluate(\"new Object()\")", 0);
1568 toInt32
.insert("engine->evaluate(\"new Array()\")", 0);
1569 toInt32
.insert("engine->evaluate(\"new Error()\")", 0);
1570 toInt32
.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22);
1571 toInt32
.insert("engine->evaluate(\"Undefined\")", 0);
1572 toInt32
.insert("engine->evaluate(\"Null\")", 0);
1573 toInt32
.insert("engine->evaluate(\"True\")", 0);
1574 toInt32
.insert("engine->evaluate(\"False\")", 0);
1575 toInt32
.insert("engine->evaluate(\"undefined\")", 0);
1576 toInt32
.insert("engine->evaluate(\"null\")", 0);
1577 toInt32
.insert("engine->evaluate(\"true\")", 1);
1578 toInt32
.insert("engine->evaluate(\"false\")", 0);
1579 toInt32
.insert("engine->evaluate(\"122\")", 122);
1580 toInt32
.insert("engine->evaluate(\"124\")", 124);
1581 toInt32
.insert("engine->evaluate(\"0\")", 0);
1582 toInt32
.insert("engine->evaluate(\"0.0\")", 0);
1583 toInt32
.insert("engine->evaluate(\"123.0\")", 123);
1584 toInt32
.insert("engine->evaluate(\"6.37e-8\")", 0);
1585 toInt32
.insert("engine->evaluate(\"-6.37e-8\")", 0);
1586 toInt32
.insert("engine->evaluate(\"0x43211234\")", 1126240820);
1587 toInt32
.insert("engine->evaluate(\"0x10000\")", 65536);
1588 toInt32
.insert("engine->evaluate(\"0x10001\")", 65537);
1589 toInt32
.insert("engine->evaluate(\"NaN\")", 0);
1590 toInt32
.insert("engine->evaluate(\"Infinity\")", 0);
1591 toInt32
.insert("engine->evaluate(\"-Infinity\")", 0);
1592 toInt32
.insert("engine->evaluate(\"'ciao'\")", 0);
1593 toInt32
.insert("engine->evaluate(\"''\")", 0);
1594 toInt32
.insert("engine->evaluate(\"'0'\")", 0);
1595 toInt32
.insert("engine->evaluate(\"'123'\")", 123);
1596 toInt32
.insert("engine->evaluate(\"'12.4'\")", 12);
1597 toInt32
.insert("engine->nullValue()", 0);
1598 toInt32
.insert("engine->undefinedValue()", 0);
1600 newRow(expr
) << toInt32
.value(expr
);
1603 void tst_QScriptValue::toInt32_test(const char*, const QScriptValue
& value
)
1605 QFETCH(qint32
, expected
);
1606 QCOMPARE(value
.toInt32(), expected
);
1607 QCOMPARE(value
.toInt32(), expected
);
1610 DEFINE_TEST_FUNCTION(toInt32
)
1613 void tst_QScriptValue::toUInt32_initData()
1615 QTest::addColumn
<quint32
>("expected");
1619 void tst_QScriptValue::toUInt32_makeData(const char* expr
)
1621 static QHash
<QString
, quint32
> toUInt32
;
1622 if (toUInt32
.isEmpty()) {
1623 toUInt32
.insert("QScriptValue()", 0);
1624 toUInt32
.insert("QScriptValue(QScriptValue::UndefinedValue)", 0);
1625 toUInt32
.insert("QScriptValue(QScriptValue::NullValue)", 0);
1626 toUInt32
.insert("QScriptValue(true)", 1);
1627 toUInt32
.insert("QScriptValue(false)", 0);
1628 toUInt32
.insert("QScriptValue(int(122))", 122);
1629 toUInt32
.insert("QScriptValue(uint(124))", 124);
1630 toUInt32
.insert("QScriptValue(0)", 0);
1631 toUInt32
.insert("QScriptValue(0.0)", 0);
1632 toUInt32
.insert("QScriptValue(123.0)", 123);
1633 toUInt32
.insert("QScriptValue(6.37e-8)", 0);
1634 toUInt32
.insert("QScriptValue(-6.37e-8)", 0);
1635 toUInt32
.insert("QScriptValue(0x43211234)", 1126240820);
1636 toUInt32
.insert("QScriptValue(0x10000)", 65536);
1637 toUInt32
.insert("QScriptValue(0x10001)", 65537);
1638 toUInt32
.insert("QScriptValue(qSNaN())", 0);
1639 toUInt32
.insert("QScriptValue(qQNaN())", 0);
1640 toUInt32
.insert("QScriptValue(qInf())", 0);
1641 toUInt32
.insert("QScriptValue(-qInf())", 0);
1642 toUInt32
.insert("QScriptValue(\"NaN\")", 0);
1643 toUInt32
.insert("QScriptValue(\"Infinity\")", 0);
1644 toUInt32
.insert("QScriptValue(\"-Infinity\")", 0);
1645 toUInt32
.insert("QScriptValue(\"ciao\")", 0);
1646 toUInt32
.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", 0);
1647 toUInt32
.insert("QScriptValue(QString(\"\"))", 0);
1648 toUInt32
.insert("QScriptValue(QString())", 0);
1649 toUInt32
.insert("QScriptValue(QString(\"0\"))", 0);
1650 toUInt32
.insert("QScriptValue(QString(\"123\"))", 123);
1651 toUInt32
.insert("QScriptValue(QString(\"12.4\"))", 12);
1652 toUInt32
.insert("QScriptValue(0, QScriptValue::UndefinedValue)", 0);
1653 toUInt32
.insert("QScriptValue(0, QScriptValue::NullValue)", 0);
1654 toUInt32
.insert("QScriptValue(0, true)", 1);
1655 toUInt32
.insert("QScriptValue(0, false)", 0);
1656 toUInt32
.insert("QScriptValue(0, int(122))", 122);
1657 toUInt32
.insert("QScriptValue(0, uint(124))", 124);
1658 toUInt32
.insert("QScriptValue(0, 0)", 0);
1659 toUInt32
.insert("QScriptValue(0, 0.0)", 0);
1660 toUInt32
.insert("QScriptValue(0, 123.0)", 123);
1661 toUInt32
.insert("QScriptValue(0, 6.37e-8)", 0);
1662 toUInt32
.insert("QScriptValue(0, -6.37e-8)", 0);
1663 toUInt32
.insert("QScriptValue(0, 0x43211234)", 1126240820);
1664 toUInt32
.insert("QScriptValue(0, 0x10000)", 65536);
1665 toUInt32
.insert("QScriptValue(0, 0x10001)", 65537);
1666 toUInt32
.insert("QScriptValue(0, qSNaN())", 0);
1667 toUInt32
.insert("QScriptValue(0, qQNaN())", 0);
1668 toUInt32
.insert("QScriptValue(0, qInf())", 0);
1669 toUInt32
.insert("QScriptValue(0, -qInf())", 0);
1670 toUInt32
.insert("QScriptValue(0, \"NaN\")", 0);
1671 toUInt32
.insert("QScriptValue(0, \"Infinity\")", 0);
1672 toUInt32
.insert("QScriptValue(0, \"-Infinity\")", 0);
1673 toUInt32
.insert("QScriptValue(0, \"ciao\")", 0);
1674 toUInt32
.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", 0);
1675 toUInt32
.insert("QScriptValue(0, QString(\"\"))", 0);
1676 toUInt32
.insert("QScriptValue(0, QString())", 0);
1677 toUInt32
.insert("QScriptValue(0, QString(\"0\"))", 0);
1678 toUInt32
.insert("QScriptValue(0, QString(\"123\"))", 123);
1679 toUInt32
.insert("QScriptValue(0, QString(\"12.3\"))", 12);
1680 toUInt32
.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", 0);
1681 toUInt32
.insert("QScriptValue(engine, QScriptValue::NullValue)", 0);
1682 toUInt32
.insert("QScriptValue(engine, true)", 1);
1683 toUInt32
.insert("QScriptValue(engine, false)", 0);
1684 toUInt32
.insert("QScriptValue(engine, int(122))", 122);
1685 toUInt32
.insert("QScriptValue(engine, uint(124))", 124);
1686 toUInt32
.insert("QScriptValue(engine, 0)", 0);
1687 toUInt32
.insert("QScriptValue(engine, 0.0)", 0);
1688 toUInt32
.insert("QScriptValue(engine, 123.0)", 123);
1689 toUInt32
.insert("QScriptValue(engine, 6.37e-8)", 0);
1690 toUInt32
.insert("QScriptValue(engine, -6.37e-8)", 0);
1691 toUInt32
.insert("QScriptValue(engine, 0x43211234)", 1126240820);
1692 toUInt32
.insert("QScriptValue(engine, 0x10000)", 65536);
1693 toUInt32
.insert("QScriptValue(engine, 0x10001)", 65537);
1694 toUInt32
.insert("QScriptValue(engine, qSNaN())", 0);
1695 toUInt32
.insert("QScriptValue(engine, qQNaN())", 0);
1696 toUInt32
.insert("QScriptValue(engine, qInf())", 0);
1697 toUInt32
.insert("QScriptValue(engine, -qInf())", 0);
1698 toUInt32
.insert("QScriptValue(engine, \"NaN\")", 0);
1699 toUInt32
.insert("QScriptValue(engine, \"Infinity\")", 0);
1700 toUInt32
.insert("QScriptValue(engine, \"-Infinity\")", 0);
1701 toUInt32
.insert("QScriptValue(engine, \"ciao\")", 0);
1702 toUInt32
.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", 0);
1703 toUInt32
.insert("QScriptValue(engine, QString(\"\"))", 0);
1704 toUInt32
.insert("QScriptValue(engine, QString())", 0);
1705 toUInt32
.insert("QScriptValue(engine, QString(\"0\"))", 0);
1706 toUInt32
.insert("QScriptValue(engine, QString(\"123\"))", 123);
1707 toUInt32
.insert("QScriptValue(engine, QString(\"1.23\"))", 1);
1708 toUInt32
.insert("engine->evaluate(\"[]\")", 0);
1709 toUInt32
.insert("engine->evaluate(\"{}\")", 0);
1710 toUInt32
.insert("engine->evaluate(\"Object.prototype\")", 0);
1711 toUInt32
.insert("engine->evaluate(\"Date.prototype\")", 0);
1712 toUInt32
.insert("engine->evaluate(\"Array.prototype\")", 0);
1713 toUInt32
.insert("engine->evaluate(\"Function.prototype\")", 0);
1714 toUInt32
.insert("engine->evaluate(\"Error.prototype\")", 0);
1715 toUInt32
.insert("engine->evaluate(\"Object\")", 0);
1716 toUInt32
.insert("engine->evaluate(\"Array\")", 0);
1717 toUInt32
.insert("engine->evaluate(\"Number\")", 0);
1718 toUInt32
.insert("engine->evaluate(\"Function\")", 0);
1719 toUInt32
.insert("engine->evaluate(\"(function() { return 1; })\")", 0);
1720 toUInt32
.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", 0);
1721 toUInt32
.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", 0);
1722 toUInt32
.insert("engine->evaluate(\"/foo/\")", 0);
1723 toUInt32
.insert("engine->evaluate(\"new Object()\")", 0);
1724 toUInt32
.insert("engine->evaluate(\"new Array()\")", 0);
1725 toUInt32
.insert("engine->evaluate(\"new Error()\")", 0);
1726 toUInt32
.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22);
1727 toUInt32
.insert("engine->evaluate(\"Undefined\")", 0);
1728 toUInt32
.insert("engine->evaluate(\"Null\")", 0);
1729 toUInt32
.insert("engine->evaluate(\"True\")", 0);
1730 toUInt32
.insert("engine->evaluate(\"False\")", 0);
1731 toUInt32
.insert("engine->evaluate(\"undefined\")", 0);
1732 toUInt32
.insert("engine->evaluate(\"null\")", 0);
1733 toUInt32
.insert("engine->evaluate(\"true\")", 1);
1734 toUInt32
.insert("engine->evaluate(\"false\")", 0);
1735 toUInt32
.insert("engine->evaluate(\"122\")", 122);
1736 toUInt32
.insert("engine->evaluate(\"124\")", 124);
1737 toUInt32
.insert("engine->evaluate(\"0\")", 0);
1738 toUInt32
.insert("engine->evaluate(\"0.0\")", 0);
1739 toUInt32
.insert("engine->evaluate(\"123.0\")", 123);
1740 toUInt32
.insert("engine->evaluate(\"6.37e-8\")", 0);
1741 toUInt32
.insert("engine->evaluate(\"-6.37e-8\")", 0);
1742 toUInt32
.insert("engine->evaluate(\"0x43211234\")", 1126240820);
1743 toUInt32
.insert("engine->evaluate(\"0x10000\")", 65536);
1744 toUInt32
.insert("engine->evaluate(\"0x10001\")", 65537);
1745 toUInt32
.insert("engine->evaluate(\"NaN\")", 0);
1746 toUInt32
.insert("engine->evaluate(\"Infinity\")", 0);
1747 toUInt32
.insert("engine->evaluate(\"-Infinity\")", 0);
1748 toUInt32
.insert("engine->evaluate(\"'ciao'\")", 0);
1749 toUInt32
.insert("engine->evaluate(\"''\")", 0);
1750 toUInt32
.insert("engine->evaluate(\"'0'\")", 0);
1751 toUInt32
.insert("engine->evaluate(\"'123'\")", 123);
1752 toUInt32
.insert("engine->evaluate(\"'12.4'\")", 12);
1753 toUInt32
.insert("engine->nullValue()", 0);
1754 toUInt32
.insert("engine->undefinedValue()", 0);
1756 newRow(expr
) << toUInt32
.value(expr
);
1759 void tst_QScriptValue::toUInt32_test(const char*, const QScriptValue
& value
)
1761 QFETCH(quint32
, expected
);
1762 QCOMPARE(value
.toUInt32(), expected
);
1763 QCOMPARE(value
.toUInt32(), expected
);
1766 DEFINE_TEST_FUNCTION(toUInt32
)
1769 void tst_QScriptValue::toUInt16_initData()
1771 QTest::addColumn
<quint16
>("expected");
1775 void tst_QScriptValue::toUInt16_makeData(const char* expr
)
1777 static QHash
<QString
, quint16
> toUInt16
;
1778 if (toUInt16
.isEmpty()) {
1779 toUInt16
.insert("QScriptValue()", 0);
1780 toUInt16
.insert("QScriptValue(QScriptValue::UndefinedValue)", 0);
1781 toUInt16
.insert("QScriptValue(QScriptValue::NullValue)", 0);
1782 toUInt16
.insert("QScriptValue(true)", 1);
1783 toUInt16
.insert("QScriptValue(false)", 0);
1784 toUInt16
.insert("QScriptValue(int(122))", 122);
1785 toUInt16
.insert("QScriptValue(uint(124))", 124);
1786 toUInt16
.insert("QScriptValue(0)", 0);
1787 toUInt16
.insert("QScriptValue(0.0)", 0);
1788 toUInt16
.insert("QScriptValue(123.0)", 123);
1789 toUInt16
.insert("QScriptValue(6.37e-8)", 0);
1790 toUInt16
.insert("QScriptValue(-6.37e-8)", 0);
1791 toUInt16
.insert("QScriptValue(0x43211234)", 4660);
1792 toUInt16
.insert("QScriptValue(0x10000)", 0);
1793 toUInt16
.insert("QScriptValue(0x10001)", 1);
1794 toUInt16
.insert("QScriptValue(qSNaN())", 0);
1795 toUInt16
.insert("QScriptValue(qQNaN())", 0);
1796 toUInt16
.insert("QScriptValue(qInf())", 0);
1797 toUInt16
.insert("QScriptValue(-qInf())", 0);
1798 toUInt16
.insert("QScriptValue(\"NaN\")", 0);
1799 toUInt16
.insert("QScriptValue(\"Infinity\")", 0);
1800 toUInt16
.insert("QScriptValue(\"-Infinity\")", 0);
1801 toUInt16
.insert("QScriptValue(\"ciao\")", 0);
1802 toUInt16
.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", 0);
1803 toUInt16
.insert("QScriptValue(QString(\"\"))", 0);
1804 toUInt16
.insert("QScriptValue(QString())", 0);
1805 toUInt16
.insert("QScriptValue(QString(\"0\"))", 0);
1806 toUInt16
.insert("QScriptValue(QString(\"123\"))", 123);
1807 toUInt16
.insert("QScriptValue(QString(\"12.4\"))", 12);
1808 toUInt16
.insert("QScriptValue(0, QScriptValue::UndefinedValue)", 0);
1809 toUInt16
.insert("QScriptValue(0, QScriptValue::NullValue)", 0);
1810 toUInt16
.insert("QScriptValue(0, true)", 1);
1811 toUInt16
.insert("QScriptValue(0, false)", 0);
1812 toUInt16
.insert("QScriptValue(0, int(122))", 122);
1813 toUInt16
.insert("QScriptValue(0, uint(124))", 124);
1814 toUInt16
.insert("QScriptValue(0, 0)", 0);
1815 toUInt16
.insert("QScriptValue(0, 0.0)", 0);
1816 toUInt16
.insert("QScriptValue(0, 123.0)", 123);
1817 toUInt16
.insert("QScriptValue(0, 6.37e-8)", 0);
1818 toUInt16
.insert("QScriptValue(0, -6.37e-8)", 0);
1819 toUInt16
.insert("QScriptValue(0, 0x43211234)", 4660);
1820 toUInt16
.insert("QScriptValue(0, 0x10000)", 0);
1821 toUInt16
.insert("QScriptValue(0, 0x10001)", 1);
1822 toUInt16
.insert("QScriptValue(0, qSNaN())", 0);
1823 toUInt16
.insert("QScriptValue(0, qQNaN())", 0);
1824 toUInt16
.insert("QScriptValue(0, qInf())", 0);
1825 toUInt16
.insert("QScriptValue(0, -qInf())", 0);
1826 toUInt16
.insert("QScriptValue(0, \"NaN\")", 0);
1827 toUInt16
.insert("QScriptValue(0, \"Infinity\")", 0);
1828 toUInt16
.insert("QScriptValue(0, \"-Infinity\")", 0);
1829 toUInt16
.insert("QScriptValue(0, \"ciao\")", 0);
1830 toUInt16
.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", 0);
1831 toUInt16
.insert("QScriptValue(0, QString(\"\"))", 0);
1832 toUInt16
.insert("QScriptValue(0, QString())", 0);
1833 toUInt16
.insert("QScriptValue(0, QString(\"0\"))", 0);
1834 toUInt16
.insert("QScriptValue(0, QString(\"123\"))", 123);
1835 toUInt16
.insert("QScriptValue(0, QString(\"12.3\"))", 12);
1836 toUInt16
.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", 0);
1837 toUInt16
.insert("QScriptValue(engine, QScriptValue::NullValue)", 0);
1838 toUInt16
.insert("QScriptValue(engine, true)", 1);
1839 toUInt16
.insert("QScriptValue(engine, false)", 0);
1840 toUInt16
.insert("QScriptValue(engine, int(122))", 122);
1841 toUInt16
.insert("QScriptValue(engine, uint(124))", 124);
1842 toUInt16
.insert("QScriptValue(engine, 0)", 0);
1843 toUInt16
.insert("QScriptValue(engine, 0.0)", 0);
1844 toUInt16
.insert("QScriptValue(engine, 123.0)", 123);
1845 toUInt16
.insert("QScriptValue(engine, 6.37e-8)", 0);
1846 toUInt16
.insert("QScriptValue(engine, -6.37e-8)", 0);
1847 toUInt16
.insert("QScriptValue(engine, 0x43211234)", 4660);
1848 toUInt16
.insert("QScriptValue(engine, 0x10000)", 0);
1849 toUInt16
.insert("QScriptValue(engine, 0x10001)", 1);
1850 toUInt16
.insert("QScriptValue(engine, qSNaN())", 0);
1851 toUInt16
.insert("QScriptValue(engine, qQNaN())", 0);
1852 toUInt16
.insert("QScriptValue(engine, qInf())", 0);
1853 toUInt16
.insert("QScriptValue(engine, -qInf())", 0);
1854 toUInt16
.insert("QScriptValue(engine, \"NaN\")", 0);
1855 toUInt16
.insert("QScriptValue(engine, \"Infinity\")", 0);
1856 toUInt16
.insert("QScriptValue(engine, \"-Infinity\")", 0);
1857 toUInt16
.insert("QScriptValue(engine, \"ciao\")", 0);
1858 toUInt16
.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", 0);
1859 toUInt16
.insert("QScriptValue(engine, QString(\"\"))", 0);
1860 toUInt16
.insert("QScriptValue(engine, QString())", 0);
1861 toUInt16
.insert("QScriptValue(engine, QString(\"0\"))", 0);
1862 toUInt16
.insert("QScriptValue(engine, QString(\"123\"))", 123);
1863 toUInt16
.insert("QScriptValue(engine, QString(\"1.23\"))", 1);
1864 toUInt16
.insert("engine->evaluate(\"[]\")", 0);
1865 toUInt16
.insert("engine->evaluate(\"{}\")", 0);
1866 toUInt16
.insert("engine->evaluate(\"Object.prototype\")", 0);
1867 toUInt16
.insert("engine->evaluate(\"Date.prototype\")", 0);
1868 toUInt16
.insert("engine->evaluate(\"Array.prototype\")", 0);
1869 toUInt16
.insert("engine->evaluate(\"Function.prototype\")", 0);
1870 toUInt16
.insert("engine->evaluate(\"Error.prototype\")", 0);
1871 toUInt16
.insert("engine->evaluate(\"Object\")", 0);
1872 toUInt16
.insert("engine->evaluate(\"Array\")", 0);
1873 toUInt16
.insert("engine->evaluate(\"Number\")", 0);
1874 toUInt16
.insert("engine->evaluate(\"Function\")", 0);
1875 toUInt16
.insert("engine->evaluate(\"(function() { return 1; })\")", 0);
1876 toUInt16
.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", 0);
1877 toUInt16
.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", 0);
1878 toUInt16
.insert("engine->evaluate(\"/foo/\")", 0);
1879 toUInt16
.insert("engine->evaluate(\"new Object()\")", 0);
1880 toUInt16
.insert("engine->evaluate(\"new Array()\")", 0);
1881 toUInt16
.insert("engine->evaluate(\"new Error()\")", 0);
1882 toUInt16
.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22);
1883 toUInt16
.insert("engine->evaluate(\"Undefined\")", 0);
1884 toUInt16
.insert("engine->evaluate(\"Null\")", 0);
1885 toUInt16
.insert("engine->evaluate(\"True\")", 0);
1886 toUInt16
.insert("engine->evaluate(\"False\")", 0);
1887 toUInt16
.insert("engine->evaluate(\"undefined\")", 0);
1888 toUInt16
.insert("engine->evaluate(\"null\")", 0);
1889 toUInt16
.insert("engine->evaluate(\"true\")", 1);
1890 toUInt16
.insert("engine->evaluate(\"false\")", 0);
1891 toUInt16
.insert("engine->evaluate(\"122\")", 122);
1892 toUInt16
.insert("engine->evaluate(\"124\")", 124);
1893 toUInt16
.insert("engine->evaluate(\"0\")", 0);
1894 toUInt16
.insert("engine->evaluate(\"0.0\")", 0);
1895 toUInt16
.insert("engine->evaluate(\"123.0\")", 123);
1896 toUInt16
.insert("engine->evaluate(\"6.37e-8\")", 0);
1897 toUInt16
.insert("engine->evaluate(\"-6.37e-8\")", 0);
1898 toUInt16
.insert("engine->evaluate(\"0x43211234\")", 4660);
1899 toUInt16
.insert("engine->evaluate(\"0x10000\")", 0);
1900 toUInt16
.insert("engine->evaluate(\"0x10001\")", 1);
1901 toUInt16
.insert("engine->evaluate(\"NaN\")", 0);
1902 toUInt16
.insert("engine->evaluate(\"Infinity\")", 0);
1903 toUInt16
.insert("engine->evaluate(\"-Infinity\")", 0);
1904 toUInt16
.insert("engine->evaluate(\"'ciao'\")", 0);
1905 toUInt16
.insert("engine->evaluate(\"''\")", 0);
1906 toUInt16
.insert("engine->evaluate(\"'0'\")", 0);
1907 toUInt16
.insert("engine->evaluate(\"'123'\")", 123);
1908 toUInt16
.insert("engine->evaluate(\"'12.4'\")", 12);
1909 toUInt16
.insert("engine->nullValue()", 0);
1910 toUInt16
.insert("engine->undefinedValue()", 0);
1912 newRow(expr
) << toUInt16
.value(expr
);
1915 void tst_QScriptValue::toUInt16_test(const char*, const QScriptValue
& value
)
1917 QFETCH(quint16
, expected
);
1918 QCOMPARE(value
.toUInt16(), expected
);
1919 QCOMPARE(value
.toUInt16(), expected
);
1922 DEFINE_TEST_FUNCTION(toUInt16
)