summaryrefslogtreecommitdiffstats
path: root/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2020-07-10 11:41:33 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2020-07-21 22:01:20 +0200
commitd25589e0529732996e405aaff8d6c46b012e1601 (patch)
tree29b596d0c2ca0e36aa9aea65f426ed393c660e78 /tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp
parentb50daef9771d8829fc7f808898cbe051a5464b79 (diff)
QTestlib: Enable comparing QList against initializer lists/arrays
It is unnecessary to create a QList container just for comparison. Split out helpers for comparing sequence sizes and sequences from qCompare(QList) and add a template for an array with a non-type template parameter for the size. One can then write something like: const int expected[] = {10, 12,...}; QCOMPARE(QFontDatabase.pointSizes(...), expected) Unfortunately, any commas in such an array will be misread by macro expansion as macro argument separators, so any expected array with more than one entry needs an extra macro expanding __VA_ARGS__. Change-Id: Ie7c8dc20bf669bbb25f6d7f8562455f8d03968c8 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Diffstat (limited to 'tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp')
-rw-r--r--tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp48
1 files changed, 45 insertions, 3 deletions
diff --git a/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp b/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp
index ff6375292f..fca49c9e07 100644
--- a/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp
+++ b/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp
@@ -141,7 +141,12 @@ private slots:
void compare_tostring_data();
void compareQStringLists();
void compareQStringLists_data();
+ void compareQListInt_data();
void compareQListInt();
+ void compareQListIntToArray_data();
+ void compareQListIntToArray();
+ void compareQListIntToInitializerList_data();
+ void compareQListIntToInitializerList();
void compareQListDouble();
#ifdef QT_GUI_LIB
void compareQColor_data();
@@ -425,11 +430,48 @@ void tst_Cmptest::compareQStringLists()
QCOMPARE(opA, opB);
}
+using IntList = QList<int>;
+
+void tst_Cmptest::compareQListInt_data()
+{
+ QTest::addColumn<IntList>("actual");
+
+ QTest::newRow("match") << IntList{1, 2, 3};
+ QTest::newRow("size mismatch") << IntList{1, 2};
+ QTest::newRow("value mismatch") << IntList{1, 2, 4};
+}
+
void tst_Cmptest::compareQListInt()
{
- QList<int> int1; int1 << 1 << 2 << 3;
- QList<int> int2; int2 << 1 << 2 << 4;
- QCOMPARE(int1, int2);
+ QFETCH(IntList, actual);
+ const QList<int> expected{1, 2, 3};
+ QCOMPARE(actual, expected);
+}
+
+void tst_Cmptest::compareQListIntToArray_data()
+{
+ compareQListInt_data();
+}
+
+void tst_Cmptest::compareQListIntToArray()
+{
+ QFETCH(IntList, actual);
+ const int expected[] = {1, 2, 3};
+ QCOMPARE(actual, expected);
+}
+
+void tst_Cmptest::compareQListIntToInitializerList_data()
+{
+ compareQListInt_data();
+}
+
+void tst_Cmptest::compareQListIntToInitializerList()
+{
+ QFETCH(IntList, actual);
+ // Protect ',' in the list
+#define ARG(...) __VA_ARGS__
+ QCOMPARE(actual, ARG({1, 2, 3}));
+#undef ARG
}
void tst_Cmptest::compareQListDouble()