Rework tst_QDate{,Time} QDataStream test to include all versions
In tst_QDate the test previously had a hard-coded list of versions by name. This, however, needed updates on each new release (or at least new version of QDS), which have been neglected since Qt 5.0. The tst_QDateTime version, meanwhile, only identified versions by their numeric value, not their symbolic names. So borrow the way tst_QCalendar enumerates QCalendar::System, making QDataStream a Q_GADGET and its Version a Q_ENUM to support this, to iterate over all versions algorithmically. Apply to both data stream tests to get a more consistent form for their data tags. Change-Id: I04d1060cfec822cfcdc0bce6d15b636fc165fe36 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
parent
3905d3c4df
commit
dd5f409c58
@ -4,6 +4,7 @@
|
||||
#ifndef QDATASTREAM_H
|
||||
#define QDATASTREAM_H
|
||||
|
||||
#include <QtCore/qobjectdefs.h>
|
||||
#include <QtCore/qchar.h>
|
||||
#include <QtCore/qcontainerfwd.h>
|
||||
#include <QtCore/qiodevicebase.h>
|
||||
@ -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,
|
||||
|
@ -1161,38 +1161,23 @@ void tst_QDate::operator_insert_extract_data()
|
||||
QTest::addColumn<QDate>("date");
|
||||
QTest::addColumn<QDataStream::Version>("dataStreamVersion");
|
||||
|
||||
QMap<QDataStream::Version, QByteArray> 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<QDataStream::Version>();
|
||||
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<QDataStream::Version>(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;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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<QDataStream::Version>(version);
|
||||
const QByteArray vN = QByteArray::number(dataStreamVersion);
|
||||
QTest::addRow("v%d WA => HAWAII %d", version, 2012)
|
||||
const QMetaEnum e = QMetaEnum::fromType<QDataStream::Version>();
|
||||
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<QDataStream::Version>(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;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user