1 | /**************************************************************************** |
2 | ** |
3 | ** Copyright (C) 2018 The Qt Company Ltd. |
4 | ** Contact: https://www.qt.io/licensing/ |
5 | ** |
6 | ** This file is part of the test suite of the Qt Toolkit. |
7 | ** |
8 | ** $QT_BEGIN_LICENSE:GPL-EXCEPT$ |
9 | ** Commercial License Usage |
10 | ** Licensees holding valid commercial Qt licenses may use this file in |
11 | ** accordance with the commercial license agreement provided with the |
12 | ** Software or, alternatively, in accordance with the terms contained in |
13 | ** a written agreement between you and The Qt Company. For licensing terms |
14 | ** and conditions see https://www.qt.io/terms-conditions. For further |
15 | ** information use the contact form at https://www.qt.io/contact-us. |
16 | ** |
17 | ** GNU General Public License Usage |
18 | ** Alternatively, this file may be used under the terms of the GNU |
19 | ** General Public License version 3 as published by the Free Software |
20 | ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT |
21 | ** included in the packaging of this file. Please review the following |
22 | ** information to ensure the GNU General Public License requirements will |
23 | ** be met: https://www.gnu.org/licenses/gpl-3.0.html. |
24 | ** |
25 | ** $QT_END_LICENSE$ |
26 | ** |
27 | ****************************************************************************/ |
28 | |
29 | #include "tst_qscriptvalue.h" |
30 | |
31 | QT_BEGIN_NAMESPACE |
32 | extern bool qt_script_isJITEnabled(); |
33 | QT_END_NAMESPACE |
34 | |
35 | tst_QScriptValueGenerated::tst_QScriptValueGenerated() |
36 | : engine(0) |
37 | { |
38 | } |
39 | |
40 | tst_QScriptValueGenerated::~tst_QScriptValueGenerated() |
41 | { |
42 | delete engine; |
43 | } |
44 | |
45 | void tst_QScriptValueGenerated::dataHelper(InitDataFunction init, DefineDataFunction define) |
46 | { |
47 | QTest::addColumn<QString>(name: "__expression__" ); |
48 | (this->*init)(); |
49 | QHash<QString,QScriptValue>::const_iterator it; |
50 | for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) { |
51 | m_currentExpression = it.key(); |
52 | (this->*define)(it.key().toLatin1()); |
53 | } |
54 | m_currentExpression = QString(); |
55 | } |
56 | |
57 | QTestData &tst_QScriptValueGenerated::newRow(const char *tag) |
58 | { |
59 | return QTest::newRow(dataTag: tag) << m_currentExpression; |
60 | } |
61 | |
62 | void tst_QScriptValueGenerated::testHelper(TestFunction fun) |
63 | { |
64 | QFETCH(QString, __expression__); |
65 | QScriptValue value = m_values.value(akey: __expression__); |
66 | (this->*fun)(__expression__.toLatin1(), value); |
67 | } |
68 | |
69 | void tst_QScriptValueGenerated::assignAndCopyConstruct_initData() |
70 | { |
71 | QTest::addColumn<int>(name: "dummy" ); |
72 | initScriptValues(); |
73 | } |
74 | |
75 | void tst_QScriptValueGenerated::assignAndCopyConstruct_makeData(const char *expr) |
76 | { |
77 | newRow(tag: expr) << 0; |
78 | } |
79 | |
80 | void tst_QScriptValueGenerated::assignAndCopyConstruct_test(const char *, const QScriptValue &value) |
81 | { |
82 | QScriptValue copy(value); |
83 | QCOMPARE(copy.strictlyEquals(value), !value.isNumber() || !qIsNaN(value.toNumber())); |
84 | QCOMPARE(copy.engine(), value.engine()); |
85 | |
86 | QScriptValue assigned = copy; |
87 | QCOMPARE(assigned.strictlyEquals(value), !copy.isNumber() || !qIsNaN(copy.toNumber())); |
88 | QCOMPARE(assigned.engine(), assigned.engine()); |
89 | |
90 | QScriptValue other(!value.toBool()); |
91 | assigned = other; |
92 | QVERIFY(!assigned.strictlyEquals(copy)); |
93 | QVERIFY(assigned.strictlyEquals(other)); |
94 | QCOMPARE(assigned.engine(), other.engine()); |
95 | } |
96 | |
97 | DEFINE_TEST_FUNCTION(assignAndCopyConstruct) |
98 | |
99 | QTEST_MAIN(tst_QScriptValueGenerated) |
100 | |