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 <QtCore/qtyperevision.h>
using namespace Qt::StringLiterals;
class tst_QTypeRevision : public QObject
{
Q_OBJECT
@ -13,6 +15,7 @@ private slots:
void qTypeRevision_data();
void qTypeRevision();
void qTypeRevisionTypes();
void qTypeRevisionComparison_data();
void qTypeRevisionComparison();
};
@ -128,8 +131,21 @@ void tst_QTypeRevision::qTypeRevisionTypes()
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[] = {
QTypeRevision::zero(),
QTypeRevision::fromMajorVersion(0),
@ -150,19 +166,34 @@ void tst_QTypeRevision::qTypeRevisionComparison()
};
const int length = sizeof(revisions) / sizeof(QTypeRevision);
for (int i = 0; i < length; ++i) {
for (int j = 0; j < length; ++j) {
QCOMPARE(revisions[i] == revisions[j], i == j);
QCOMPARE(revisions[i] != revisions[j], i != j);
QCOMPARE(revisions[i] < revisions[j], i < j);
QCOMPARE(revisions[i] > revisions[j], i > j);
QCOMPARE(revisions[i] <= revisions[j], i <= j);
QCOMPARE(revisions[i] >= revisions[j], i >= j);
const int expectedRes = (i == j)
? 0
: (i < j) ? -1 : 1;
const auto lhs = revisions[i];
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)
#include "tst_qtyperevision.moc"