diff --git a/src/corelib/serialization/qdatastream.h b/src/corelib/serialization/qdatastream.h index aed3888b5c6..6be4b17f092 100644 --- a/src/corelib/serialization/qdatastream.h +++ b/src/corelib/serialization/qdatastream.h @@ -4,6 +4,7 @@ #ifndef QDATASTREAM_H #define QDATASTREAM_H +#include #include #include #include @@ -46,6 +47,8 @@ QDataStream &writeAssociativeMultiContainer(QDataStream &s, const Container &c); } class Q_CORE_EXPORT QDataStream : public QIODeviceBase { + Q_GADGET + public: enum Version QT7_ONLY(: quint8) { Qt_1_0 = 1, @@ -97,6 +100,7 @@ public: #error Add the datastream version for this Qt version and update Qt_DefaultCompiledVersion #endif }; + Q_ENUM(Version) enum ByteOrder { BigEndian = QSysInfo::BigEndian, diff --git a/tests/auto/corelib/time/qdate/tst_qdate.cpp b/tests/auto/corelib/time/qdate/tst_qdate.cpp index b4c26f73f89..814c95324f6 100644 --- a/tests/auto/corelib/time/qdate/tst_qdate.cpp +++ b/tests/auto/corelib/time/qdate/tst_qdate.cpp @@ -1161,38 +1161,23 @@ void tst_QDate::operator_insert_extract_data() QTest::addColumn("date"); QTest::addColumn("dataStreamVersion"); - QMap versionsToTest; - versionsToTest.insert(QDataStream::Qt_1_0, "Qt_1_0"_ba); - versionsToTest.insert(QDataStream::Qt_2_0, "Qt_2_0"_ba); - versionsToTest.insert(QDataStream::Qt_2_1, "Qt_2_1"_ba); - versionsToTest.insert(QDataStream::Qt_3_0, "Qt_3_0"_ba); - versionsToTest.insert(QDataStream::Qt_3_1, "Qt_3_1"_ba); - versionsToTest.insert(QDataStream::Qt_3_3, "Qt_3_3"_ba); - versionsToTest.insert(QDataStream::Qt_4_0, "Qt_4_0"_ba); - versionsToTest.insert(QDataStream::Qt_4_1, "Qt_4_1"_ba); - versionsToTest.insert(QDataStream::Qt_4_2, "Qt_4_2"_ba); - versionsToTest.insert(QDataStream::Qt_4_3, "Qt_4_3"_ba); - versionsToTest.insert(QDataStream::Qt_4_4, "Qt_4_4"_ba); - versionsToTest.insert(QDataStream::Qt_4_5, "Qt_4_5"_ba); - versionsToTest.insert(QDataStream::Qt_4_6, "Qt_4_6"_ba); - versionsToTest.insert(QDataStream::Qt_4_7, "Qt_4_7"_ba); - versionsToTest.insert(QDataStream::Qt_4_8, "Qt_4_8"_ba); - versionsToTest.insert(QDataStream::Qt_4_9, "Qt_4_9"_ba); - versionsToTest.insert(QDataStream::Qt_5_0, "Qt_5_0"_ba); - - for (auto it = versionsToTest.constBegin(); it != versionsToTest.constEnd(); ++it) { - const QByteArray &version(it.value()); - const char *const tag = version.constData(); - QTest::addRow("(invalid) %s", tag) << invalidDate() << it.key(); - QTest::addRow("(1, 1, 1) %s", tag) << QDate(1, 1, 1) << it.key(); - QTest::addRow("(-1, 1, 1) %s", tag) << QDate(-1, 1, 1) << it.key(); - QTest::addRow("(1995, 5, 20) %s", tag) << QDate(1995, 5, 20) << it.key(); + const QMetaEnum e = QMetaEnum::fromType(); + for (int version = QDataStream::Qt_1_0; version <= QDataStream::Qt_DefaultCompiledVersion; + ++version) { + if (e.value(version) == -1 || qstrcmp(e.key(version), "Qt_DefaultCompiledVersion") == 0) + continue; + const auto dataStreamVersion = static_cast(version); + const char *const tag = e.key(version); + QTest::addRow("(invalid) %s", tag) << invalidDate() << dataStreamVersion; + QTest::addRow("(1, 1, 1) %s", tag) << QDate(1, 1, 1) << dataStreamVersion; + QTest::addRow("(-1, 1, 1) %s", tag) << QDate(-1, 1, 1) << dataStreamVersion; + QTest::addRow("(1995, 5, 20) %s", tag) << QDate(1995, 5, 20) << dataStreamVersion; // Test minimums for quint32/qint64. - if (it.key() >= QDataStream::Qt_5_0) - QTest::addRow("(-4714, 11, 24) %s", tag) << QDate(-4714, 11, 24) << it.key(); + if (dataStreamVersion >= QDataStream::Qt_5_0) + QTest::addRow("(-4714, 11, 24) %s", tag) << QDate(-4714, 11, 24) << dataStreamVersion; else - QTest::addRow("(-4713, 1, 2) %s", tag) << QDate(-4713, 1, 2) << it.key(); + QTest::addRow("(-4713, 1, 2) %s", tag) << QDate(-4713, 1, 2) << dataStreamVersion; } } diff --git a/tests/auto/corelib/time/qdatetime/tst_qdatetime.cpp b/tests/auto/corelib/time/qdatetime/tst_qdatetime.cpp index 661f15c22d5..5806a15c634 100644 --- a/tests/auto/corelib/time/qdatetime/tst_qdatetime.cpp +++ b/tests/auto/corelib/time/qdatetime/tst_qdatetime.cpp @@ -2631,18 +2631,20 @@ void tst_QDateTime::operator_insert_extract_data() const QByteArray westernAustralia("AWST-8AWDT-9,M10.5.0,M3.5.0/03:00:00"); const QByteArray hawaii("HAW10"); - const QDataStream tmpDataStream; - const int thisVersion = tmpDataStream.version(); - for (int version = QDataStream::Qt_1_0; version <= thisVersion; ++version) { - const QDataStream::Version dataStreamVersion = static_cast(version); - const QByteArray vN = QByteArray::number(dataStreamVersion); - QTest::addRow("v%d WA => HAWAII %d", version, 2012) + const QMetaEnum e = QMetaEnum::fromType(); + for (int version = QDataStream::Qt_1_0; version <= QDataStream::Qt_DefaultCompiledVersion; + ++version) { + if (e.value(version) == -1 || qstrcmp(e.key(version), "Qt_DefaultCompiledVersion") == 0) + continue; + const auto dataStreamVersion = static_cast(version); + const char *const tag = e.key(version); + QTest::addRow("%s WA => HAWAII %d", tag, 2012) << 2012 << westernAustralia << hawaii << dataStreamVersion; - QTest::addRow("v%d WA => WA %d", version, 2012) + QTest::addRow("%s WA => WA %d", tag, 2012) << 2012 << westernAustralia << westernAustralia << dataStreamVersion; - QTest::addRow("v%d HAWAII => WA %d", version, -2012) + QTest::addRow("%s HAWAII => WA %d", tag, -2012) << -2012 << hawaii << westernAustralia << dataStreamVersion; - QTest::addRow("v%d HAWAII => HAWAII %d", version, 2012) + QTest::addRow("%s HAWAII => HAWAII %d", tag, 2012) << 2012 << hawaii << hawaii << dataStreamVersion; } }