diff options
Diffstat (limited to 'tests/auto/qml/qjsvalue/tst_qjsvalue.cpp')
-rw-r--r-- | tests/auto/qml/qjsvalue/tst_qjsvalue.cpp | 50 |
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 |