aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qml
diff options
context:
space:
mode:
authorFabian Kosmale <fabian.kosmale@qt.io>2020-06-22 09:43:05 +0200
committerFabian Kosmale <fabian.kosmale@qt.io>2020-08-24 10:13:39 +0200
commit1b7a098803a43355abf62e099267d4a122645e07 (patch)
treebd8f744e81250042d3e86c1c942be89e8e292f31 /tests/auto/qml
parentae36d94c2f385e272ae25fcd0fe780edb70cf7d9 (diff)
Unify "variant" and "var" properties in QML
variant and var properties differ in two important ways: - variant properties trigger "magic" string conversions: variant v1: "red" // contains a QColor var v2: "red" // contains a string - variant properties behave differently for value types: they create copies, instead of references. However, as variant properties were marked as obsolete and this behavior was effetively undocumented, it should be safe to give "variant" "var semantics". With this change, we can also avoid doing magic conversions when storing data in QVariant properties of QObjects/QGadgets Change-Id: I549b1beb98e6af9639c1ee81f316bda513d5ff65 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Diffstat (limited to 'tests/auto/qml')
-rw-r--r--tests/auto/qml/qqmlecmascript/data/functionAssignment.1.qml2
-rw-r--r--tests/auto/qml/qqmlecmascript/data/sequenceConversion.array.qml22
-rw-r--r--tests/auto/qml/qqmlecmascript/data/sequenceConversion.copy.qml183
-rw-r--r--tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp116
-rw-r--r--tests/auto/qml/qqmllanguage/data/assignLiteralToVariant.qml17
-rw-r--r--tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp37
-rw-r--r--tests/auto/qml/qqmlmetaobject/tst_qqmlmetaobject.cpp6
-rw-r--r--tests/auto/qml/qqmlvaluetypes/data/variant_read.qml9
-rw-r--r--tests/auto/qml/qqmlvaluetypes/data/variant_write.1.qml25
-rw-r--r--tests/auto/qml/qqmlvaluetypes/data/variant_write.2.qml40
-rw-r--r--tests/auto/qml/qqmlvaluetypes/tst_qqmlvaluetypes.cpp34
11 files changed, 4 insertions, 487 deletions
diff --git a/tests/auto/qml/qqmlecmascript/data/functionAssignment.1.qml b/tests/auto/qml/qqmlecmascript/data/functionAssignment.1.qml
index d97613a875..ec6f8b32c5 100644
--- a/tests/auto/qml/qqmlecmascript/data/functionAssignment.1.qml
+++ b/tests/auto/qml/qqmlecmascript/data/functionAssignment.1.qml
@@ -1,8 +1,6 @@
import Qt.test 1.0
MyQmlObject {
- property variant a: function myFunction() { return 2; }
- property variant b: Qt.binding(function() { return 2; })
property var c: Qt.binding(function() { return 2; })
qjsvalue: Qt.binding(function() { return 2; })
}
diff --git a/tests/auto/qml/qqmlecmascript/data/sequenceConversion.array.qml b/tests/auto/qml/qqmlecmascript/data/sequenceConversion.array.qml
index 99c49ebf62..77d8161138 100644
--- a/tests/auto/qml/qqmlecmascript/data/sequenceConversion.array.qml
+++ b/tests/auto/qml/qqmlecmascript/data/sequenceConversion.array.qml
@@ -17,54 +17,36 @@ Item {
property bool success: false
- property variant intList
- property variant qrealList
- property variant boolList
- property variant stringList
-
function indexedAccess() {
- intList = msco.intListProperty;
var jsIntList = msco.intListProperty;
- qrealList = msco.qrealListProperty;
var jsQrealList = msco.qrealListProperty;
- boolList = msco.boolListProperty;
var jsBoolList = msco.boolListProperty;
- stringList = msco.stringListProperty;
var jsStringList = msco.stringListProperty;
- // Three cases: direct property modification, variant copy modification, js var reference modification.
- // Only the first and third should "write back" to the original QObject Q_PROPERTY; the second one
- // should have no effect whatsoever to maintain "property variant" semantics (see e.g., valuetype).
+ // Two cases: direct property modification, js var reference modification.
+ // Both should "write back" to the original QObject Q_PROPERTY
success = true;
msco.intListProperty[1] = 33;
if (msco.intListProperty[1] != 33) success = false; // ensure write back
- intList[1] = 44;
- if (intList[1] == 44) success = false; // ensure no effect
jsIntList[1] = 55;
if (jsIntList[1] != 55
|| jsIntList[1] != msco.intListProperty[1]) success = false; // ensure write back
msco.qrealListProperty[1] = 33.3;
if (msco.qrealListProperty[1] != 33.3) success = false; // ensure write back
- qrealList[1] = 44.4;
- if (qrealList[1] == 44.4) success = false; // ensure no effect
jsQrealList[1] = 55.5;
if (jsQrealList[1] != 55.5
|| jsQrealList[1] != msco.qrealListProperty[1]) success = false; // ensure write back
msco.boolListProperty[1] = true;
if (msco.boolListProperty[1] != true) success = false; // ensure write back
- boolList[1] = true;
- if (boolList[1] != false) success = false; // ensure no effect
jsBoolList[1] = false;
if (jsBoolList[1] != false
|| jsBoolList[1] != msco.boolListProperty[1]) success = false; // ensure write back
msco.stringListProperty[1] = "changed";
if (msco.stringListProperty[1] != "changed") success = false; // ensure write back
- stringList[1] = "changed";
- if (stringList[1] != "second") success = false; // ensure no effect
jsStringList[1] = "different";
if (jsStringList[1] != "different"
|| jsStringList[1] != msco.stringListProperty[1]) success = false; // ensure write back
diff --git a/tests/auto/qml/qqmlecmascript/data/sequenceConversion.copy.qml b/tests/auto/qml/qqmlecmascript/data/sequenceConversion.copy.qml
deleted file mode 100644
index 088e240ad4..0000000000
--- a/tests/auto/qml/qqmlecmascript/data/sequenceConversion.copy.qml
+++ /dev/null
@@ -1,183 +0,0 @@
-import QtQuick 2.0
-import Qt.test 1.0
-
-Item {
- id: root
- objectName: "root"
-
- MySequenceConversionObject {
- id: msco
- objectName: "msco"
- }
-
- property bool success: true
-
- property variant intList
- property variant qrealList
- property variant boolList
- property variant stringList
- property variant urlList
- property variant qstringList
-
- // this test ensures that the "copy resource" codepaths work
- function testCopySequences() {
- success = true;
-
- // create "copy resource" sequences
- var jsIntList = msco.generateIntSequence();
- var jsQrealList = msco.generateQrealSequence();
- var jsBoolList = msco.generateBoolSequence();
- var jsStringList = msco.generateStringSequence();
- var jsUrlList = msco.generateUrlSequence();
- var jsQStringList = msco.generateQStringSequence();
-
- if (jsIntList.toString() != [1, 2, 3].toString())
- success = false;
- if (jsQrealList.toString() != [1.1, 2.2, 3.3].toString())
- success = false;
- if (jsBoolList.toString() != [true, false, true].toString())
- success = false;
- if (jsStringList.toString() != ["one", "two", "three"].toString())
- success = false;
- if (jsUrlList.toString() != ["http://www.example1.com", "http://www.example2.com", "http://www.example3.com"].toString())
- success = false;
- if (jsQStringList.toString() != ["one", "two", "three"].toString())
- success = false;
-
- // copy the sequence; should result in a new copy
- intList = jsIntList;
- qrealList = jsQrealList;
- boolList = jsBoolList;
- stringList = jsStringList;
- urlList = jsUrlList;
- qstringList = jsQStringList;
-
- // these operations shouldn't modify either variables - because
- // we don't handle writing to the intermediate variant at list[index]
- // for variant properties.
- intList[1] = 8;
- qrealList[1] = 8.8;
- boolList[1] = true;
- stringList[1] = "eight";
- urlList[1] = "http://www.example8.com";
- qstringList[1] = "eight";
-
- if (jsIntList[1] == 8)
- success = false;
- if (jsQrealList[1] == 8.8)
- success = false;
- if (jsBoolList[1] == true)
- success = false;
- if (jsStringList[1] == "eight")
- success = false;
- if (jsUrlList[1] == "http://www.example8.com")
- success = false;
- if (jsQStringList[1] == "eight")
- success = false;
-
- // assign a "copy resource" sequence to a QObject Q_PROPERTY
- msco.intListProperty = intList;
- msco.qrealListProperty = qrealList;
- msco.boolListProperty = boolList;
- msco.stringListProperty = stringList;
- msco.urlListProperty = urlList;
- msco.qstringListProperty = qstringList;
-
- if (msco.intListProperty.toString() != [1, 2, 3].toString())
- success = false;
- if (msco.qrealListProperty.toString() != [1.1, 2.2, 3.3].toString())
- success = false;
- if (msco.boolListProperty.toString() != [true, false, true].toString())
- success = false;
- if (msco.stringListProperty.toString() != ["one", "two", "three"].toString())
- success = false;
- if (msco.urlListProperty.toString() != ["http://www.example1.com", "http://www.example2.com", "http://www.example3.com"].toString())
- success = false;
- if (msco.qstringListProperty.toString() != ["one", "two", "three"].toString())
- success = false;
-
- // now modify the QObject Q_PROPERTY (reference resource) sequences - shouldn't modify the copy resource sequences.
- msco.intListProperty[2] = 9;
- msco.qrealListProperty[2] = 9.9;
- msco.boolListProperty[2] = false;
- msco.stringListProperty[2] = "nine";
- msco.urlListProperty[2] = "http://www.example9.com";
- msco.qstringListProperty[2] = "nine";
-
- if (intList[2] == 9)
- success = false;
- if (qrealList[2] == 9.9)
- success = false;
- if (boolList[2] == false)
- success = false;
- if (stringList[2] == "nine")
- success = false;
- if (urlList[2] == "http://www.example9.com")
- success = false;
- if (qstringList[2] == "nine")
- success = false;
- }
-
- property int intVal
- property real qrealVal
- property bool boolVal
- property string stringVal
-
- // this test ensures that indexed access works for copy resource sequences.
- function readSequenceCopyElements() {
- success = true;
-
- var jsIntList = msco.generateIntSequence();
- var jsQrealList = msco.generateQrealSequence();
- var jsBoolList = msco.generateBoolSequence();
- var jsStringList = msco.generateStringSequence();
-
- intVal = jsIntList[1];
- qrealVal = jsQrealList[1];
- boolVal = jsBoolList[1];
- stringVal = jsStringList[1];
-
- if (intVal != 2)
- success = false;
- if (qrealVal != 2.2)
- success = false;
- if (boolVal != false)
- success = false;
- if (stringVal != "two")
- success = false;
- }
-
- // this test ensures that equality works for copy resource sequences.
- function testEqualitySemantics() {
- success = true;
-
- var jsIntList = msco.generateIntSequence();
- var jsIntList2 = msco.generateIntSequence();
-
- if (jsIntList == jsIntList2) success = false;
- if (jsIntList != jsIntList) success = false;
- }
-
- // this test ensures that copy resource sequences can be passed as parameters
- function testCopyParameters() {
- success = false;
-
- var jsIntList = msco.generateIntSequence();
- success = msco.parameterEqualsGeneratedIntSequence(jsIntList);
- if (success == false) return;
-
- // here we construct something which should be converted to a copy sequence automatically.
- success = msco.parameterEqualsGeneratedIntSequence([1,2,3]);
- }
-
- // this test ensures that reference resource sequences are converted
- // to copy resource sequences when passed as parameters.
- function testReferenceParameters() {
- success = false;
-
- msco.intListProperty = msco.generateIntSequence();
- var jsIntList = msco.intListProperty
- success = msco.parameterEqualsGeneratedIntSequence(jsIntList);
- if (success == false) return;
- }
-}
diff --git a/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp b/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp
index deb949e7a5..374819a3fe 100644
--- a/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp
+++ b/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp
@@ -205,7 +205,6 @@ private slots:
void sequenceConversionIndexes();
void sequenceConversionThreads();
void sequenceConversionBindings();
- void sequenceConversionCopy();
void assignSequenceTypes();
void sequenceSort_data();
void sequenceSort();
@@ -4887,94 +4886,6 @@ void tst_qqmlecmascript::scarceResources_data()
<< (QList<QVariant>() << false << false) // invalidating one should invalidate the other, because they're references to the same JS object.
<< (QList<QVariant>() << QVariant() << QVariant())
<< QStringList();
-
-
- /* property variant semantics */
-
- // in the following three cases, the instance created from the component
- // has a property which is a copy of the scarce resource; hence, the
- // resource should NOT be detached prior to deletion of the object instance,
- // unless the resource is destroyed explicitly.
- QTest::newRow("variant: import scarce resource copy directly")
- << testFileUrl("scarceResourceCopy.variant.qml")
- << true
- << false // won't be detached, because assigned to property and not explicitly released
- << (QStringList() << QLatin1String("scarceResourceCopy"))
- << (QList<QVariant>() << true)
- << (QList<QVariant>() << origPixmap)
- << QStringList();
-
- QTest::newRow("variant: import scarce resource copy from JS")
- << testFileUrl("scarceResourceCopyFromJs.variant.qml")
- << true
- << false // won't be detached, because assigned to property and not explicitly released
- << (QStringList() << QLatin1String("scarceResourceCopy"))
- << (QList<QVariant>() << true)
- << (QList<QVariant>() << origPixmap)
- << QStringList();
-
- QTest::newRow("variant: import released scarce resource copy from JS")
- << testFileUrl("scarceResourceDestroyedCopy.variant.qml")
- << true
- << true // explicitly released, so it will be detached
- << (QStringList() << QLatin1String("scarceResourceCopy"))
- << (QList<QVariant>() << false)
- << (QList<QVariant>() << QVariant())
- << QStringList();
-
- // in the following three cases, no other copy should exist in memory,
- // and so it should be detached (unless explicitly preserved).
- QTest::newRow("variant: import auto-release SR from JS in binding side-effect")
- << testFileUrl("scarceResourceTest.variant.qml")
- << true
- << true // auto released, so it will be detached
- << (QStringList() << QLatin1String("scarceResourceTest"))
- << (QList<QVariant>() << true)
- << (QList<QVariant>() << QVariant(100))
- << QStringList();
- QTest::newRow("variant: import explicit-preserve SR from JS in binding side-effect")
- << testFileUrl("scarceResourceTestPreserve.variant.qml")
- << true
- << false // won't be detached because we explicitly preserve it
- << (QStringList() << QLatin1String("scarceResourceTest"))
- << (QList<QVariant>() << true)
- << (QList<QVariant>() << QVariant(100))
- << QStringList();
- QTest::newRow("variant: import multiple scarce resources")
- << testFileUrl("scarceResourceTestMultiple.variant.qml")
- << true
- << true // will be detached because all resources were released manually or automatically.
- << (QStringList() << QLatin1String("scarceResourceTest"))
- << (QList<QVariant>() << true)
- << (QList<QVariant>() << QVariant(100))
- << QStringList();
-
- // In the following three cases, test that scarce resources are handled
- // correctly for imports.
- QTest::newRow("variant: import with no binding")
- << testFileUrl("scarceResourceCopyImportNoBinding.variant.qml")
- << false // cannot check detach status.
- << false
- << QStringList()
- << QList<QVariant>()
- << QList<QVariant>()
- << QStringList();
- QTest::newRow("variant: import with binding without explicit preserve")
- << testFileUrl("scarceResourceCopyImportNoBinding.variant.qml")
- << false
- << false
- << (QStringList() << QLatin1String("scarceResourceCopy"))
- << (QList<QVariant>() << false) // will have been released prior to evaluation of binding.
- << (QList<QVariant>() << QVariant())
- << QStringList();
- QTest::newRow("variant: import with explicit release after binding evaluation")
- << testFileUrl("scarceResourceCopyImport.variant.qml")
- << false
- << false
- << (QStringList() << QLatin1String("scarceResourceImportedCopy") << QLatin1String("scarceResourceAssignedCopyOne") << QLatin1String("scarceResourceAssignedCopyTwo"))
- << (QList<QVariant>() << true << true << false) // since property variant = variant copy, releasing the provider's resource does not invalidate previously assigned copies.
- << (QList<QVariant>() << origPixmap << origPixmap << QVariant())
- << QStringList();
}
void tst_qqmlecmascript::scarceResources()
@@ -5923,26 +5834,6 @@ void tst_qqmlecmascript::sequenceConversionBindings()
}
}
-void tst_qqmlecmascript::sequenceConversionCopy()
-{
- QUrl qmlFile = testFileUrl("sequenceConversion.copy.qml");
- QQmlEngine engine;
- QQmlComponent component(&engine, qmlFile);
- QObject *object = component.create();
- QVERIFY(object != nullptr);
- QMetaObject::invokeMethod(object, "testCopySequences");
- QCOMPARE(object->property("success").toBool(), true);
- QMetaObject::invokeMethod(object, "readSequenceCopyElements");
- QCOMPARE(object->property("success").toBool(), true);
- QMetaObject::invokeMethod(object, "testEqualitySemantics");
- QCOMPARE(object->property("success").toBool(), true);
- QMetaObject::invokeMethod(object, "testCopyParameters");
- QCOMPARE(object->property("success").toBool(), true);
- QMetaObject::invokeMethod(object, "testReferenceParameters");
- QCOMPARE(object->property("success").toBool(), true);
- delete object;
-}
-
void tst_qqmlecmascript::assignSequenceTypes()
{
QQmlEngine engine;
@@ -6317,19 +6208,14 @@ void tst_qqmlecmascript::functionAssignment_fromBinding()
QQmlComponent component(&engine, testFileUrl("functionAssignment.1.qml"));
QString url = component.url().toString();
- QString w1 = url + ":4:5: Unable to assign a function to a property of any type other than var.";
+ QString w1 = url + ":4:5: Invalid use of Qt.binding() in a binding declaration.";
QString w2 = url + ":5:5: Invalid use of Qt.binding() in a binding declaration.";
- QString w3 = url + ":6:5: Invalid use of Qt.binding() in a binding declaration.";
- QString w4 = url + ":7:5: Invalid use of Qt.binding() in a binding declaration.";
QTest::ignoreMessage(QtWarningMsg, w1.toLatin1().constData());
QTest::ignoreMessage(QtWarningMsg, w2.toLatin1().constData());
- QTest::ignoreMessage(QtWarningMsg, w3.toLatin1().constData());
- QTest::ignoreMessage(QtWarningMsg, w4.toLatin1().constData());
MyQmlObject *o = qobject_cast<MyQmlObject *>(component.create());
QVERIFY(o != nullptr);
- QVERIFY(!o->property("a").isValid());
delete o;
}
diff --git a/tests/auto/qml/qqmllanguage/data/assignLiteralToVariant.qml b/tests/auto/qml/qqmllanguage/data/assignLiteralToVariant.qml
deleted file mode 100644
index f6f9a139dc..0000000000
--- a/tests/auto/qml/qqmllanguage/data/assignLiteralToVariant.qml
+++ /dev/null
@@ -1,17 +0,0 @@
-import QtQuick 2.0
-
-QtObject {
- property variant test1: 1
- property variant test2: 1.7
- property variant test3: "Hello world!"
- property variant test4: "#FF008800"
- property variant test5: "10,10,10x10"
- property variant test6: "10,10"
- property variant test7: "10x10"
- property variant test8: "100,100,100"
- property variant test9: String("#FF008800")
- property variant test10: true
- property variant test11: false
- property variant test12: "100,100,100,100"
-}
-
diff --git a/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp b/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp
index e5ac59f379..2932b112e3 100644
--- a/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp
+++ b/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp
@@ -104,7 +104,6 @@ private slots:
void assignBasicTypes();
void assignTypeExtremes();
void assignCompositeToType();
- void assignLiteralToVariant();
void assignLiteralToVar();
void assignLiteralToJSValue();
void assignNullStrings();
@@ -849,41 +848,6 @@ void tst_qqmllanguage::assignCompositeToType()
QVERIFY(object != nullptr);
}
-// Test that literals are stored correctly in variant properties
-void tst_qqmllanguage::assignLiteralToVariant()
-{
- QQmlComponent component(&engine, testFileUrl("assignLiteralToVariant.qml"));
- VERIFY_ERRORS(0);
- QScopedPointer<QObject> object(component.create());
- QVERIFY(object != nullptr);
-
- QVERIFY(isJSNumberType(object->property("test1").userType()));
- QVERIFY(isJSNumberType(object->property("test2").userType()));
- QCOMPARE(object->property("test3").userType(), (int)QVariant::String);
- QCOMPARE(object->property("test4").userType(), (int)QVariant::Color);
- QCOMPARE(object->property("test5").userType(), (int)QVariant::RectF);
- QCOMPARE(object->property("test6").userType(), (int)QVariant::PointF);
- QCOMPARE(object->property("test7").userType(), (int)QVariant::SizeF);
- QCOMPARE(object->property("test8").userType(), (int)QVariant::Vector3D);
- QCOMPARE(object->property("test9").userType(), (int)QVariant::String);
- QCOMPARE(object->property("test10").userType(), (int)QVariant::Bool);
- QCOMPARE(object->property("test11").userType(), (int)QVariant::Bool);
- QCOMPARE(object->property("test12").userType(), (int)QVariant::Vector4D);
-
- QCOMPARE(object->property("test1"), QVariant(1));
- QCOMPARE(object->property("test2"), QVariant((double)1.7));
- QVERIFY(object->property("test3") == QVariant(QString(QLatin1String("Hello world!"))));
- QCOMPARE(object->property("test4"), QVariant(QColor::fromRgb(0xFF008800)));
- QVERIFY(object->property("test5") == QVariant(QRectF(10, 10, 10, 10)));
- QVERIFY(object->property("test6") == QVariant(QPointF(10, 10)));
- QVERIFY(object->property("test7") == QVariant(QSizeF(10, 10)));
- QVERIFY(object->property("test8") == QVariant(QVector3D(100, 100, 100)));
- QCOMPARE(object->property("test9"), QVariant(QString(QLatin1String("#FF008800"))));
- QCOMPARE(object->property("test10"), QVariant(bool(true)));
- QCOMPARE(object->property("test11"), QVariant(bool(false)));
- QVERIFY(object->property("test12") == QVariant(QVector4D(100, 100, 100, 100)));
-}
-
// Test that literals are stored correctly in "var" properties
// Note that behaviour differs from "variant" properties in that
// no conversion from "special strings" to QVariants is performed.
@@ -3560,6 +3524,7 @@ void tst_qqmllanguage::variantNotify()
QScopedPointer<QObject> object(component.create());
QVERIFY(object != nullptr);
+ QEXPECT_FAIL("", "var properties always trigger notify", Continue);
QCOMPARE(object->property("notifyCount").toInt(), 1);
}
diff --git a/tests/auto/qml/qqmlmetaobject/tst_qqmlmetaobject.cpp b/tests/auto/qml/qqmlmetaobject/tst_qqmlmetaobject.cpp
index b21d2a908d..7b02415328 100644
--- a/tests/auto/qml/qqmlmetaobject/tst_qqmlmetaobject.cpp
+++ b/tests/auto/qml/qqmlmetaobject/tst_qqmlmetaobject.cpp
@@ -115,12 +115,6 @@ void tst_QQmlMetaObject::property_data()
<< QVariant(QDate(2012, 2, 7).startOfDay())
<< true // writable
<< QVariant(QDate(2010, 7, 2).startOfDay());
- QTest::newRow("variant") << "property.variant.qml"
- << QByteArray("QVariant") << int(QMetaType::QVariant)
- << true // default
- << QVariant(QPointF(12, 34))
- << true // writable
- << QVariant(QSizeF(45, 67));
QTest::newRow("var") << "property.var.qml"
<< QByteArray("QVariant") << int(QMetaType::QVariant)
<< false // default
diff --git a/tests/auto/qml/qqmlvaluetypes/data/variant_read.qml b/tests/auto/qml/qqmlvaluetypes/data/variant_read.qml
deleted file mode 100644
index a08f3db94f..0000000000
--- a/tests/auto/qml/qqmlvaluetypes/data/variant_read.qml
+++ /dev/null
@@ -1,9 +0,0 @@
-import Test 1.0
-
-MyTypeObject {
- property real s_width: variant.width
- property real s_height: variant.height
- property variant copy: variant
-}
-
-
diff --git a/tests/auto/qml/qqmlvaluetypes/data/variant_write.1.qml b/tests/auto/qml/qqmlvaluetypes/data/variant_write.1.qml
deleted file mode 100644
index 6063917dd4..0000000000
--- a/tests/auto/qml/qqmlvaluetypes/data/variant_write.1.qml
+++ /dev/null
@@ -1,25 +0,0 @@
-import QtQuick 2.0
-
-Item {
- property bool complete: false
- property bool success: false
-
- property variant v1: Qt.vector3d(1,2,3)
- property variant v2: Qt.vector3d(4,5,6)
- property variant v3: v1.plus(v2) // set up doomed binding
-
- Component.onCompleted: {
- complete = false;
- success = true;
-
- v1 = Qt.vector2d(1,2) // changing the type of the property shouldn't cause crash
-
- v1.x = 8;
- v2.x = 9;
-
- if (v1 != Qt.vector2d(8,2)) success = false;
- if (v2 != Qt.vector3d(9,5,6)) success = false;
-
- complete = true;
- }
-}
diff --git a/tests/auto/qml/qqmlvaluetypes/data/variant_write.2.qml b/tests/auto/qml/qqmlvaluetypes/data/variant_write.2.qml
deleted file mode 100644
index 0dbfd2a012..0000000000
--- a/tests/auto/qml/qqmlvaluetypes/data/variant_write.2.qml
+++ /dev/null
@@ -1,40 +0,0 @@
-import QtQuick 2.0
-
-Item {
- property bool complete: false
- property bool success: false
-
- property variant v1
-
- Component.onCompleted: {
- complete = false;
- success = true;
-
- // store a js reference to the VariantReference vt in a temp var.
- v1 = Qt.vector3d(1,2,3)
- var ref = v1;
- ref.z = 5
- if (v1 != Qt.vector3d(1,2,5)) success = false;
-
- // now change the type of a reference, and attempt a valid write.
- v1 = Qt.vector2d(1,2);
- ref.x = 5;
- if (v1 != Qt.vector2d(5,2)) success = false;
-
- // now change the type of a reference, and attempt an invalid write.
- v1 = Qt.rgba(1,0,0,1);
- ref.x = 5;
- if (v1.toString() != Qt.rgba(1,0,0,1).toString()) success = false;
- v1 = 6;
- ref.x = 5;
- if (v1 != 6) success = false;
-
- // now change the type of a reference, and attempt an invalid read.
- v1 = Qt.vector3d(1,2,3);
- ref = v1;
- v1 = Qt.vector2d(1,2);
- if (ref.z == 3) success = false;
-
- complete = true;
- }
-}
diff --git a/tests/auto/qml/qqmlvaluetypes/tst_qqmlvaluetypes.cpp b/tests/auto/qml/qqmlvaluetypes/tst_qqmlvaluetypes.cpp
index f2e43571d8..317a3bd152 100644
--- a/tests/auto/qml/qqmlvaluetypes/tst_qqmlvaluetypes.cpp
+++ b/tests/auto/qml/qqmlvaluetypes/tst_qqmlvaluetypes.cpp
@@ -65,7 +65,6 @@ private slots:
void matrix4x4();
void font();
void color();
- void variant();
void locale();
void qmlproperty();
@@ -290,39 +289,6 @@ void tst_qqmlvaluetypes::sizef()
}
}
-void tst_qqmlvaluetypes::variant()
-{
- {
- QQmlComponent component(&engine, testFileUrl("variant_read.qml"));
- MyTypeObject *object = qobject_cast<MyTypeObject *>(component.create());
- QVERIFY(object != nullptr);
-
- QCOMPARE(float(object->property("s_width").toDouble()), float(0.1));
- QCOMPARE(float(object->property("s_height").toDouble()), float(100923.2));
- QCOMPARE(object->property("copy"), QVariant(QSizeF(0.1, 100923.2)));
-
- delete object;
- }
-
- {
- QQmlComponent component(&engine, testFileUrl("variant_write.1.qml"));
- QObject *object = component.create();
- QVERIFY(object != nullptr);
- QVERIFY(object->property("complete").toBool());
- QVERIFY(object->property("success").toBool());
- delete object;
- }
-
- {
- QQmlComponent component(&engine, testFileUrl("variant_write.2.qml"));
- QObject *object = component.create();
- QVERIFY(object != nullptr);
- QVERIFY(object->property("complete").toBool());
- QVERIFY(object->property("success").toBool());
- delete object;
- }
-}
-
void tst_qqmlvaluetypes::locale()
{
{