summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@qt.io>2023-08-04 12:12:46 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2023-08-08 10:41:23 +0000
commit45e363306190cb645a82c22f15ec473753db3c0b (patch)
tree0d3bf95686447e6f9168b1a956313c63f1903989
parent38155b3a1dcdbe18c5ebb8240674fe1235d1e337 (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.cpp70
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()