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#ifndef tst_qscriptvalue_h
21#define tst_qscriptvalue_h
22
23#include "qscriptengine.h"
24#include "qscriptvalue.h"
25#include <QtCore/qnumeric.h>
26#include <QtTest/qtest.h>
27
28Q_DECLARE_METATYPE(QScriptValue*);
29Q_DECLARE_METATYPE(QScriptValue);
30
31class tst_QScriptValue : public QObject {
32    Q_OBJECT
33
34public:
35    tst_QScriptValue();
36    virtual ~tst_QScriptValue();
37
38private slots:
39    void toString_data();
40    void toString();
41    void copyConstructor_data();
42    void copyConstructor();
43    void assignOperator_data();
44    void assignOperator();
45    void dataSharing();
46    void constructors_data();
47    void constructors();
48    void call();
49    void ctor();
50
51    // Generated test functions.
52    void isBool_data();
53    void isBool();
54
55    void isBoolean_data();
56    void isBoolean();
57
58    void isNumber_data();
59    void isNumber();
60
61    void isFunction_data();
62    void isFunction();
63
64    void isNull_data();
65    void isNull();
66
67    void isObject_data();
68    void isObject();
69
70    void isString_data();
71    void isString();
72
73    void isUndefined_data();
74    void isUndefined();
75
76    void isValid_data();
77    void isValid();
78
79    void toNumber_data();
80    void toNumber();
81
82    void toBool_data();
83    void toBool();
84
85    void toBoolean_data();
86    void toBoolean();
87
88private:
89    typedef void (tst_QScriptValue::*InitDataFunction)();
90    typedef void (tst_QScriptValue::*DefineDataFunction)(const char*);
91    void dataHelper(InitDataFunction init, DefineDataFunction define);
92    QTestData& newRow(const char* tag);
93
94    typedef void (tst_QScriptValue::*TestFunction)(const char*, const QScriptValue&);
95    void testHelper(TestFunction fun);
96
97    // Generated functions
98
99    void initScriptValues();
100
101    void isBool_initData();
102    void isBool_makeData(const char* expr);
103    void isBool_test(const char* expr, const QScriptValue& value);
104
105    void isBoolean_initData();
106    void isBoolean_makeData(const char* expr);
107    void isBoolean_test(const char* expr, const QScriptValue& value);
108
109    void isNumber_initData();
110    void isNumber_makeData(const char* expr);
111    void isNumber_test(const char* expr, const QScriptValue&);
112
113    void isFunction_initData();
114    void isFunction_makeData(const char* expr);
115    void isFunction_test(const char* expr, const QScriptValue& value);
116
117    void isNull_initData();
118    void isNull_makeData(const char* expr);
119    void isNull_test(const char* expr, const QScriptValue& value);
120
121    void isObject_initData();
122    void isObject_makeData(const char* expr);
123    void isObject_test(const char* expr, const QScriptValue& value);
124
125    void isString_initData();
126    void isString_makeData(const char* expr);
127    void isString_test(const char* expr, const QScriptValue& value);
128
129    void isUndefined_initData();
130    void isUndefined_makeData(const char* expr);
131    void isUndefined_test(const char* expr, const QScriptValue& value);
132
133    void isValid_initData();
134    void isValid_makeData(const char* expr);
135    void isValid_test(const char* expr, const QScriptValue& value);
136
137    void toNumber_initData();
138    void toNumber_makeData(const char*);
139    void toNumber_test(const char*, const QScriptValue&);
140
141    void toBool_initData();
142    void toBool_makeData(const char*);
143    void toBool_test(const char*, const QScriptValue&);
144
145    void toBoolean_initData();
146    void toBoolean_makeData(const char*);
147    void toBoolean_test(const char*, const QScriptValue&);
148
149private:
150    QScriptEngine* engine;
151    QHash<QString, QScriptValue> m_values;
152    QString m_currentExpression;
153};
154
155#define DEFINE_TEST_FUNCTION(name) \
156void tst_QScriptValue::name##_data() { dataHelper(&tst_QScriptValue::name##_initData, &tst_QScriptValue::name##_makeData); } \
157void tst_QScriptValue::name() { testHelper(&tst_QScriptValue::name##_test); }
158
159
160
161#endif // tst_qscriptvalue_h
162