QTypeRevision: convert comparison test to data-driven

This patch simplifies the checks when migrating the class to comparison
helper macros.

Task-number: QTBUG-120359
Change-Id: I47a6ba20d3b89c31edc2f432621eae9385fbd0a3
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
This commit is contained in:
Ivan Solovev 2024-03-01 18:38:11 +01:00
parent b57a9a3cd9
commit 81dcb7c8be

View File

@ -5,6 +5,8 @@
#include <QTest> #include <QTest>
#include <QtCore/qtyperevision.h> #include <QtCore/qtyperevision.h>
using namespace Qt::StringLiterals;
class tst_QTypeRevision : public QObject class tst_QTypeRevision : public QObject
{ {
Q_OBJECT Q_OBJECT
@ -13,6 +15,7 @@ private slots:
void qTypeRevision_data(); void qTypeRevision_data();
void qTypeRevision(); void qTypeRevision();
void qTypeRevisionTypes(); void qTypeRevisionTypes();
void qTypeRevisionComparison_data();
void qTypeRevisionComparison(); void qTypeRevisionComparison();
}; };
@ -128,8 +131,21 @@ void tst_QTypeRevision::qTypeRevisionTypes()
QVERIFY(maxRevision.hasMinorVersion()); QVERIFY(maxRevision.hasMinorVersion());
} }
void tst_QTypeRevision::qTypeRevisionComparison() void tst_QTypeRevision::qTypeRevisionComparison_data()
{ {
QTest::addColumn<QTypeRevision>("lhs");
QTest::addColumn<QTypeRevision>("rhs");
QTest::addColumn<int>("expectedResult");
static auto versionStr = [](QTypeRevision r) {
QByteArray res = r.hasMajorVersion() ? QByteArray::number(r.majorVersion())
: "x"_ba;
res.append('.');
res.append(r.hasMinorVersion() ? QByteArray::number(r.minorVersion())
: "x"_ba);
return res;
};
const QTypeRevision revisions[] = { const QTypeRevision revisions[] = {
QTypeRevision::zero(), QTypeRevision::zero(),
QTypeRevision::fromMajorVersion(0), QTypeRevision::fromMajorVersion(0),
@ -150,19 +166,34 @@ void tst_QTypeRevision::qTypeRevisionComparison()
}; };
const int length = sizeof(revisions) / sizeof(QTypeRevision); const int length = sizeof(revisions) / sizeof(QTypeRevision);
for (int i = 0; i < length; ++i) { for (int i = 0; i < length; ++i) {
for (int j = 0; j < length; ++j) { for (int j = 0; j < length; ++j) {
QCOMPARE(revisions[i] == revisions[j], i == j); const int expectedRes = (i == j)
QCOMPARE(revisions[i] != revisions[j], i != j); ? 0
QCOMPARE(revisions[i] < revisions[j], i < j); : (i < j) ? -1 : 1;
QCOMPARE(revisions[i] > revisions[j], i > j);
QCOMPARE(revisions[i] <= revisions[j], i <= j); const auto lhs = revisions[i];
QCOMPARE(revisions[i] >= revisions[j], i >= j); const auto rhs = revisions[j];
QTest::addRow("%s_vs_%s", versionStr(lhs).constData(), versionStr(rhs).constData())
<< lhs << rhs << expectedRes;
} }
} }
} }
void tst_QTypeRevision::qTypeRevisionComparison()
{
QFETCH(const QTypeRevision, lhs);
QFETCH(const QTypeRevision, rhs);
QFETCH(const int, expectedResult);
QCOMPARE(lhs == rhs, expectedResult == 0);
QCOMPARE(lhs != rhs, expectedResult != 0);
QCOMPARE(lhs < rhs, expectedResult < 0);
QCOMPARE(lhs > rhs, expectedResult > 0);
QCOMPARE(lhs <= rhs, expectedResult <= 0);
QCOMPARE(lhs >= rhs, expectedResult >= 0);
}
QTEST_APPLESS_MAIN(tst_QTypeRevision) QTEST_APPLESS_MAIN(tst_QTypeRevision)
#include "tst_qtyperevision.moc" #include "tst_qtyperevision.moc"