diff options
author | Liang Qi <liang.qi@qt.io> | 2018-02-06 12:38:51 +0100 |
---|---|---|
committer | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2018-02-10 15:55:52 +0100 |
commit | 32b506d1db1f8cee748a27b548ba8208f2928058 (patch) | |
tree | 2d5b23baafe22ccc3518719f8f5d19bb846b2b61 /tests/auto/corelib/kernel | |
parent | 2cb1db64370989fffeec313c196fe573c479e6aa (diff) | |
parent | c0948d508e7179e2e23c893ba6152c40400de060 (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.pro | 3 | ||||
-rw-r--r-- | tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp | 42 |
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" |