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.cpp42
1 files changed, 25 insertions, 17 deletions
diff --git a/tests/auto/qml/qjsvalue/tst_qjsvalue.cpp b/tests/auto/qml/qjsvalue/tst_qjsvalue.cpp
index 516abed9e8..6a10b5910d 100644
--- a/tests/auto/qml/qjsvalue/tst_qjsvalue.cpp
+++ b/tests/auto/qml/qjsvalue/tst_qjsvalue.cpp
@@ -1,5 +1,5 @@
// Copyright (C) 2016 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "tst_qjsvalue.h"
@@ -19,11 +19,6 @@ tst_QJSValue::tst_QJSValue()
{
}
-tst_QJSValue::~tst_QJSValue()
-{
- delete engine;
-}
-
void tst_QJSValue::ctor_invalid()
{
QJSEngine eng;
@@ -369,10 +364,11 @@ void tst_QJSValue::toString()
// variant should use internal valueOf(), then fall back to QVariant::toString(),
// then fall back to "QVariant(typename)"
QJSValue variant = eng.toScriptValue(QPoint(10, 20));
+ QT_WARNING_PUSH QT_WARNING_DISABLE_DEPRECATED
QVERIFY(!variant.isVariant());
+ QT_WARNING_POP
QCOMPARE(variant.toString(), QString::fromLatin1("QPoint(10, 20)"));
variant = eng.toScriptValue(QUrl());
- QVERIFY(!variant.isVariant());
QVERIFY(variant.isUrl());
QVERIFY(variant.toString().isEmpty());
@@ -1085,13 +1081,8 @@ void tst_QJSValue::toVariant()
QVariantList listIn;
listIn << 123 << "hello";
QJSValue array = eng.toScriptValue(listIn);
- QVERIFY(array.isArray());
QCOMPARE(array.property("length").toInt(), 2);
- QVariant retained = array.toVariant(QJSValue::RetainJSObjects);
- QCOMPARE(retained.metaType(), QMetaType::fromType<QJSValue>());
- QVERIFY(retained.value<QJSValue>().strictlyEquals(array));
-
QVariant ret = array.toVariant();
QCOMPARE(ret.typeId(), QMetaType::QVariantList);
QVariantList listOut = ret.toList();
@@ -1100,7 +1091,6 @@ void tst_QJSValue::toVariant()
QCOMPARE(listOut.at(i), listIn.at(i));
// round-trip conversion
QJSValue array2 = eng.toScriptValue(ret);
- QVERIFY(array2.isArray());
QCOMPARE(array2.property("length").toInt(), array.property("length").toInt());
for (int i = 0; i < array.property("length").toInt(); ++i)
QVERIFY(array2.property(i).strictlyEquals(array.property(i)));
@@ -1124,6 +1114,25 @@ void tst_QJSValue::toVariant()
QCOMPARE(func.toVariant().metaType(), QMetaType::fromType<QJSValue>());
}
+
+ // object with custom prototype
+ {
+ QJSValue object = eng.evaluate(R"js(
+ (function(){
+ function Person(firstName, lastName) {
+ this.firstName = firstName;
+ this.lastName = lastName;
+ }
+ return new Person("John", "Doe");
+ })();
+ )js");
+ QVERIFY(object.isObject());
+ auto asVariant = object.toVariant();
+ QCOMPARE(asVariant.metaType(), QMetaType::fromType<QVariantMap>());
+ auto variantMap = asVariant.value<QVariantMap>();
+ QVERIFY(variantMap.contains("firstName"));
+ QCOMPARE(variantMap["firstName"].toString(), "John");
+ }
}
void tst_QJSValue::toPrimitive_data()
@@ -2345,8 +2354,6 @@ void tst_QJSValue::strictlyEquals()
{
QJSValue var1 = eng.toScriptValue(QVariant(QStringList() << "a"));
QJSValue var2 = eng.toScriptValue(QVariant(QStringList() << "a"));
- QVERIFY(var1.isArray());
- QVERIFY(var2.isArray());
QVERIFY(!var1.strictlyEquals(var2));
}
{
@@ -2586,7 +2593,7 @@ void tst_QJSValue::prettyPrinter()
void tst_QJSValue::engineDeleted()
{
- QJSEngine *eng = new QJSEngine;
+ std::unique_ptr<QJSEngine> eng = std::make_unique<QJSEngine>();
QObject *temp = new QObject(); // Owned by JS engine, as newQObject() sets JS ownership explicitly
QJSValue v1 = eng->toScriptValue(123);
QVERIFY(v1.isNumber());
@@ -2599,7 +2606,7 @@ void tst_QJSValue::engineDeleted()
QJSValue v5 = "Hello";
QVERIFY(v2.isString());
- delete eng;
+ eng.reset();
QVERIFY(!v1.isUndefined()); // Primitive value is stored inline
QVERIFY(v2.isUndefined());
@@ -2810,6 +2817,7 @@ void tst_QJSValue::deleteFromDifferentThread()
thread->start();
condition.wait(&mutex);
QTRY_VERIFY(thread->isFinished());
+ storage.clearFreePageHint();
QTRY_COMPARE(storage.firstPage, nullptr);
#endif
}