summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/kernel
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2018-02-06 12:38:51 +0100
committerTor Arne Vestbø <tor.arne.vestbo@qt.io>2018-02-10 15:55:52 +0100
commit32b506d1db1f8cee748a27b548ba8208f2928058 (patch)
tree2d5b23baafe22ccc3518719f8f5d19bb846b2b61 /tests/auto/corelib/kernel
parent2cb1db64370989fffeec313c196fe573c479e6aa (diff)
parentc0948d508e7179e2e23c893ba6152c40400de060 (diff)
Merge remote-tracking branch 'origin/dev' into 5.11
Conflicts: src/corelib/tools/qvarlengtharray.qdoc src/corelib/tools/qvector.qdoc Resolved documentation changes in favor of 017569f702b6dd0, which keeps the move overloads along with its const-ref sibling. Change-Id: I0835b0b3211a418e5e50defc4cf315f0964fab79
Diffstat (limited to 'tests/auto/corelib/kernel')
-rw-r--r--tests/auto/corelib/kernel/qvariant/qvariant.pro3
-rw-r--r--tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp42
2 files changed, 43 insertions, 2 deletions
diff --git a/tests/auto/corelib/kernel/qvariant/qvariant.pro b/tests/auto/corelib/kernel/qvariant/qvariant.pro
index 96071f9f73..a620be0091 100644
--- a/tests/auto/corelib/kernel/qvariant/qvariant.pro
+++ b/tests/auto/corelib/kernel/qvariant/qvariant.pro
@@ -5,7 +5,8 @@ INCLUDEPATH += $$PWD/../../../other/qvariant_common
SOURCES = tst_qvariant.cpp
RESOURCES += qvariant.qrc
DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0
-qtConfig(c++11): CONFIG += c++11
+qtConfig(c++14): CONFIG += c++14
+qtConfig(c++1z): CONFIG += c++1z
!qtConfig(doubleconversion):!qtConfig(system-doubleconversion) {
DEFINES += QT_NO_DOUBLECONVERSION
}
diff --git a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp
index 5a7c677a29..0780fb9172 100644
--- a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp
+++ b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp
@@ -45,7 +45,9 @@
#include <limits.h>
#include <float.h>
#include <cmath>
-
+#if QT_HAS_INCLUDE(<variant>) && __cplusplus >= 201703L
+#include <variant>
+#endif
#include <QLinkedList>
#include <QRegularExpression>
#include <QDir>
@@ -281,6 +283,8 @@ private slots:
void accessSequentialContainerKey();
+ void fromStdVariant();
+
private:
void dataStream_data(QDataStream::Version version);
void loadQVariantFromDataStream(QDataStream::Version version);
@@ -4950,5 +4954,41 @@ void tst_QVariant::accessSequentialContainerKey()
QCOMPARE(nameResult, QStringLiteral("Seven"));
}
+void tst_QVariant::fromStdVariant()
+{
+#if QT_HAS_INCLUDE(<variant>) && __cplusplus >= 201703L
+ {
+ typedef std::variant<int, bool> intorbool_t;
+ intorbool_t stdvar = 5;
+ QVariant qvar = QVariant::fromStdVariant(stdvar);
+ QVERIFY(!qvar.isNull());
+ QCOMPARE(qvar.type(), QVariant::Int);
+ QCOMPARE(qvar.value<int>(), std::get<int>(stdvar));
+ stdvar = true;
+ qvar = QVariant::fromStdVariant(stdvar);
+ QVERIFY(!qvar.isNull());
+ QCOMPARE(qvar.type(), QVariant::Bool);
+ QCOMPARE(qvar.value<bool>(), std::get<bool>(stdvar));
+ }
+ {
+ std::variant<std::monostate, int> stdvar;
+ QVariant qvar = QVariant::fromStdVariant(stdvar);
+ QVERIFY(!qvar.isValid());
+ stdvar = -4;
+ qvar = QVariant::fromStdVariant(stdvar);
+ QVERIFY(!qvar.isNull());
+ QCOMPARE(qvar.type(), QVariant::Int);
+ QCOMPARE(qvar.value<int>(), std::get<int>(stdvar));
+ }
+ {
+ std::variant<int, bool, QChar> stdvar = QChar::fromLatin1(' ');
+ QVariant qvar = QVariant::fromStdVariant(stdvar);
+ QVERIFY(!qvar.isNull());
+ QCOMPARE(qvar.type(), QVariant::Char);
+ QCOMPARE(qvar.value<QChar>(), std::get<QChar>(stdvar));
+ }
+#endif
+}
+
QTEST_MAIN(tst_QVariant)
#include "tst_qvariant.moc"