diff options
author | Marc Mutz <marc.mutz@qt.io> | 2023-08-04 12:12:46 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2023-08-08 10:41:23 +0000 |
commit | 45e363306190cb645a82c22f15ec473753db3c0b (patch) | |
tree | 0d3bf95686447e6f9168b1a956313c63f1903989 | |
parent | 38155b3a1dcdbe18c5ebb8240674fe1235d1e337 (diff) |
tst_QGeoAreaMonitor: DRY tst_activeMonitors() a bit
Replace Q_FOREACH loop with std::is_permutation (C++14's four-arg
version so MSVC doesn't complain, even though we keep the explicit
size() QCOMPARE()) and wrap the four-line repeated block in a nice
CHECK() macro.
Now it's much easier to see what's going on and we have eradicated
some Q_FOREACH loops on the way, too.
Change-Id: I82bc091fe90780d279590593c3441bc3caa39194
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
(cherry picked from commit 555198a6a9c9fd772ed01c6975346052799325d4)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | tests/auto/qgeoareamonitor/tst_qgeoareamonitor.cpp | 70 |
1 files changed, 20 insertions, 50 deletions
diff --git a/tests/auto/qgeoareamonitor/tst_qgeoareamonitor.cpp b/tests/auto/qgeoareamonitor/tst_qgeoareamonitor.cpp index 8e013ac8..4a1cb319 100644 --- a/tests/auto/qgeoareamonitor/tst_qgeoareamonitor.cpp +++ b/tests/auto/qgeoareamonitor/tst_qgeoareamonitor.cpp @@ -25,6 +25,8 @@ #include "logfilepositionsource.h" #include "positionconsumerthread.h" +#include <algorithm> + QT_USE_NAMESPACE #define UPDATE_INTERVAL 50 @@ -455,32 +457,19 @@ private slots: mon3.setArea(r_above); QVERIFY(obj->startMonitoring(mon3)); - QList<QGeoAreaMonitorInfo> results = obj->activeMonitors(); - QCOMPARE(results.size(), 3); - foreach (const QGeoAreaMonitorInfo& info, results) { - QVERIFY(info == mon || info == mon2 || info == mon3); - } - - results = obj->activeMonitors(QGeoShape()); - QCOMPARE(results.size(), 0); - - results = obj->activeMonitors(QGeoRectangle(QGeoCoordinate(1,1),0.2, 0.2)); - QCOMPARE(results.size(), 2); - foreach (const QGeoAreaMonitorInfo& info, results) { - QVERIFY(info == mon || info == mon2); - } - - results = obj->activeMonitors(QGeoCircle(QGeoCoordinate(1,1),1000)); - QCOMPARE(results.size(), 2); - foreach (const QGeoAreaMonitorInfo& info, results) { - QVERIFY(info == mon || info == mon2); - } +#define CHECK(o, args, ...) do { \ + const QList<QGeoAreaMonitorInfo> results = o ->activeMonitors args; \ + const std::initializer_list<QGeoAreaMonitorInfo> expected = __VA_ARGS__ ; \ + QCOMPARE(results.size(), int(expected.size())); \ + QVERIFY(std::is_permutation(results.begin(), results.end(), \ + expected.begin(), expected.end())); \ + } while (false) - results = obj->activeMonitors(QGeoCircle(QGeoCoordinate(2,1),1000)); - QCOMPARE(results.size(), 1); - foreach (const QGeoAreaMonitorInfo& info, results) { - QVERIFY(info == mon3); - } + CHECK(obj, (), {mon, mon2, mon3}); + CHECK(obj, (QGeoShape{}), {}); + CHECK(obj, (QGeoRectangle{QGeoCoordinate{1, 1}, 0.2, 0.2}), {mon, mon2}); + CHECK(obj, (QGeoCircle{QGeoCoordinate{1, 1}, 1000}), {mon, mon2}); + CHECK(obj, (QGeoCircle{QGeoCoordinate{2, 1},1000}), {mon3}); //same as above except that we use a different monitor source object instance //all monitor objects of same type share same active monitors @@ -489,32 +478,13 @@ private slots: QVERIFY(secondObj != nullptr); QCOMPARE(secondObj->sourceName(), QStringLiteral("positionpoll")); - results = secondObj->activeMonitors(); - QCOMPARE(results.size(), 3); - foreach (const QGeoAreaMonitorInfo& info, results) { - QVERIFY(info == mon || info == mon2 || info == mon3); - } - - results = secondObj->activeMonitors(QGeoShape()); - QCOMPARE(results.size(), 0); - - results = secondObj->activeMonitors(QGeoRectangle(QGeoCoordinate(1,1),0.2, 0.2)); - QCOMPARE(results.size(), 2); - foreach (const QGeoAreaMonitorInfo& info, results) { - QVERIFY(info == mon || info == mon2); - } + CHECK(secondObj, (), {mon, mon2, mon3}); + CHECK(secondObj, (QGeoShape{}), {}); + CHECK(secondObj, (QGeoRectangle{QGeoCoordinate{1, 1}, 0.2, 0.2}), {mon, mon2}); + CHECK(secondObj, (QGeoCircle{QGeoCoordinate{1, 1}, 1000}), {mon, mon2}); + CHECK(secondObj, (QGeoCircle{QGeoCoordinate{2, 1}, 1000}), {mon3}); - results = secondObj->activeMonitors(QGeoCircle(QGeoCoordinate(1,1),1000)); - QCOMPARE(results.size(), 2); - foreach (const QGeoAreaMonitorInfo& info, results) { - QVERIFY(info == mon || info == mon2); - } - - results = secondObj->activeMonitors(QGeoCircle(QGeoCoordinate(2,1),1000)); - QCOMPARE(results.size(), 1); - foreach (const QGeoAreaMonitorInfo& info, results) { - QVERIFY(info == mon3); - } +#undef CHECK } void tst_testExpiryTimeout() |