diff options
Diffstat (limited to 'tests')
4 files changed, 81 insertions, 2 deletions
diff --git a/tests/auto/qml/qqmlecmascript/data/scarceResourceFunction.var.qml b/tests/auto/qml/qqmlecmascript/data/scarceResourceFunction.var.qml index 23e4c8d15e..bb6ddc7876 100644 --- a/tests/auto/qml/qqmlecmascript/data/scarceResourceFunction.var.qml +++ b/tests/auto/qml/qqmlecmascript/data/scarceResourceFunction.var.qml @@ -17,7 +17,7 @@ QtObject { } function releaseScarceResource() { - root.scarceResourceCopy = null; + root.scarceResourceCopy = undefined; } } diff --git a/tests/auto/qml/qqmlecmascript/data/scarceResourceFunction.variant.qml b/tests/auto/qml/qqmlecmascript/data/scarceResourceFunction.variant.qml index fe3707b5d3..e147188230 100644 --- a/tests/auto/qml/qqmlecmascript/data/scarceResourceFunction.variant.qml +++ b/tests/auto/qml/qqmlecmascript/data/scarceResourceFunction.variant.qml @@ -17,7 +17,7 @@ QtObject { } function releaseScarceResource() { - root.scarceResourceCopy = null; + root.scarceResourceCopy = undefined; } } diff --git a/tests/auto/qml/qqmlecmascript/data/variants.qml b/tests/auto/qml/qqmlecmascript/data/variants.qml new file mode 100644 index 0000000000..d38c5a1b49 --- /dev/null +++ b/tests/auto/qml/qqmlecmascript/data/variants.qml @@ -0,0 +1,55 @@ +import QtQuick 2.2 + +ListView +{ + property variant undefinedVariant: undefined + property variant nullVariant: null + property variant intVariant: 1 + property variant doubleVariant: 1.2 + + property var testVar + property variant testVariant + + function checkNull() { + var result = [{'test': null}]; + model = result; + if (model[0].test !== null) + return false; + testVar = null; + testVariant = testVar; + if (testVariant !== null) + return false; + testVar = testVariant; + if (testVar !== null) + return false; + return true; + } + function checkUndefined() { + var result = [{'test': undefined}]; + model = result; + if (model[0].test !== undefined) + return false; + testVar = undefined; + testVariant = testVar; + if (testVariant !== undefined) + return false; + testVar = testVariant; + if (testVar !== undefined) + return false; + return true; + } + function checkNumber() { + var result = [{'test': 1}]; + model = result; + if (model[0].test !== 1) + return false; + testVar = 1; + testVariant = testVar; + if (testVariant !== 1) + return false; + testVar = testVariant; + if (testVar !== 1) + return false; + return true; + } +} diff --git a/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp b/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp index 06d061a9fa..01125f86f6 100644 --- a/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp +++ b/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp @@ -213,6 +213,7 @@ private slots: void deletedEngine(); void libraryScriptAssert(); void variantsAssignedUndefined(); + void variants(); void qtbug_9792(); void qtcreatorbug_1289(); void noSpuriousWarningsAtShutdown(); @@ -5737,6 +5738,29 @@ void tst_qqmlecmascript::variantsAssignedUndefined() delete object; } +void tst_qqmlecmascript::variants() +{ + QQmlComponent component(&engine, testFileUrl("variants.qml")); + + QObject *object = component.create(); + QVERIFY(object != 0); + + QVERIFY(object->property("undefinedVariant").type() == QVariant::Invalid); + QVERIFY(object->property("nullVariant").type() == (int)QMetaType::VoidStar); + QVERIFY(object->property("intVariant").type() == QVariant::Int); + QVERIFY(object->property("doubleVariant").type() == QVariant::Double); + + QVariant result; + QMetaObject::invokeMethod(object, "checkNull", Q_RETURN_ARG(QVariant, result)); + QCOMPARE(result.toBool(), true); + + QMetaObject::invokeMethod(object, "checkUndefined", Q_RETURN_ARG(QVariant, result)); + QCOMPARE(result.toBool(), true); + + QMetaObject::invokeMethod(object, "checkNumber", Q_RETURN_ARG(QVariant, result)); + QCOMPARE(result.toBool(), true); +} + void tst_qqmlecmascript::qtbug_9792() { QQmlComponent component(&engine, testFileUrl("qtbug_9792.qml")); |