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
|
#ifndef QDATASTREAM_H
|
||||||
#define QDATASTREAM_H
|
#define QDATASTREAM_H
|
||||||
|
|
||||||
|
#include <QtCore/qobjectdefs.h>
|
||||||
#include <QtCore/qchar.h>
|
#include <QtCore/qchar.h>
|
||||||
#include <QtCore/qcontainerfwd.h>
|
#include <QtCore/qcontainerfwd.h>
|
||||||
#include <QtCore/qiodevicebase.h>
|
#include <QtCore/qiodevicebase.h>
|
||||||
@ -46,6 +47,8 @@ QDataStream &writeAssociativeMultiContainer(QDataStream &s, const Container &c);
|
|||||||
}
|
}
|
||||||
class Q_CORE_EXPORT QDataStream : public QIODeviceBase
|
class Q_CORE_EXPORT QDataStream : public QIODeviceBase
|
||||||
{
|
{
|
||||||
|
Q_GADGET
|
||||||
|
|
||||||
public:
|
public:
|
||||||
enum Version QT7_ONLY(: quint8) {
|
enum Version QT7_ONLY(: quint8) {
|
||||||
Qt_1_0 = 1,
|
Qt_1_0 = 1,
|
||||||
@ -97,6 +100,7 @@ public:
|
|||||||
#error Add the datastream version for this Qt version and update Qt_DefaultCompiledVersion
|
#error Add the datastream version for this Qt version and update Qt_DefaultCompiledVersion
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
Q_ENUM(Version)
|
||||||
|
|
||||||
enum ByteOrder {
|
enum ByteOrder {
|
||||||
BigEndian = QSysInfo::BigEndian,
|
BigEndian = QSysInfo::BigEndian,
|
||||||
|
@ -1161,38 +1161,23 @@ void tst_QDate::operator_insert_extract_data()
|
|||||||
QTest::addColumn<QDate>("date");
|
QTest::addColumn<QDate>("date");
|
||||||
QTest::addColumn<QDataStream::Version>("dataStreamVersion");
|
QTest::addColumn<QDataStream::Version>("dataStreamVersion");
|
||||||
|
|
||||||
QMap<QDataStream::Version, QByteArray> versionsToTest;
|
const QMetaEnum e = QMetaEnum::fromType<QDataStream::Version>();
|
||||||
versionsToTest.insert(QDataStream::Qt_1_0, "Qt_1_0"_ba);
|
for (int version = QDataStream::Qt_1_0; version <= QDataStream::Qt_DefaultCompiledVersion;
|
||||||
versionsToTest.insert(QDataStream::Qt_2_0, "Qt_2_0"_ba);
|
++version) {
|
||||||
versionsToTest.insert(QDataStream::Qt_2_1, "Qt_2_1"_ba);
|
if (e.value(version) == -1 || qstrcmp(e.key(version), "Qt_DefaultCompiledVersion") == 0)
|
||||||
versionsToTest.insert(QDataStream::Qt_3_0, "Qt_3_0"_ba);
|
continue;
|
||||||
versionsToTest.insert(QDataStream::Qt_3_1, "Qt_3_1"_ba);
|
const auto dataStreamVersion = static_cast<QDataStream::Version>(version);
|
||||||
versionsToTest.insert(QDataStream::Qt_3_3, "Qt_3_3"_ba);
|
const char *const tag = e.key(version);
|
||||||
versionsToTest.insert(QDataStream::Qt_4_0, "Qt_4_0"_ba);
|
QTest::addRow("(invalid) %s", tag) << invalidDate() << dataStreamVersion;
|
||||||
versionsToTest.insert(QDataStream::Qt_4_1, "Qt_4_1"_ba);
|
QTest::addRow("(1, 1, 1) %s", tag) << QDate(1, 1, 1) << dataStreamVersion;
|
||||||
versionsToTest.insert(QDataStream::Qt_4_2, "Qt_4_2"_ba);
|
QTest::addRow("(-1, 1, 1) %s", tag) << QDate(-1, 1, 1) << dataStreamVersion;
|
||||||
versionsToTest.insert(QDataStream::Qt_4_3, "Qt_4_3"_ba);
|
QTest::addRow("(1995, 5, 20) %s", tag) << QDate(1995, 5, 20) << dataStreamVersion;
|
||||||
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();
|
|
||||||
|
|
||||||
// Test minimums for quint32/qint64.
|
// Test minimums for quint32/qint64.
|
||||||
if (it.key() >= QDataStream::Qt_5_0)
|
if (dataStreamVersion >= QDataStream::Qt_5_0)
|
||||||
QTest::addRow("(-4714, 11, 24) %s", tag) << QDate(-4714, 11, 24) << it.key();
|
QTest::addRow("(-4714, 11, 24) %s", tag) << QDate(-4714, 11, 24) << dataStreamVersion;
|
||||||
else
|
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 westernAustralia("AWST-8AWDT-9,M10.5.0,M3.5.0/03:00:00");
|
||||||
const QByteArray hawaii("HAW10");
|
const QByteArray hawaii("HAW10");
|
||||||
|
|
||||||
const QDataStream tmpDataStream;
|
const QMetaEnum e = QMetaEnum::fromType<QDataStream::Version>();
|
||||||
const int thisVersion = tmpDataStream.version();
|
for (int version = QDataStream::Qt_1_0; version <= QDataStream::Qt_DefaultCompiledVersion;
|
||||||
for (int version = QDataStream::Qt_1_0; version <= thisVersion; ++version) {
|
++version) {
|
||||||
const QDataStream::Version dataStreamVersion = static_cast<QDataStream::Version>(version);
|
if (e.value(version) == -1 || qstrcmp(e.key(version), "Qt_DefaultCompiledVersion") == 0)
|
||||||
const QByteArray vN = QByteArray::number(dataStreamVersion);
|
continue;
|
||||||
QTest::addRow("v%d WA => HAWAII %d", version, 2012)
|
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;
|
<< 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;
|
<< 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;
|
<< -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;
|
<< 2012 << hawaii << hawaii << dataStreamVersion;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user