summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2020-10-20 10:22:07 +0200
committerLars Knoll <lars.knoll@qt.io>2020-10-23 09:50:16 +0200
commit1e0f2be5ac60884f0164f9b9dc2f8cffb21a969a (patch)
tree8eb2617a5acc84aa137ac86a697bb66db7f5f15e /tests
parent194f0ab50cef9be3cb40fc45861208493aca9d1d (diff)
Do not store non relocatable types in QVariants internal storage
This mostly reverts change 76e8e8e9c8093f093cb9f37d61d273f43398fefb. The reason is that storing non relocatable types inline in QVariants storage would implicitly make QVariant non relocatable. Fixes: QTBUG-87686 Change-Id: I2a09b1dcdd907d60085dccf17f987086dcba878c Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp27
1 files changed, 26 insertions, 1 deletions
diff --git a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp
index 8860d3cabf..6da7a73851 100644
--- a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp
+++ b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp
@@ -284,6 +284,8 @@ private slots:
void preferDirectConversionOverInterfaces();
void mutableView();
+ void moveOperations();
+
private:
void dataStream_data(QDataStream::Version version);
void loadQVariantFromDataStream(QDataStream::Version version);
@@ -1926,7 +1928,7 @@ void tst_QVariant::userType()
QCOMPARE(instanceCount, 3);
{
QVariant second = myCarrier;
- QCOMPARE(instanceCount, 4);
+ QCOMPARE(instanceCount, 3);
second.detach();
QCOMPARE(instanceCount, 4);
}
@@ -4961,5 +4963,28 @@ void tst_QVariant::mutableView()
QCOMPARE(extracted.text, nullptr);
}
+void tst_QVariant::moveOperations()
+{
+ {
+ QString str = "Hello";
+ auto v = QVariant::fromValue(str);
+ QVariant v2(std::move(v));
+ QCOMPARE(v2.toString(), str);
+
+ v = QVariant::fromValue(str);
+ v2 = std::move(v);
+ QCOMPARE(v2.toString(), str);
+ }
+
+ std::list<int> list;
+ auto v = QVariant::fromValue(list);
+ QVariant v2(std::move(v));
+ QVERIFY(v2.value<std::list<int>>() == list);
+
+ v = QVariant::fromValue(list);
+ v2 = std::move(v);
+ QVERIFY(v2.value<std::list<int>>() == list);
+}
+
QTEST_MAIN(tst_QVariant)
#include "tst_qvariant.moc"