From 81dcb7c8be963faece04dc8a674fdd89c34b7d92 Mon Sep 17 00:00:00 2001 From: Ivan Solovev Date: Fri, 1 Mar 2024 18:38:11 +0100 Subject: [PATCH] QTypeRevision: convert comparison test to data-driven MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This patch simplifies the checks when migrating the class to comparison helper macros. Task-number: QTBUG-120359 Change-Id: I47a6ba20d3b89c31edc2f432621eae9385fbd0a3 Reviewed-by: Thiago Macieira Reviewed-by: MÃ¥rten Nordheim --- .../tools/qtyperevision/tst_qtyperevision.cpp | 47 +++++++++++++++---- 1 file changed, 39 insertions(+), 8 deletions(-) diff --git a/tests/auto/corelib/tools/qtyperevision/tst_qtyperevision.cpp b/tests/auto/corelib/tools/qtyperevision/tst_qtyperevision.cpp index 0ba9fabcdfe..7fc4754a648 100644 --- a/tests/auto/corelib/tools/qtyperevision/tst_qtyperevision.cpp +++ b/tests/auto/corelib/tools/qtyperevision/tst_qtyperevision.cpp @@ -5,6 +5,8 @@ #include #include +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("lhs"); + QTest::addColumn("rhs"); + QTest::addColumn("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"