Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package qt6-positioning for openSUSE:Factory 
checked in at 2023-10-02 20:05:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/qt6-positioning (Old)
 and      /work/SRC/openSUSE:Factory/.qt6-positioning.new.28202 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "qt6-positioning"

Mon Oct  2 20:05:38 2023 rev:16 rq:1114502 version:6.5.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/qt6-positioning/qt6-positioning.changes  
2023-07-26 13:23:11.791738667 +0200
+++ 
/work/SRC/openSUSE:Factory/.qt6-positioning.new.28202/qt6-positioning.changes   
    2023-10-02 20:07:31.069073138 +0200
@@ -1,0 +2,6 @@
+Thu Sep 28 07:34:15 UTC 2023 - Christophe Marin <christo...@krop.fr>
+
+- Update to 6.5.3
+  * https://www.qt.io/blog/qt-6.5.3-released
+
+-------------------------------------------------------------------

Old:
----
  qtpositioning-everywhere-src-6.5.2.tar.xz

New:
----
  qtpositioning-everywhere-src-6.5.3.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ qt6-positioning.spec ++++++
--- /var/tmp/diff_new_pack.B5TvjM/_old  2023-10-02 20:07:32.193113562 +0200
+++ /var/tmp/diff_new_pack.B5TvjM/_new  2023-10-02 20:07:32.193113562 +0200
@@ -16,7 +16,7 @@
 #
 
 
-%define real_version 6.5.2
+%define real_version 6.5.3
 %define short_version 6.5
 %define tar_name qtpositioning-everywhere-src
 %define tar_suffix %{nil}
@@ -27,12 +27,12 @@
 %endif
 #
 Name:           qt6-positioning%{?pkg_suffix}
-Version:        6.5.2
+Version:        6.5.3
 Release:        0
 Summary:        Qt 6 Positioning plugins and libraries
 License:        GPL-3.0-or-later
 URL:            https://www.qt.io
-Source:         
https://www.nic.funet.fi/pub/mirrors/download.qt-project.org/official_releases/qt/%{short_version}/%{real_version}%{tar_suffix}/submodules/%{tar_name}-%{real_version}%{tar_suffix}.tar.xz
+Source:         
https://download.qt.io/official_releases/qt/%{short_version}/%{real_version}%{tar_suffix}/submodules/%{tar_name}-%{real_version}%{tar_suffix}.tar.xz
 Source99:       qt6-positioning-rpmlintrc
 BuildRequires:  pkgconfig
 BuildRequires:  qt6-core-private-devel

++++++ qtpositioning-everywhere-src-6.5.2.tar.xz -> 
qtpositioning-everywhere-src-6.5.3.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qtpositioning-everywhere-src-6.5.2/.cmake.conf 
new/qtpositioning-everywhere-src-6.5.3/.cmake.conf
--- old/qtpositioning-everywhere-src-6.5.2/.cmake.conf  2023-07-07 
14:29:35.000000000 +0200
+++ new/qtpositioning-everywhere-src-6.5.3/.cmake.conf  2023-09-24 
11:45:41.000000000 +0200
@@ -1,4 +1,4 @@
-set(QT_REPO_MODULE_VERSION "6.5.2")
+set(QT_REPO_MODULE_VERSION "6.5.3")
 set(QT_REPO_MODULE_PRERELEASE_VERSION_SEGMENT "alpha1")
 
 set(QT_EXTRA_INTERNAL_TARGET_DEFINES "QT_LEAN_HEADERS=1")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qtpositioning-everywhere-src-6.5.2/.tag 
new/qtpositioning-everywhere-src-6.5.3/.tag
--- old/qtpositioning-everywhere-src-6.5.2/.tag 2023-07-07 14:29:35.000000000 
+0200
+++ new/qtpositioning-everywhere-src-6.5.3/.tag 2023-09-24 11:45:41.000000000 
+0200
@@ -1 +1 @@
-716d2d3c8c6d77796cfc0c37a8c8e47fabcc0bac
+e6870f020291ea61d011fc7155816865ec0f02e8
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qtpositioning-everywhere-src-6.5.2/dependencies.yaml 
new/qtpositioning-everywhere-src-6.5.3/dependencies.yaml
--- old/qtpositioning-everywhere-src-6.5.2/dependencies.yaml    2023-07-07 
14:29:35.000000000 +0200
+++ new/qtpositioning-everywhere-src-6.5.3/dependencies.yaml    2023-09-24 
11:45:41.000000000 +0200
@@ -1,10 +1,10 @@
 dependencies:
   ../qtbase:
-    ref: af457a9f0f7eb1a2a7d11f495da508faab91a442
+    ref: 372eaedc5b8c771c46acc4c96e91bbade4ca3624
     required: true
   ../qtdeclarative:
-    ref: f289063ff19588a11dd79213632785cfda2909a0
+    ref: e00c258fa5a4e122636d441967dea035865fac5d
     required: false
   ../qtserialport:
-    ref: b2321a679ed4d702b0551539e416b4bc90fae6c6
+    ref: cdb45cea8cb88c3381d8bd4ca4ceb79c182f7fce
     required: false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtpositioning-everywhere-src-6.5.2/examples/positioning/satelliteinfo/Main.qml
 
new/qtpositioning-everywhere-src-6.5.3/examples/positioning/satelliteinfo/Main.qml
--- 
old/qtpositioning-everywhere-src-6.5.2/examples/positioning/satelliteinfo/Main.qml
  2023-07-07 14:29:35.000000000 +0200
+++ 
new/qtpositioning-everywhere-src-6.5.3/examples/positioning/satelliteinfo/Main.qml
  2023-09-24 11:45:41.000000000 +0200
@@ -84,8 +84,16 @@
         }
     //! [1]
         onSourceErrorChanged: {
-            if (sourceError != SatelliteSource.NoError)
-                positionAndStatus.statusString = qsTr("SatelliteSource Error: 
%1").arg(sourceError)
+            if (sourceError != SatelliteSource.NoError) {
+                // If the positionSource is in simulation mode, switch the
+                // whole app into this mode. Otherwise show an error.
+                if (positionSource.name !== "nmea") {
+                    positionAndStatus.statusString = qsTr("SatelliteSource 
Error: %1").arg(sourceError)
+                } else {
+                    root.simulation = true
+                    active = true
+                }
+            }
         }
     //! [2]
     }
@@ -108,8 +116,16 @@
         }
     // ![4]
         onSourceErrorChanged: {
-            if (sourceError != PositionSource.NoError)
-                positionAndStatus.statusString = qsTr("PositionSource Error: 
%1").arg(sourceError)
+            if (sourceError != PositionSource.NoError) {
+                // If the satelliteSource is in simulation mode, switch the
+                // whole app into this mode. Otherwise show an error.
+                if (satelliteSource.name !== "nmea") {
+                    positionAndStatus.statusString = qsTr("PositionSource 
Error: %1").arg(sourceError)
+                } else {
+                    root.simulation = true
+                    active = true
+                }
+            }
         }
     //! [5]
     }
@@ -212,11 +228,4 @@
             }
         ]
     }
-
-    Component.onCompleted: {
-        if (!satelliteSource.valid || !positionSource.valid) {
-            root.simulation = true
-            root.updateActive(true)
-        }
-    }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtpositioning-everywhere-src-6.5.2/examples/positioning/satelliteinfo/doc/src/satelliteinfo.qdoc
 
new/qtpositioning-everywhere-src-6.5.3/examples/positioning/satelliteinfo/doc/src/satelliteinfo.qdoc
--- 
old/qtpositioning-everywhere-src-6.5.2/examples/positioning/satelliteinfo/doc/src/satelliteinfo.qdoc
        2023-07-07 14:29:35.000000000 +0200
+++ 
new/qtpositioning-everywhere-src-6.5.3/examples/positioning/satelliteinfo/doc/src/satelliteinfo.qdoc
        2023-09-24 11:45:41.000000000 +0200
@@ -71,6 +71,11 @@
     mode uses an \l {Qt Positioning NMEA plugin}{NMEA plugin} with pre-recorded
     NMEA data.
 
+    \note Apple does not provide any APIs to retrieve satellite information, so
+    on \c macOS and \c iOS the satellite information will always be taken from
+    pre-recorded data. These API limitations do not affect positioning
+    information, so current position can be displayed correctly.
+
     \include examples-run.qdocinc
 
     \section1 Retrieving Current Position
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtpositioning-everywhere-src-6.5.2/examples/positioning/weatherinfo/appmodel.cpp
 
new/qtpositioning-everywhere-src-6.5.3/examples/positioning/weatherinfo/appmodel.cpp
--- 
old/qtpositioning-everywhere-src-6.5.2/examples/positioning/weatherinfo/appmodel.cpp
        2023-07-07 14:29:35.000000000 +0200
+++ 
new/qtpositioning-everywhere-src-6.5.3/examples/positioning/weatherinfo/appmodel.cpp
        2023-09-24 11:45:41.000000000 +0200
@@ -248,9 +248,7 @@
         d->src->stopUpdates();
     if (d->fcProp)
         delete d->fcProp;
-    foreach (WeatherData *inf, d->forecast)
-        delete inf;
-    d->forecast.clear();
+    qDeleteAll(d->forecast);
     delete d;
 }
 
@@ -327,8 +325,7 @@
     }
 
     // delete previous forecast
-    foreach (WeatherData *inf, d->forecast)
-        delete inf;
+    qDeleteAll(d->forecast);
     d->forecast.clear();
 
     // The first item in the list represents current weather.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtpositioning-everywhere-src-6.5.2/src/plugins/position/geoclue2/qgeopositioninfosource_geoclue2.cpp
 
new/qtpositioning-everywhere-src-6.5.3/src/plugins/position/geoclue2/qgeopositioninfosource_geoclue2.cpp
--- 
old/qtpositioning-everywhere-src-6.5.2/src/plugins/position/geoclue2/qgeopositioninfosource_geoclue2.cpp
    2023-07-07 14:29:35.000000000 +0200
+++ 
new/qtpositioning-everywhere-src-6.5.3/src/plugins/position/geoclue2/qgeopositioninfosource_geoclue2.cpp
    2023-09-24 11:45:41.000000000 +0200
@@ -266,15 +266,17 @@
     const auto watcher = new QDBusPendingCallWatcher(reply, this);
     connect(watcher, &QDBusPendingCallWatcher::finished,
             [this](QDBusPendingCallWatcher *watcher) {
-        const QScopedPointer<QDBusPendingCallWatcher, 
QScopedPointerDeleteLater>
-                scopedWatcher(watcher);
+        QScopedPointer<QDBusPendingCallWatcher, QScopedPointerDeleteLater> 
scopedWatcher(watcher);
         const QDBusPendingReply<> reply = *scopedWatcher;
         if (reply.isError()) {
             const auto error = reply.error();
             qCCritical(lcPositioningGeoclue2) << "Unable to start the client:"
                                               << error.name() << 
error.message();
-            setError(AccessError);
             delete m_client;
+            scopedWatcher.reset();
+            // This can potentially lead to calling 
~QGeoPositionInfoSourceGeoclue2(),
+            // so do all the cleanup before.
+            setError(AccessError);
         } else {
             qCDebug(lcPositioningGeoclue2) << "Client successfully started";
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtpositioning-everywhere-src-6.5.2/src/positioning/doc/src/qml-position.qdoc
 
new/qtpositioning-everywhere-src-6.5.3/src/positioning/doc/src/qml-position.qdoc
--- 
old/qtpositioning-everywhere-src-6.5.2/src/positioning/doc/src/qml-position.qdoc
    2023-07-07 14:29:35.000000000 +0200
+++ 
new/qtpositioning-everywhere-src-6.5.3/src/positioning/doc/src/qml-position.qdoc
    2023-09-24 11:45:41.000000000 +0200
@@ -5,7 +5,7 @@
 \page location-positioning-qml.html
 
 \title Positioning (QML)
-
+\ingroup explanations-positioning
 \brief The Location Positioning API enables location positioning by means of
 GPS or an NMEA data source.
 
@@ -39,25 +39,27 @@
 
 \section2 Coordinates
 
-The \l {coordinate} is a basic unit of geographical information. The
-\l {coordinate} type has attributes to hold the \c {latitude},
-\c longitude and \c altitude.
+The \l coordinate is a basic unit of geographical information. The
+\l coordinate type has attributes to hold the \c latitude,
+\c longitude and \c altitude. The \l {QtPositioning::}{Location} contains this
+\l coordinate in addition to a physical address and a bounding box.
+\b {See also}: \l {Place::location}{retrieving a location}
 
 \section2 Positions
 
-The three dimensional position of an object such as a mobile device can be 
specified by giving
-the latitude, longitude and altitude.  That is the values held in the
-\l {coordinate} type.  Additionally for computation of future
-positions we would like to know if the object is moving, what \l [QML] 
{Position::}{speed} it is
-doing and what is the \l {Position::timestamp}{timestamp} of the last position 
data.  Position
-therefore includes values for the \l {Position::coordinate}{coordinate},
-\l {Position::speed}{speed} and a \l {Position::timestamp}{timestamp}.  \l 
Position also takes
-responsibility for validation of sensible values for these properties.  These 
are exposed as
-the \l {Position::latitudeValid}{latitudeValid}, \l 
{Position::longitudeValid}{longitudeValid},
-\l {Position::altitudeValid}{altitudeValid}, \l 
{Position::speedValid}{speedValid},
-\l {Position::horizontalAccuracyValid}{horizontalAccuracyValid}, and
-\l {Position::verticalAccuracyValid}{verticalAccuracyValid} properties.
-
+In addition to the \l coordinate type, which holds the three-dimensional
+position of an object, \l Position provides \l {Position::speed}{speed} and a
+\l {Position::timestamp}{timestamp} to compute future positions.
+\l Position validates sensible values for these properties, which are
+exposed as the following properties:
+\list
+    \li \l {Position::latitudeValid}{latitudeValid}
+    \li \l {Position::longitudeValid}{longitudeValid}
+    \li \l {Position::altitudeValid}{altitudeValid}
+    \li \l {Position::speedValid}{speedValid}
+    \li \l {Position::horizontalAccuracyValid}{horizontalAccuracyValid}
+    \li \l {Position::verticalAccuracyValid}{verticalAccuracyValid}
+\endlist
 
 \section2 PositionSource Type
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtpositioning-everywhere-src-6.5.2/src/positioning/doc/src/qtpositioning-examples.qdoc
 
new/qtpositioning-everywhere-src-6.5.3/src/positioning/doc/src/qtpositioning-examples.qdoc
--- 
old/qtpositioning-everywhere-src-6.5.2/src/positioning/doc/src/qtpositioning-examples.qdoc
  2023-07-07 14:29:35.000000000 +0200
+++ 
new/qtpositioning-everywhere-src-6.5.3/src/positioning/doc/src/qtpositioning-examples.qdoc
  2023-09-24 11:45:41.000000000 +0200
@@ -5,7 +5,6 @@
     \group qtpositioning-examples
     \title Qt Positioning Examples
     \brief Examples for the Qt Positioning module
-    \ingroup all-examples
     \ingroup qtpositioning
 
     The list of \l {Qt Positioning} examples demonstrating how to use
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtpositioning-everywhere-src-6.5.2/src/positioning/doc/src/qtpositioning-qml.qdoc
 
new/qtpositioning-everywhere-src-6.5.3/src/positioning/doc/src/qtpositioning-qml.qdoc
--- 
old/qtpositioning-everywhere-src-6.5.2/src/positioning/doc/src/qtpositioning-qml.qdoc
       2023-07-07 14:29:35.000000000 +0200
+++ 
new/qtpositioning-everywhere-src-6.5.3/src/positioning/doc/src/qtpositioning-qml.qdoc
       2023-09-24 11:45:41.000000000 +0200
@@ -7,8 +7,6 @@
     \ingroup qmlmodules
     \brief Provides QML types for position information.
 
-    \section1 Overview
-
     The identifying string for this module is \e QtPositioning. To use the QML
     from this module, include the following import statement in the QML file:
 
@@ -16,29 +14,6 @@
     import QtPositioning \1
     \endqml
 
-    \section2 Positioning QML Concepts
-
-    Position information can come from a variety of sources including
-    satellites, Wi-Fi, text files and so on. The position is described by the
-    latitude, longitude, and the altitude in meters. For more information, see
-    the Wikipedia page on
-    \l {http://en.wikipedia.org/wiki/Geographic_coordinate}
-    {Geographic Coordinates}.
-
-    The QML position is stored in a \l {coordinate} which contains the
-    latitude, longitude and altitude of the device.  The \l {QtPositioning::}
-    {Location} contains this \l {coordinate} and adds an address, and also has
-    a bounding box which defines the recommended viewing region when displaying
-    the location.
-
-    Now that the device has a position, with regular updates the API can
-    determine the speed and heading of the device. It can also define a
-    box-shaped or circular region that triggers notifications when the device
-    either leaves or enters that region.
-
-    More detailed information on retrieving the current position can be found
-    under \l {Positioning (QML)}{Location Positioning via QML}.
-
     \section1 Basic Types
 
     \annotatedlist qml-QtPositioning5-basictypes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtpositioning-everywhere-src-6.5.2/src/positioning/qnmeasatelliteinfosource.cpp
 
new/qtpositioning-everywhere-src-6.5.3/src/positioning/qnmeasatelliteinfosource.cpp
--- 
old/qtpositioning-everywhere-src-6.5.2/src/positioning/qnmeasatelliteinfosource.cpp
 2023-07-07 14:29:35.000000000 +0200
+++ 
new/qtpositioning-everywhere-src-6.5.3/src/positioning/qnmeasatelliteinfosource.cpp
 2023-09-24 11:45:41.000000000 +0200
@@ -875,7 +875,7 @@
         // messages, so we will try not to get stuck here infinitely.
         int numSatInUseMsgs = 0;
         int numSatInViewMsgs = 0;
-        while (!numSatInUseMsgs || !numSatInViewMsgs) {
+        while (!m_proxy->m_device->atEnd() && (!numSatInUseMsgs || 
!numSatInViewMsgs)) {
             m_proxy->processNmeaData(m_proxy->m_pendingUpdate);
             if (m_proxy->m_pendingUpdate.m_validInUse)
                 numSatInUseMsgs++;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtpositioning-everywhere-src-6.5.2/src/positioningquick/qdeclarativesatellitesource.cpp
 
new/qtpositioning-everywhere-src-6.5.3/src/positioningquick/qdeclarativesatellitesource.cpp
--- 
old/qtpositioning-everywhere-src-6.5.2/src/positioningquick/qdeclarativesatellitesource.cpp
 2023-07-07 14:29:35.000000000 +0200
+++ 
new/qtpositioning-everywhere-src-6.5.3/src/positioningquick/qdeclarativesatellitesource.cpp
 2023-09-24 11:45:41.000000000 +0200
@@ -483,13 +483,12 @@
 void QDeclarativeSatelliteSource::executeStart()
 {
     if (m_source) {
-        m_source->startUpdates();
         m_regularUpdates = true;
-
         if (!m_active) {
             m_active = true;
             emit activeChanged();
         }
+        m_source->startUpdates();
     }
 }
 
@@ -497,11 +496,11 @@
 {
     if (m_source) {
         m_singleUpdate = true;
-        m_source->requestUpdate(timeout);
         if (!m_active) {
             m_active = true;
             emit activeChanged();
         }
+        m_source->requestUpdate(timeout);
     }
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtpositioning-everywhere-src-6.5.2/src/positioningquick/qpositioningquickmodule_p.h
 
new/qtpositioning-everywhere-src-6.5.3/src/positioningquick/qpositioningquickmodule_p.h
--- 
old/qtpositioning-everywhere-src-6.5.2/src/positioningquick/qpositioningquickmodule_p.h
     2023-07-07 14:29:35.000000000 +0200
+++ 
new/qtpositioning-everywhere-src-6.5.3/src/positioningquick/qpositioningquickmodule_p.h
     2023-09-24 11:45:41.000000000 +0200
@@ -128,11 +128,19 @@
     QML_ADDED_IN_VERSION(6, 5)
 };
 
+// To prevent the same QGeoSatelliteInfo type from being exported into qmltypes
+// twice for a value type and the enums. See QTBUG-115361.
+class QGeoSatelliteInfoDerived : public QGeoSatelliteInfo
+{
+    Q_GADGET
+};
+
 namespace QGeoSatelliteInfoForeignNamespace
 {
     Q_NAMESPACE
-    QML_FOREIGN_NAMESPACE(QGeoSatelliteInfo)
+    QML_FOREIGN_NAMESPACE(QGeoSatelliteInfoDerived)
     QML_NAMED_ELEMENT(GeoSatelliteInfo)
+    QML_ADDED_IN_VERSION(6, 5)
 }
 
 QT_END_NAMESPACE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtpositioning-everywhere-src-6.5.2/tests/auto/qgeoareamonitor/tst_qgeoareamonitor.cpp
 
new/qtpositioning-everywhere-src-6.5.3/tests/auto/qgeoareamonitor/tst_qgeoareamonitor.cpp
--- 
old/qtpositioning-everywhere-src-6.5.2/tests/auto/qgeoareamonitor/tst_qgeoareamonitor.cpp
   2023-07-07 14:29:35.000000000 +0200
+++ 
new/qtpositioning-everywhere-src-6.5.3/tests/auto/qgeoareamonitor/tst_qgeoareamonitor.cpp
   2023-09-24 11:45:41.000000000 +0200
@@ -25,6 +25,8 @@
 #include "logfilepositionsource.h"
 #include "positionconsumerthread.h"
 
+#include <algorithm>
+
 QT_USE_NAMESPACE
 #define UPDATE_INTERVAL 50
 
@@ -455,32 +457,19 @@
         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);
-        }
-
-        results = obj->activeMonitors(QGeoCircle(QGeoCoordinate(2,1),1000));
-        QCOMPARE(results.size(), 1);
-        foreach (const QGeoAreaMonitorInfo& info, results) {
-            QVERIFY(info == mon3);
-        }
+#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)
+
+        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 @@
         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);
-        }
-
-        results = 
secondObj->activeMonitors(QGeoCircle(QGeoCoordinate(1,1),1000));
-        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(2,1),1000));
-        QCOMPARE(results.size(), 1);
-        foreach (const QGeoAreaMonitorInfo& info, results) {
-            QVERIFY(info == mon3);
-        }
+#undef CHECK
     }
 
     void tst_testExpiryTimeout()

Reply via email to