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
31QT_BEGIN_NAMESPACE
32extern bool qt_script_isJITEnabled();
33QT_END_NAMESPACE
34
35tst_QScriptValueGenerated::tst_QScriptValueGenerated()
36 : engine(0)
37{
38}
39
40tst_QScriptValueGenerated::~tst_QScriptValueGenerated()
41{
42 delete engine;
43}
44
45void 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
57QTestData &tst_QScriptValueGenerated::newRow(const char *tag)
58{
59 return QTest::newRow(dataTag: tag) << m_currentExpression;
60}
61
62void 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
69void tst_QScriptValueGenerated::assignAndCopyConstruct_initData()
70{
71 QTest::addColumn<int>(name: "dummy");
72 initScriptValues();
73}
74
75void tst_QScriptValueGenerated::assignAndCopyConstruct_makeData(const char *expr)
76{
77 newRow(tag: expr) << 0;
78}
79
80void 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
97DEFINE_TEST_FUNCTION(assignAndCopyConstruct)
98
99QTEST_MAIN(tst_QScriptValueGenerated)
100

source code of qtscript/tests/auto/qscriptvaluegenerated/tst_qscriptvalue.cpp