]> git.saurik.com Git - apple/javascriptcore.git/blob - qt/benchmarks/qscriptvalue/tst_qscriptvalue.cpp
7c39b8e7c4d549427cc36fe48a1159e3723ee742
[apple/javascriptcore.git] / qt / benchmarks / qscriptvalue / tst_qscriptvalue.cpp
1 /*
2 Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
3
4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Library General Public
6 License as published by the Free Software Foundation; either
7 version 2 of the License, or (at your option) any later version.
8
9 This library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Library General Public License for more details.
13
14 You should have received a copy of the GNU Library General Public License
15 along with this library; see the file COPYING.LIB. If not, write to
16 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 Boston, MA 02110-1301, USA.
18 */
19
20 #include "qscriptengine.h"
21 #include "qscriptstring.h"
22 #include "qscriptvalue.h"
23 #include <qtest.h>
24
25 Q_DECLARE_METATYPE(QScriptValue);
26
27 class tst_QScriptValue : public QObject {
28 Q_OBJECT
29
30 public:
31 tst_QScriptValue()
32 : m_engine(0)
33 {}
34
35 ~tst_QScriptValue()
36 {
37 if (m_engine)
38 delete m_engine;
39 }
40
41 private slots:
42 void values_data();
43
44 void ctorBool();
45 void ctorReal();
46 void ctorNumber();
47 void ctorQString();
48 void ctorCString();
49 void ctorSpecial();
50 void ctorQScriptValue();
51
52 void isValid_data();
53 void isValid();
54 void isBool_data();
55 void isBool();
56 void isNumber_data();
57 void isNumber();
58 void isFunction_data();
59 void isFunction();
60 void isNull_data();
61 void isNull();
62 void isString_data();
63 void isString();
64 void isUndefined_data();
65 void isUndefined();
66 void isObject_data();
67 void isObject();
68 void isError_data();
69 void isError();
70
71 void toString_data();
72 void toString();
73 void toNumber_data();
74 void toNumber();
75 void toBool_data();
76 void toBool();
77 void toInteger_data();
78 void toInteger();
79 void toInt32_data();
80 void toInt32();
81 void toUInt32_data();
82 void toUInt32();
83 void toUInt16_data();
84 void toUInt16();
85 void toObject_data();
86 void toObject();
87
88 void equals_data();
89 void equals();
90 void strictlyEquals_data();
91 void strictlyEquals();
92 void instanceOf_data();
93 void instanceOf();
94
95 private:
96 QScriptEngine* m_engine;
97 };
98
99 void tst_QScriptValue::values_data()
100 {
101 if (m_engine)
102 delete m_engine;
103 m_engine = new QScriptEngine;
104
105 QTest::addColumn<QScriptValue>("value");
106
107 QTest::newRow("invalid") << QScriptValue();
108
109 QTest::newRow("cbool") << QScriptValue(true);
110 QTest::newRow("cnumber") << QScriptValue(1234);
111 QTest::newRow("cstring") << QScriptValue("abc");
112 QTest::newRow("cnull") << QScriptValue(QScriptValue::NullValue);
113 QTest::newRow("cundefined") << QScriptValue(QScriptValue::UndefinedValue);
114
115 QTest::newRow("jsbool") << m_engine->evaluate("true");
116 QTest::newRow("jsnumber") << m_engine->evaluate("12345");
117 QTest::newRow("jsstring") << m_engine->evaluate("'go'");
118 QTest::newRow("jsfunction") << m_engine->evaluate("(function {})");
119 QTest::newRow("jsnull") << m_engine->nullValue();
120 QTest::newRow("jsundefined") << m_engine->undefinedValue();
121 QTest::newRow("jsobject") << m_engine->newObject();
122 QTest::newRow("jserror") << m_engine->evaluate("new Error()");
123 }
124
125 void tst_QScriptValue::ctorBool()
126 {
127 QBENCHMARK {
128 QScriptValue(true);
129 }
130 }
131
132 void tst_QScriptValue::ctorReal()
133 {
134 QBENCHMARK {
135 QScriptValue(12.3);
136 }
137 }
138
139 void tst_QScriptValue::ctorNumber()
140 {
141 QBENCHMARK {
142 QScriptValue(123);
143 }
144 }
145
146 void tst_QScriptValue::ctorQString()
147 {
148 QString str = QString::fromLatin1("ciao");
149 QBENCHMARK {
150 QScriptValue(str);
151 }
152 }
153
154 void tst_QScriptValue::ctorCString()
155 {
156 QBENCHMARK {
157 QScriptValue("Pong!");
158 }
159 }
160
161 void tst_QScriptValue::ctorSpecial()
162 {
163 QBENCHMARK {
164 (void)QScriptValue(QScriptValue::NullValue);
165 }
166 }
167
168 void tst_QScriptValue::ctorQScriptValue()
169 {
170 QScriptValue tmp(1234);
171 QBENCHMARK {
172 QScriptValue(tmp);
173 }
174 }
175
176 void tst_QScriptValue::isValid_data()
177 {
178 values_data();
179 }
180
181 void tst_QScriptValue::isValid()
182 {
183 QFETCH(QScriptValue, value);
184 QBENCHMARK {
185 value.isValid();
186 }
187 }
188
189 void tst_QScriptValue::isBool_data()
190 {
191 values_data();
192 }
193
194 void tst_QScriptValue::isBool()
195 {
196 QFETCH(QScriptValue, value);
197 QBENCHMARK {
198 value.isBool();
199 }
200 }
201
202 void tst_QScriptValue::isNumber_data()
203 {
204 values_data();
205 }
206
207 void tst_QScriptValue::isNumber()
208 {
209 QFETCH(QScriptValue, value);
210 QBENCHMARK {
211 value.isNumber();
212 }
213 }
214
215 void tst_QScriptValue::isFunction_data()
216 {
217 values_data();
218 }
219
220 void tst_QScriptValue::isFunction()
221 {
222 QFETCH(QScriptValue, value);
223 QBENCHMARK {
224 value.isFunction();
225 }
226 }
227
228 void tst_QScriptValue::isNull_data()
229 {
230 values_data();
231 }
232
233 void tst_QScriptValue::isNull()
234 {
235 QFETCH(QScriptValue, value);
236 QBENCHMARK {
237 value.isNull();
238 }
239 }
240
241 void tst_QScriptValue::isString_data()
242 {
243 values_data();
244 }
245
246 void tst_QScriptValue::isString()
247 {
248 QFETCH(QScriptValue, value);
249 QBENCHMARK {
250 value.isString();
251 }
252 }
253
254 void tst_QScriptValue::isUndefined_data()
255 {
256 values_data();
257 }
258
259 void tst_QScriptValue::isUndefined()
260 {
261 QFETCH(QScriptValue, value);
262 QBENCHMARK {
263 value.isUndefined();
264 }
265 }
266
267 void tst_QScriptValue::isObject_data()
268 {
269 values_data();
270 }
271
272 void tst_QScriptValue::isObject()
273 {
274 QFETCH(QScriptValue, value);
275 QBENCHMARK {
276 value.isObject();
277 }
278 }
279
280 void tst_QScriptValue::isError_data()
281 {
282 values_data();
283 }
284
285 void tst_QScriptValue::isError()
286 {
287 QFETCH(QScriptValue, value);
288 QBENCHMARK {
289 value.isError();
290 }
291 }
292
293 void tst_QScriptValue::toString_data()
294 {
295 values_data();
296 }
297
298 void tst_QScriptValue::toString()
299 {
300 QFETCH(QScriptValue, value);
301 QBENCHMARK {
302 value.toString();
303 }
304 }
305
306 void tst_QScriptValue::toNumber_data()
307 {
308 values_data();
309 }
310
311 void tst_QScriptValue::toNumber()
312 {
313 QFETCH(QScriptValue, value);
314 QBENCHMARK {
315 value.toNumber();
316 }
317 }
318
319 void tst_QScriptValue::toBool_data()
320 {
321 values_data();
322 }
323
324 void tst_QScriptValue::toBool()
325 {
326 QFETCH(QScriptValue, value);
327 QBENCHMARK {
328 value.toBool();
329 }
330 }
331
332 void tst_QScriptValue::toInteger_data()
333 {
334 values_data();
335 }
336
337 void tst_QScriptValue::toInteger()
338 {
339 QFETCH(QScriptValue, value);
340 QBENCHMARK {
341 value.toInteger();
342 }
343 }
344
345 void tst_QScriptValue::toInt32_data()
346 {
347 values_data();
348 }
349
350 void tst_QScriptValue::toInt32()
351 {
352 QFETCH(QScriptValue, value);
353 QBENCHMARK {
354 value.toInt32();
355 }
356 }
357
358 void tst_QScriptValue::toUInt32_data()
359 {
360 values_data();
361 }
362
363 void tst_QScriptValue::toUInt32()
364 {
365 QFETCH(QScriptValue, value);
366 QBENCHMARK {
367 value.toUInt32();
368 }
369 }
370
371 void tst_QScriptValue::toUInt16_data()
372 {
373 values_data();
374 }
375
376 void tst_QScriptValue::toUInt16()
377 {
378 QFETCH(QScriptValue, value);
379 QBENCHMARK {
380 value.toUInt16();
381 }
382 }
383
384 void tst_QScriptValue::toObject_data()
385 {
386 values_data();
387 }
388
389 void tst_QScriptValue::toObject()
390 {
391 QFETCH(QScriptValue, value);
392 QBENCHMARK {
393 value.toObject();
394 }
395 }
396
397 void tst_QScriptValue::equals_data()
398 {
399 values_data();
400 }
401
402 void tst_QScriptValue::equals()
403 {
404 QFETCH(QScriptValue, value);
405 static QScriptValue previous;
406 QBENCHMARK {
407 value.equals(previous);
408 }
409 previous = value;
410 }
411
412 void tst_QScriptValue::strictlyEquals_data()
413 {
414 values_data();
415 }
416
417 void tst_QScriptValue::strictlyEquals()
418 {
419 QFETCH(QScriptValue, value);
420 static QScriptValue previous;
421 QBENCHMARK {
422 value.strictlyEquals(previous);
423 }
424 previous = value;
425 }
426
427 void tst_QScriptValue::instanceOf_data()
428 {
429 values_data();
430 }
431
432 void tst_QScriptValue::instanceOf()
433 {
434 QFETCH(QScriptValue, value);
435 static QScriptValue object = m_engine->newObject();
436 QBENCHMARK {
437 value.instanceOf(object);
438 }
439 }
440
441 QTEST_MAIN(tst_QScriptValue)
442 #include "tst_qscriptvalue.moc"