aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qml/qjsvalue/tst_qjsvalue.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/qml/qjsvalue/tst_qjsvalue.cpp')
-rw-r--r--tests/auto/qml/qjsvalue/tst_qjsvalue.cpp50
1 files changed, 44 insertions, 6 deletions
diff --git a/tests/auto/qml/qjsvalue/tst_qjsvalue.cpp b/tests/auto/qml/qjsvalue/tst_qjsvalue.cpp
index 837403d391..9c615cfc15 100644
--- a/tests/auto/qml/qjsvalue/tst_qjsvalue.cpp
+++ b/tests/auto/qml/qjsvalue/tst_qjsvalue.cpp
@@ -34,10 +34,6 @@
#include "tst_qjsvalue.h"
#include <QtWidgets/QPushButton>
-QT_BEGIN_NAMESPACE
-extern bool qt_script_isJITEnabled();
-QT_END_NAMESPACE
-
tst_QJSValue::tst_QJSValue()
: engine(0)
{
@@ -45,8 +41,7 @@ tst_QJSValue::tst_QJSValue()
tst_QJSValue::~tst_QJSValue()
{
- if (engine)
- delete engine;
+ delete engine;
}
void tst_QJSValue::ctor_invalid()
@@ -308,6 +303,19 @@ void tst_QJSValue::ctor_copyAndAssign()
QCOMPARE(v5.toNumber(), 1.0);
}
+static QJSValue createUnboundValue(const QJSValue &value)
+{
+ QVariant variant = QVariant::fromValue(value);
+ QBuffer buffer;
+ buffer.open(QIODevice::ReadWrite);
+ QDataStream stream(&buffer);
+ variant.save(stream);
+ buffer.seek(0);
+ QVariant resultVariant;
+ resultVariant.load(stream);
+ return resultVariant.value<QJSValue>();
+}
+
void tst_QJSValue::toString()
{
QJSEngine eng;
@@ -406,6 +414,28 @@ void tst_QJSValue::toString()
variant = eng.toScriptValue(QUrl());
QVERIFY(variant.isVariant());
QVERIFY(variant.toString().isEmpty());
+
+ {
+ QJSValue o = eng.newObject();
+ o.setProperty(QStringLiteral("test"), 42);
+ QCOMPARE(o.toString(), QStringLiteral("[object Object]"));
+
+ o = createUnboundValue(o);
+ QVERIFY(!o.engine());
+ QCOMPARE(o.toString(), QStringLiteral("[object Object]"));
+ }
+
+ {
+ QJSValue o = eng.newArray();
+ o.setProperty(0, 1);
+ o.setProperty(1, 2);
+ o.setProperty(2, 3);
+ QCOMPARE(o.toString(), QStringLiteral("1,2,3"));
+
+ o = createUnboundValue(o);
+ QVERIFY(!o.engine());
+ QCOMPARE(o.toString(), QStringLiteral("1,2,3"));
+ }
}
void tst_QJSValue::toNumber()
@@ -419,35 +449,43 @@ void tst_QJSValue::toNumber()
QJSValue null = eng.evaluate("null");
QCOMPARE(null.toNumber(), 0.0);
QCOMPARE(qjsvalue_cast<qreal>(null), 0.0);
+ QCOMPARE(createUnboundValue(null).toNumber(), 0.0);
{
QJSValue falskt = eng.toScriptValue(false);
QCOMPARE(falskt.toNumber(), 0.0);
+ QCOMPARE(createUnboundValue(falskt).toNumber(), 0.0);
QCOMPARE(qjsvalue_cast<qreal>(falskt), 0.0);
QJSValue sant = eng.toScriptValue(true);
QCOMPARE(sant.toNumber(), 1.0);
+ QCOMPARE(createUnboundValue(sant).toNumber(), 1.0);
QCOMPARE(qjsvalue_cast<qreal>(sant), 1.0);
QJSValue number = eng.toScriptValue(123.0);
QCOMPARE(number.toNumber(), 123.0);
QCOMPARE(qjsvalue_cast<qreal>(number), 123.0);
+ QCOMPARE(createUnboundValue(number).toNumber(), 123.0);
QJSValue str = eng.toScriptValue(QString("ciao"));
QCOMPARE(qIsNaN(str.toNumber()), true);
QCOMPARE(qIsNaN(qjsvalue_cast<qreal>(str)), true);
+ QCOMPARE(qIsNaN(createUnboundValue(str).toNumber()), true);
QJSValue str2 = eng.toScriptValue(QString("123"));
QCOMPARE(str2.toNumber(), 123.0);
QCOMPARE(qjsvalue_cast<qreal>(str2), 123.0);
+ QCOMPARE(createUnboundValue(str2).toNumber(), 123.0);
}
QJSValue object = eng.newObject();
QCOMPARE(qIsNaN(object.toNumber()), true);
+ QCOMPARE(qIsNaN(createUnboundValue(object).toNumber()), true);
QCOMPARE(qIsNaN(qjsvalue_cast<qreal>(object)), true);
QJSValue inv = QJSValue();
QVERIFY(qIsNaN(inv.toNumber()));
+ QCOMPARE(qIsNaN(createUnboundValue(inv).toNumber()), true);
QVERIFY(qIsNaN(qjsvalue_cast<qreal>(inv)));
// V2 constructors