summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorIvan Solovev <ivan.solovev@qt.io>2021-02-08 14:09:27 +0100
committerIvan Solovev <ivan.solovev@qt.io>2021-02-12 10:47:02 +0100
commit4ca9fd760f1511e00301a8f13c10108fe83823e7 (patch)
treeb0a7cac08a3e88df5c865e1f44ebcc57bbf51a80 /tests
parent67f840a23295ad5d202005fc4913857d2da3edf5 (diff)
downloadqtlocation-4ca9fd760f1511e00301a8f13c10108fe83823e7.tar.gz
QtPositioning: move QNmeaSatelliteInfoSource to the library
- Move files from plugin to the library. - Add virtual methods, so that NMEA parsing can be overridden. - Add and update unit tests Task-number: QTBUG-90491 Change-Id: Ia2deb27c97c1552cd96832a47fe944bdc7638a07 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/CMakeLists.txt1
-rw-r--r--tests/auto/qgeosatelliteinfosource/testqgeosatelliteinfosource.cpp6
-rw-r--r--tests/auto/qnmeapositioninfosource/dummynmeapositioninfosource/CMakeLists.txt2
-rw-r--r--tests/auto/qnmeapositioninfosource/dummynmeapositioninfosource/dummynmeapositioninfosource.pro4
-rw-r--r--tests/auto/qnmeapositioninfosource/dummynmeapositioninfosource/tst_dummynmeapositioninfosource.cpp7
-rw-r--r--tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_realtime/CMakeLists.txt2
-rw-r--r--tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_realtime/qnmeapositioninfosource_realtime.pro4
-rw-r--r--tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_realtime_generic/CMakeLists.txt2
-rw-r--r--tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_realtime_generic/qnmeapositioninfosource_realtime_generic.pro4
-rw-r--r--tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_realtime_generic/tst_qnmeapositioninfosource_realtime_generic.cpp7
-rw-r--r--tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_simulation/CMakeLists.txt2
-rw-r--r--tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_simulation/qnmeapositioninfosource_simulation.pro4
-rw-r--r--tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_simulation_generic/CMakeLists.txt2
-rw-r--r--tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_simulation_generic/qnmeapositioninfosource_simulation_generic.pro4
-rw-r--r--tests/auto/qnmeapositioninfosource/tst_qnmeapositioninfosource.cpp50
-rw-r--r--tests/auto/qnmeapositioninfosource/tst_qnmeapositioninfosource.h2
-rw-r--r--tests/auto/qnmeasatelliteinfosource/CMakeLists.txt2
-rw-r--r--tests/auto/qnmeasatelliteinfosource/dummy/CMakeLists.txt16
-rw-r--r--tests/auto/qnmeasatelliteinfosource/dummy/tst_dummynmeasatelliteinfosource.cpp167
-rw-r--r--tests/auto/qnmeasatelliteinfosource/generic/CMakeLists.txt17
-rw-r--r--tests/auto/qnmeasatelliteinfosource/generic/tst_nmeasatelliteinfosourcegeneric.cpp92
-rw-r--r--tests/auto/utils/qlocationtestutils.cpp16
-rw-r--r--tests/auto/utils/qlocationtestutils_p.h3
-rw-r--r--tests/auto/utils/qnmeaproxyfactory.cpp (renamed from tests/auto/qnmeapositioninfosource/qnmeapositioninfosourceproxyfactory.cpp)75
-rw-r--r--tests/auto/utils/qnmeaproxyfactory.h (renamed from tests/auto/qnmeapositioninfosource/qnmeapositioninfosourceproxyfactory.h)35
25 files changed, 454 insertions, 72 deletions
diff --git a/tests/auto/CMakeLists.txt b/tests/auto/CMakeLists.txt
index 10bac2f9..469781af 100644
--- a/tests/auto/CMakeLists.txt
+++ b/tests/auto/CMakeLists.txt
@@ -83,4 +83,5 @@ if(NOT ANDROID)
add_subdirectory(qgeopositioninfosource)
add_subdirectory(qgeosatelliteinfosource)
add_subdirectory(qnmeapositioninfosource)
+ add_subdirectory(qnmeasatelliteinfosource)
endif()
diff --git a/tests/auto/qgeosatelliteinfosource/testqgeosatelliteinfosource.cpp b/tests/auto/qgeosatelliteinfosource/testqgeosatelliteinfosource.cpp
index 905b74a4..f663225c 100644
--- a/tests/auto/qgeosatelliteinfosource/testqgeosatelliteinfosource.cpp
+++ b/tests/auto/qgeosatelliteinfosource/testqgeosatelliteinfosource.cpp
@@ -450,7 +450,7 @@ void TestQGeoSatelliteInfoSource::requestUpdate()
// make sure that it's the UpdateTimeoutError
const auto error = errorSpy[0][0].value<QGeoSatelliteInfoSource::Error>();
QCOMPARE(error, QGeoSatelliteInfoSource::UpdateTimeoutError);
- errorSpy.clear();
+ // errorSpy.clear(); // no need to clear the error, as we are expecting it
}
// Geoclue may deliver update instantly if there is a satellite fix
@@ -603,7 +603,7 @@ void TestQGeoSatelliteInfoSource::requestUpdateAfterStartUpdates_ZeroInterval()
if (!errorSpy.isEmpty())
QSKIP("Error starting satellite updates.");
- QTRY_VERIFY_WITH_TIMEOUT((spyView.count() == 1) && (spyUse.count() == 1), MAX_WAITING_TIME);
+ QTRY_VERIFY_WITH_TIMEOUT((spyView.count() >= 1) && (spyUse.count() >= 1), MAX_WAITING_TIME);
spyView.clear();
spyUse.clear();
@@ -615,7 +615,7 @@ void TestQGeoSatelliteInfoSource::requestUpdateAfterStartUpdates_ZeroInterval()
spyView.clear();
spyUse.clear();
- QTRY_VERIFY_WITH_TIMEOUT((spyView.count() == 1) && (spyUse.count() == 1), 12000);
+ QTRY_VERIFY_WITH_TIMEOUT((spyView.count() >= 1) && (spyUse.count() >= 1), 12000);
m_source->stopUpdates();
}
diff --git a/tests/auto/qnmeapositioninfosource/dummynmeapositioninfosource/CMakeLists.txt b/tests/auto/qnmeapositioninfosource/dummynmeapositioninfosource/CMakeLists.txt
index a3ad87fd..32a57770 100644
--- a/tests/auto/qnmeapositioninfosource/dummynmeapositioninfosource/CMakeLists.txt
+++ b/tests/auto/qnmeapositioninfosource/dummynmeapositioninfosource/CMakeLists.txt
@@ -8,7 +8,7 @@ qt_internal_add_test(tst_dummynmeapositioninfosource
SOURCES
../../qgeopositioninfosource/testqgeopositioninfosource.cpp ../../qgeopositioninfosource/testqgeopositioninfosource_p.h
../../utils/qlocationtestutils.cpp ../../utils/qlocationtestutils_p.h
- ../qnmeapositioninfosourceproxyfactory.cpp ../qnmeapositioninfosourceproxyfactory.h
+ ../../utils/qnmeaproxyfactory.cpp ../../utils/qnmeaproxyfactory.h
tst_dummynmeapositioninfosource.cpp
DEFINES
QT_DISABLE_DEPRECATED_BEFORE=0
diff --git a/tests/auto/qnmeapositioninfosource/dummynmeapositioninfosource/dummynmeapositioninfosource.pro b/tests/auto/qnmeapositioninfosource/dummynmeapositioninfosource/dummynmeapositioninfosource.pro
index a0bfa1ff..d32e2e31 100644
--- a/tests/auto/qnmeapositioninfosource/dummynmeapositioninfosource/dummynmeapositioninfosource.pro
+++ b/tests/auto/qnmeapositioninfosource/dummynmeapositioninfosource/dummynmeapositioninfosource.pro
@@ -7,11 +7,11 @@ INCLUDEPATH += ..
HEADERS += ../../utils/qlocationtestutils_p.h \
../../qgeopositioninfosource/testqgeopositioninfosource_p.h \
- ../qnmeapositioninfosourceproxyfactory.h
+ ../../utils/qnmeaproxyfactory.h
SOURCES += ../../utils/qlocationtestutils.cpp \
../../qgeopositioninfosource/testqgeopositioninfosource.cpp \
- ../qnmeapositioninfosourceproxyfactory.cpp \
+ ../../utils/qnmeaproxyfactory.cpp \
tst_dummynmeapositioninfosource.cpp
DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0
diff --git a/tests/auto/qnmeapositioninfosource/dummynmeapositioninfosource/tst_dummynmeapositioninfosource.cpp b/tests/auto/qnmeapositioninfosource/dummynmeapositioninfosource/tst_dummynmeapositioninfosource.cpp
index 8330e0b7..878933be 100644
--- a/tests/auto/qnmeapositioninfosource/dummynmeapositioninfosource/tst_dummynmeapositioninfosource.cpp
+++ b/tests/auto/qnmeapositioninfosource/dummynmeapositioninfosource/tst_dummynmeapositioninfosource.cpp
@@ -28,7 +28,7 @@
//TESTED_COMPONENT=src/location
-#include "qnmeapositioninfosourceproxyfactory.h"
+#include "../utils/qnmeaproxyfactory.h"
#include "../qgeopositioninfosource/testqgeopositioninfosource_p.h"
#include "../utils/qlocationtestutils_p.h"
@@ -100,8 +100,9 @@ void tst_DummyNmeaPositionInfoSource::initTestCase()
void tst_DummyNmeaPositionInfoSource::testOverloadedParseFunction()
{
DummyNmeaPositionInfoSource source(QNmeaPositionInfoSource::RealTimeMode);
- QNmeaPositionInfoSourceProxyFactory factory;
- QNmeaPositionInfoSourceProxy *proxy = static_cast<QNmeaPositionInfoSourceProxy*>(factory.createProxy(&source));
+ QNmeaProxyFactory factory;
+ QNmeaPositionInfoSourceProxy *proxy = static_cast<QNmeaPositionInfoSourceProxy *>(
+ factory.createPositionInfoSourceProxy(&source));
QSignalSpy spy(proxy->source(), SIGNAL(positionUpdated(QGeoPositionInfo)));
diff --git a/tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_realtime/CMakeLists.txt b/tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_realtime/CMakeLists.txt
index 58a6fac7..29bf14a5 100644
--- a/tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_realtime/CMakeLists.txt
+++ b/tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_realtime/CMakeLists.txt
@@ -8,7 +8,7 @@ qt_internal_add_test(tst_qnmeapositioninfosource_realtime
SOURCES
../../qgeopositioninfosource/testqgeopositioninfosource.cpp ../../qgeopositioninfosource/testqgeopositioninfosource_p.h
../../utils/qlocationtestutils.cpp ../../utils/qlocationtestutils_p.h
- ../qnmeapositioninfosourceproxyfactory.cpp ../qnmeapositioninfosourceproxyfactory.h
+ ../../utils/qnmeaproxyfactory.cpp ../../utils/qnmeaproxyfactory.h
../tst_qnmeapositioninfosource.cpp ../tst_qnmeapositioninfosource.h
tst_qnmeapositioninfosource_realtime.cpp
DEFINES
diff --git a/tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_realtime/qnmeapositioninfosource_realtime.pro b/tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_realtime/qnmeapositioninfosource_realtime.pro
index a5f512bd..fcff3d7a 100644
--- a/tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_realtime/qnmeapositioninfosource_realtime.pro
+++ b/tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_realtime/qnmeapositioninfosource_realtime.pro
@@ -7,12 +7,12 @@ INCLUDEPATH += ..
HEADERS += ../../utils/qlocationtestutils_p.h \
../../qgeopositioninfosource/testqgeopositioninfosource_p.h \
- ../qnmeapositioninfosourceproxyfactory.h \
+ ../../utils/qnmeaproxyfactory.h \
../tst_qnmeapositioninfosource.h
SOURCES += ../../utils/qlocationtestutils.cpp \
../../qgeopositioninfosource/testqgeopositioninfosource.cpp \
- ../qnmeapositioninfosourceproxyfactory.cpp \
+ ../../utils/qnmeaproxyfactory.cpp \
../tst_qnmeapositioninfosource.cpp \
tst_qnmeapositioninfosource_realtime.cpp
diff --git a/tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_realtime_generic/CMakeLists.txt b/tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_realtime_generic/CMakeLists.txt
index 2ffea48e..047e6c03 100644
--- a/tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_realtime_generic/CMakeLists.txt
+++ b/tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_realtime_generic/CMakeLists.txt
@@ -8,7 +8,7 @@ qt_internal_add_test(tst_qnmeapositioninfosource_realtime_generic
SOURCES
../../qgeopositioninfosource/testqgeopositioninfosource.cpp ../../qgeopositioninfosource/testqgeopositioninfosource_p.h
../../utils/qlocationtestutils.cpp ../../utils/qlocationtestutils_p.h
- ../qnmeapositioninfosourceproxyfactory.cpp ../qnmeapositioninfosourceproxyfactory.h
+ ../../utils/qnmeaproxyfactory.cpp ../../utils/qnmeaproxyfactory.h
../tst_qnmeapositioninfosource.cpp ../tst_qnmeapositioninfosource.h
tst_qnmeapositioninfosource_realtime_generic.cpp
DEFINES
diff --git a/tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_realtime_generic/qnmeapositioninfosource_realtime_generic.pro b/tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_realtime_generic/qnmeapositioninfosource_realtime_generic.pro
index 8c48c684..0fbbd76e 100644
--- a/tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_realtime_generic/qnmeapositioninfosource_realtime_generic.pro
+++ b/tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_realtime_generic/qnmeapositioninfosource_realtime_generic.pro
@@ -8,12 +8,12 @@ INCLUDEPATH += ..
HEADERS += ../../utils/qlocationtestutils_p.h \
../../qgeopositioninfosource/testqgeopositioninfosource_p.h \
- ../qnmeapositioninfosourceproxyfactory.h \
+ ../../utils/qnmeaproxyfactory.h \
../tst_qnmeapositioninfosource.h
SOURCES += ../../utils/qlocationtestutils.cpp \
../../qgeopositioninfosource/testqgeopositioninfosource.cpp \
- ../qnmeapositioninfosourceproxyfactory.cpp \
+ ../../utils/qnmeaproxyfactory.cpp \
../tst_qnmeapositioninfosource.cpp \
tst_qnmeapositioninfosource_realtime_generic.cpp
diff --git a/tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_realtime_generic/tst_qnmeapositioninfosource_realtime_generic.cpp b/tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_realtime_generic/tst_qnmeapositioninfosource_realtime_generic.cpp
index 5a7ec2e0..abb5e9ae 100644
--- a/tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_realtime_generic/tst_qnmeapositioninfosource_realtime_generic.cpp
+++ b/tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_realtime_generic/tst_qnmeapositioninfosource_realtime_generic.cpp
@@ -37,7 +37,7 @@ class tst_QNmeaPositionInfoSource_RealTime_Generic : public TestQGeoPositionInfo
public:
tst_QNmeaPositionInfoSource_RealTime_Generic()
{
- m_factory = new QNmeaPositionInfoSourceProxyFactory;
+ m_factory = new QNmeaProxyFactory;
#if QT_CONFIG(library)
/*
* Set custom path since CI doesn't install test plugins
@@ -61,14 +61,15 @@ protected:
QGeoPositionInfoSource *createTestSource() override
{
QNmeaPositionInfoSource *source = new QNmeaPositionInfoSource(QNmeaPositionInfoSource::RealTimeMode);
- QNmeaPositionInfoSourceProxy *proxy = static_cast<QNmeaPositionInfoSourceProxy*>(m_factory->createProxy(source));
+ QNmeaPositionInfoSourceProxy *proxy = static_cast<QNmeaPositionInfoSourceProxy *>(
+ m_factory->createPositionInfoSourceProxy(source));
Feeder *feeder = new Feeder(source);
feeder->start(proxy);
return source;
}
private:
- QNmeaPositionInfoSourceProxyFactory *m_factory;
+ QNmeaProxyFactory *m_factory;
};
#include "tst_qnmeapositioninfosource_realtime_generic.moc"
diff --git a/tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_simulation/CMakeLists.txt b/tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_simulation/CMakeLists.txt
index 04cdbaa5..c39b5a08 100644
--- a/tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_simulation/CMakeLists.txt
+++ b/tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_simulation/CMakeLists.txt
@@ -8,7 +8,7 @@ qt_internal_add_test(tst_qnmeapositioninfosource_simulation
SOURCES
../../qgeopositioninfosource/testqgeopositioninfosource.cpp ../../qgeopositioninfosource/testqgeopositioninfosource_p.h
../../utils/qlocationtestutils.cpp ../../utils/qlocationtestutils_p.h
- ../qnmeapositioninfosourceproxyfactory.cpp ../qnmeapositioninfosourceproxyfactory.h
+ ../../utils/qnmeaproxyfactory.cpp ../../utils/qnmeaproxyfactory.h
../tst_qnmeapositioninfosource.cpp ../tst_qnmeapositioninfosource.h
tst_qnmeapositioninfosource_simulation.cpp
DEFINES
diff --git a/tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_simulation/qnmeapositioninfosource_simulation.pro b/tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_simulation/qnmeapositioninfosource_simulation.pro
index 1f0861df..88bb18f9 100644
--- a/tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_simulation/qnmeapositioninfosource_simulation.pro
+++ b/tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_simulation/qnmeapositioninfosource_simulation.pro
@@ -7,12 +7,12 @@ INCLUDEPATH += ..
HEADERS += ../../utils/qlocationtestutils_p.h \
../../qgeopositioninfosource/testqgeopositioninfosource_p.h \
- ../qnmeapositioninfosourceproxyfactory.h \
+ ../../utils/qnmeaproxyfactory.h \
../tst_qnmeapositioninfosource.h
SOURCES += ../../utils/qlocationtestutils.cpp \
../../qgeopositioninfosource/testqgeopositioninfosource.cpp \
- ../qnmeapositioninfosourceproxyfactory.cpp \
+ ../../utils/qnmeaproxyfactory.cpp \
../tst_qnmeapositioninfosource.cpp \
tst_qnmeapositioninfosource_simulation.cpp
diff --git a/tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_simulation_generic/CMakeLists.txt b/tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_simulation_generic/CMakeLists.txt
index 3f714d6f..9b362139 100644
--- a/tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_simulation_generic/CMakeLists.txt
+++ b/tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_simulation_generic/CMakeLists.txt
@@ -13,7 +13,7 @@ qt_internal_add_test(tst_qnmeaposinfosource_sim_generic
SOURCES
../../qgeopositioninfosource/testqgeopositioninfosource.cpp ../../qgeopositioninfosource/testqgeopositioninfosource_p.h
../../utils/qlocationtestutils.cpp ../../utils/qlocationtestutils_p.h
- ../qnmeapositioninfosourceproxyfactory.cpp ../qnmeapositioninfosourceproxyfactory.h
+ ../../utils/qnmeaproxyfactory.cpp ../../utils/qnmeaproxyfactory.h
../tst_qnmeapositioninfosource.cpp ../tst_qnmeapositioninfosource.h
tst_qnmeapositioninfosource_simulation_generic.cpp
DEFINES
diff --git a/tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_simulation_generic/qnmeapositioninfosource_simulation_generic.pro b/tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_simulation_generic/qnmeapositioninfosource_simulation_generic.pro
index 8b16d444..b198bf7c 100644
--- a/tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_simulation_generic/qnmeapositioninfosource_simulation_generic.pro
+++ b/tests/auto/qnmeapositioninfosource/qnmeapositioninfosource_simulation_generic/qnmeapositioninfosource_simulation_generic.pro
@@ -8,12 +8,12 @@ INCLUDEPATH += ..
HEADERS += ../../utils/qlocationtestutils_p.h \
../../qgeopositioninfosource/testqgeopositioninfosource_p.h \
- ../qnmeapositioninfosourceproxyfactory.h \
+ ../../utils/qnmeaproxyfactory.h \
../tst_qnmeapositioninfosource.h
SOURCES += ../../utils/qlocationtestutils.cpp \
../../qgeopositioninfosource/testqgeopositioninfosource.cpp \
- ../qnmeapositioninfosourceproxyfactory.cpp \
+ ../../utils/qnmeaproxyfactory.cpp \
../tst_qnmeapositioninfosource.cpp \
tst_qnmeapositioninfosource_simulation_generic.cpp
diff --git a/tests/auto/qnmeapositioninfosource/tst_qnmeapositioninfosource.cpp b/tests/auto/qnmeapositioninfosource/tst_qnmeapositioninfosource.cpp
index 44f7508a..accc5bed 100644
--- a/tests/auto/qnmeapositioninfosource/tst_qnmeapositioninfosource.cpp
+++ b/tests/auto/qnmeapositioninfosource/tst_qnmeapositioninfosource.cpp
@@ -110,8 +110,9 @@ void tst_QNmeaPositionInfoSource::setUpdateInterval_delayedUpdate()
// as it becomes available
QNmeaPositionInfoSource source(m_mode);
- QNmeaPositionInfoSourceProxyFactory factory;
- QNmeaPositionInfoSourceProxy *proxy = static_cast<QNmeaPositionInfoSourceProxy*>(factory.createProxy(&source));
+ QNmeaProxyFactory factory;
+ QNmeaPositionInfoSourceProxy *proxy = static_cast<QNmeaPositionInfoSourceProxy *>(
+ factory.createPositionInfoSourceProxy(&source));
QSignalSpy spyUpdate(proxy->source(), SIGNAL(positionUpdated(QGeoPositionInfo)));
proxy->source()->setUpdateInterval(500);
@@ -130,8 +131,9 @@ void tst_QNmeaPositionInfoSource::setUpdateInterval_delayedUpdate()
void tst_QNmeaPositionInfoSource::lastKnownPosition()
{
QNmeaPositionInfoSource source(m_mode);
- QNmeaPositionInfoSourceProxyFactory factory;
- QNmeaPositionInfoSourceProxy *proxy = static_cast<QNmeaPositionInfoSourceProxy*>(factory.createProxy(&source));
+ QNmeaProxyFactory factory;
+ QNmeaPositionInfoSourceProxy *proxy = static_cast<QNmeaPositionInfoSourceProxy *>(
+ factory.createPositionInfoSourceProxy(&source));
QCOMPARE(proxy->source()->lastKnownPosition(), QGeoPositionInfo());
@@ -227,8 +229,9 @@ void tst_QNmeaPositionInfoSource::startUpdates()
QFETCH(QList<QDateTime>, dateTimes);
QNmeaPositionInfoSource source(m_mode);
- QNmeaPositionInfoSourceProxyFactory factory;
- QNmeaPositionInfoSourceProxy *proxy = static_cast<QNmeaPositionInfoSourceProxy*>(factory.createProxy(&source));
+ QNmeaProxyFactory factory;
+ QNmeaPositionInfoSourceProxy *proxy = static_cast<QNmeaPositionInfoSourceProxy *>(
+ factory.createPositionInfoSourceProxy(&source));
QSignalSpy spyUpdate(proxy->source(), SIGNAL(positionUpdated(QGeoPositionInfo)));
proxy->source()->startUpdates();
@@ -250,8 +253,9 @@ void tst_QNmeaPositionInfoSource::startUpdates_data()
void tst_QNmeaPositionInfoSource::startUpdates_withTimeout()
{
QNmeaPositionInfoSource source(m_mode);
- QNmeaPositionInfoSourceProxyFactory factory;
- QNmeaPositionInfoSourceProxy *proxy = static_cast<QNmeaPositionInfoSourceProxy*>(factory.createProxy(&source));
+ QNmeaProxyFactory factory;
+ QNmeaPositionInfoSourceProxy *proxy = static_cast<QNmeaPositionInfoSourceProxy *>(
+ factory.createPositionInfoSourceProxy(&source));
QSignalSpy spyUpdate(proxy->source(), SIGNAL(positionUpdated(QGeoPositionInfo)));
QSignalSpy spyTimeout(proxy->source(), SIGNAL(errorOccurred(QGeoPositionInfoSource::Error)));
@@ -334,8 +338,9 @@ void tst_QNmeaPositionInfoSource::startUpdates_expectLatestUpdateOnly()
// updates are in the buffer, only the latest update should be emitted
QNmeaPositionInfoSource source(m_mode);
- QNmeaPositionInfoSourceProxyFactory factory;
- QNmeaPositionInfoSourceProxy *proxy = static_cast<QNmeaPositionInfoSourceProxy*>(factory.createProxy(&source));
+ QNmeaProxyFactory factory;
+ QNmeaPositionInfoSourceProxy *proxy = static_cast<QNmeaPositionInfoSourceProxy *>(
+ factory.createPositionInfoSourceProxy(&source));
QSignalSpy spyUpdate(proxy->source(), SIGNAL(positionUpdated(QGeoPositionInfo)));
proxy->source()->setUpdateInterval(500);
@@ -363,8 +368,9 @@ void tst_QNmeaPositionInfoSource::startUpdates_waitForValidDateTime()
QNmeaPositionInfoSource source(m_mode);
source.setUserEquivalentRangeError(5.1);
- QNmeaPositionInfoSourceProxyFactory factory;
- QNmeaPositionInfoSourceProxy *proxy = static_cast<QNmeaPositionInfoSourceProxy*>(factory.createProxy(&source));
+ QNmeaProxyFactory factory;
+ QNmeaPositionInfoSourceProxy *proxy = static_cast<QNmeaPositionInfoSourceProxy *>(
+ factory.createPositionInfoSourceProxy(&source));
QSignalSpy spy(proxy->source(), SIGNAL(positionUpdated(QGeoPositionInfo)));
QObject::connect(proxy->source(), &QNmeaPositionInfoSource::positionUpdated, [](const QGeoPositionInfo &info) {
@@ -461,8 +467,9 @@ void tst_QNmeaPositionInfoSource::requestUpdate_waitForValidDateTime()
QFETCH(QList<QDateTime>, dateTimes);
QNmeaPositionInfoSource source(m_mode);
- QNmeaPositionInfoSourceProxyFactory factory;
- QNmeaPositionInfoSourceProxy *proxy = static_cast<QNmeaPositionInfoSourceProxy*>(factory.createProxy(&source));
+ QNmeaProxyFactory factory;
+ QNmeaPositionInfoSourceProxy *proxy = static_cast<QNmeaPositionInfoSourceProxy *>(
+ factory.createPositionInfoSourceProxy(&source));
QSignalSpy spy(proxy->source(), SIGNAL(positionUpdated(QGeoPositionInfo)));
proxy->source()->requestUpdate();
@@ -480,8 +487,9 @@ void tst_QNmeaPositionInfoSource::requestUpdate_waitForValidDateTime_data()
void tst_QNmeaPositionInfoSource::requestUpdate()
{
QNmeaPositionInfoSource source(m_mode);
- QNmeaPositionInfoSourceProxyFactory factory;
- QNmeaPositionInfoSourceProxy *proxy = static_cast<QNmeaPositionInfoSourceProxy*>(factory.createProxy(&source));
+ QNmeaProxyFactory factory;
+ QNmeaPositionInfoSourceProxy *proxy = static_cast<QNmeaPositionInfoSourceProxy *>(
+ factory.createPositionInfoSourceProxy(&source));
QSignalSpy spyUpdate(proxy->source(), SIGNAL(positionUpdated(QGeoPositionInfo)));
QSignalSpy spyTimeout(proxy->source(), SIGNAL(errorOccurred(QGeoPositionInfoSource::Error)));
@@ -526,8 +534,9 @@ void tst_QNmeaPositionInfoSource::requestUpdate()
void tst_QNmeaPositionInfoSource::requestUpdate_after_start()
{
QNmeaPositionInfoSource source(m_mode);
- QNmeaPositionInfoSourceProxyFactory factory;
- QNmeaPositionInfoSourceProxy *proxy = static_cast<QNmeaPositionInfoSourceProxy*>(factory.createProxy(&source));
+ QNmeaProxyFactory factory;
+ QNmeaPositionInfoSourceProxy *proxy = static_cast<QNmeaPositionInfoSourceProxy *>(
+ factory.createPositionInfoSourceProxy(&source));
QSignalSpy spyUpdate(proxy->source(), SIGNAL(positionUpdated(QGeoPositionInfo)));
QSignalSpy spyTimeout(proxy->source(), SIGNAL(errorOccurred(QGeoPositionInfoSource::Error)));
@@ -558,8 +567,9 @@ void tst_QNmeaPositionInfoSource::testWithBadNmea()
QFETCH(UpdateTriggerMethod, trigger);
QNmeaPositionInfoSource source(m_mode);
- QNmeaPositionInfoSourceProxyFactory factory;
- QNmeaPositionInfoSourceProxy *proxy = static_cast<QNmeaPositionInfoSourceProxy*>(factory.createProxy(&source));
+ QNmeaProxyFactory factory;
+ QNmeaPositionInfoSourceProxy *proxy = static_cast<QNmeaPositionInfoSourceProxy *>(
+ factory.createPositionInfoSourceProxy(&source));
QSignalSpy spy(proxy->source(), SIGNAL(positionUpdated(QGeoPositionInfo)));
if (trigger == StartUpdatesMethod)
diff --git a/tests/auto/qnmeapositioninfosource/tst_qnmeapositioninfosource.h b/tests/auto/qnmeapositioninfosource/tst_qnmeapositioninfosource.h
index 4f92ab75..83cd284d 100644
--- a/tests/auto/qnmeapositioninfosource/tst_qnmeapositioninfosource.h
+++ b/tests/auto/qnmeapositioninfosource/tst_qnmeapositioninfosource.h
@@ -26,8 +26,8 @@
**
****************************************************************************/
-#include "qnmeapositioninfosourceproxyfactory.h"
#include "../qgeopositioninfosource/testqgeopositioninfosource_p.h"
+#include "../utils/qnmeaproxyfactory.h"
#include "../utils/qlocationtestutils_p.h"
#include <QtPositioning/qnmeapositioninfosource.h>
diff --git a/tests/auto/qnmeasatelliteinfosource/CMakeLists.txt b/tests/auto/qnmeasatelliteinfosource/CMakeLists.txt
new file mode 100644
index 00000000..b394c8ad
--- /dev/null
+++ b/tests/auto/qnmeasatelliteinfosource/CMakeLists.txt
@@ -0,0 +1,2 @@
+add_subdirectory(dummy)
+add_subdirectory(generic)
diff --git a/tests/auto/qnmeasatelliteinfosource/dummy/CMakeLists.txt b/tests/auto/qnmeasatelliteinfosource/dummy/CMakeLists.txt
new file mode 100644
index 00000000..f4a323e0
--- /dev/null
+++ b/tests/auto/qnmeasatelliteinfosource/dummy/CMakeLists.txt
@@ -0,0 +1,16 @@
+# special case begin
+qt_internal_add_test(tst_dummynmeasatelliteinfosource
+ SOURCES
+ ../../utils/qlocationtestutils.cpp ../../utils/qlocationtestutils_p.h
+ ../../utils/qnmeaproxyfactory.cpp ../../utils/qnmeaproxyfactory.h
+ tst_dummynmeasatelliteinfosource.cpp
+ DEFINES
+ QT_DISABLE_DEPRECATED_BEFORE=0
+ INCLUDE_DIRECTORIES
+ ..
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Network
+ Qt::Positioning
+)
+# special case end
diff --git a/tests/auto/qnmeasatelliteinfosource/dummy/tst_dummynmeasatelliteinfosource.cpp b/tests/auto/qnmeasatelliteinfosource/dummy/tst_dummynmeasatelliteinfosource.cpp
new file mode 100644
index 00000000..c089b59e
--- /dev/null
+++ b/tests/auto/qnmeasatelliteinfosource/dummy/tst_dummynmeasatelliteinfosource.cpp
@@ -0,0 +1,167 @@
+/****************************************************************************
+**
+** Copyright (C) 2021 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:GPL-EXCEPT$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QTest>
+#include <QSignalSpy>
+#include <QtPositioning/QNmeaSatelliteInfoSource>
+#include "../../utils/qnmeaproxyfactory.h"
+
+class DummyNmeaSatelliteInfoSource : public QNmeaSatelliteInfoSource
+{
+ Q_OBJECT
+
+public:
+ DummyNmeaSatelliteInfoSource(QObject *parent = 0);
+
+protected:
+ bool parseSatellitesInUseFromNmea(const char *data, int size, QList<int> &pnrsInUse) override;
+ SatelliteInfoParseStatus parseSatelliteInfoFromNmea(const char *data, int size,
+ QList<QGeoSatelliteInfo> &infos) override;
+
+private:
+ int callCount;
+};
+
+DummyNmeaSatelliteInfoSource::DummyNmeaSatelliteInfoSource(QObject *parent)
+ : QNmeaSatelliteInfoSource(parent)
+{
+}
+
+bool DummyNmeaSatelliteInfoSource::parseSatellitesInUseFromNmea(const char *data, int size,
+ QList<int> &pnrsInUse)
+{
+ // expected format: "USE:num1;num2;num3\n"
+ // example: "USE:1;3;4;7\n"
+ if (!data || !size)
+ return false;
+
+ QString str = QLatin1String(data, size).toString();
+ if (!str.startsWith("USE:"))
+ return false;
+
+ const QStringList sl = str.mid(4).split(";", Qt::SkipEmptyParts);
+
+ if (sl.empty())
+ return false;
+
+ for (const auto &str : sl) {
+ bool ok = false;
+ int value = str.toInt(&ok);
+ if (ok) {
+ pnrsInUse.push_back(value);
+ }
+ }
+ return true;
+}
+
+QNmeaSatelliteInfoSource::SatelliteInfoParseStatus
+DummyNmeaSatelliteInfoSource::parseSatelliteInfoFromNmea(const char *data, int size,
+ QList<QGeoSatelliteInfo> &infos)
+{
+ // expected format: "INFO:system,identifier;system,identifier;system,identifier\n"
+ // example: "INFO:1,5;2,7;1,15\n"
+ if (!data || !size)
+ return NotParsed;
+
+ QString str = QLatin1String(data, size).toString();
+ if (!str.startsWith("INFO:"))
+ return NotParsed;
+
+ QStringList sat_infos = str.mid(5).split(";", Qt::SkipEmptyParts);
+
+ if (sat_infos.empty())
+ return NotParsed;
+
+ for (const auto &sat_info : sat_infos) {
+ QStringList parameters = sat_info.split(",", Qt::SkipEmptyParts);
+ if (parameters.size() == 2) {
+ QGeoSatelliteInfo info;
+ info.setSatelliteSystem(
+ static_cast<QGeoSatelliteInfo::SatelliteSystem>(parameters[0].toInt()));
+ info.setSatelliteIdentifier(parameters[1].toInt());
+ infos.push_back(info);
+ }
+ }
+ return FullyParsed;
+}
+
+class tst_DummyNmeaSatelliteInfoSource : public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void testOverloadedParseFunction();
+};
+
+void tst_DummyNmeaSatelliteInfoSource::testOverloadedParseFunction()
+{
+ DummyNmeaSatelliteInfoSource source;
+ QNmeaProxyFactory factory;
+ QScopedPointer<QNmeaSatelliteInfoSourceProxy> proxy(
+ factory.createSatelliteInfoSourceProxy(&source));
+
+ QSignalSpy inUseSpy(proxy->source(), &QNmeaSatelliteInfoSource::satellitesInUseUpdated);
+ QSignalSpy inViewSpy(proxy->source(), &QNmeaSatelliteInfoSource::satellitesInViewUpdated);
+
+ proxy->source()->startUpdates();
+
+ // first we need to send all satellites
+ proxy->feedBytes("INFO:1,5;2,7;1,15\n");
+ // then - used ones
+ proxy->feedBytes("USE:5;15\n");
+
+ QTRY_VERIFY_WITH_TIMEOUT(inUseSpy.count() == 1, 10000);
+ QTRY_VERIFY_WITH_TIMEOUT(inViewSpy.count() == 1, 10000);
+
+ QGeoSatelliteInfo info_1_5;
+ info_1_5.setSatelliteSystem(QGeoSatelliteInfo::GPS);
+ info_1_5.setSatelliteIdentifier(5);
+
+ QGeoSatelliteInfo info_2_7;
+ info_2_7.setSatelliteSystem(QGeoSatelliteInfo::GLONASS);
+ info_2_7.setSatelliteIdentifier(7);
+
+ QGeoSatelliteInfo info_1_15;
+ info_1_15.setSatelliteSystem(QGeoSatelliteInfo::GPS);
+ info_1_15.setSatelliteIdentifier(15);
+
+ const QList<QGeoSatelliteInfo> desiredInView = { info_1_5, info_2_7, info_1_15 };
+ const QList<QGeoSatelliteInfo> desiredInUse = { info_1_5, info_1_15 };
+
+ const QList<QGeoSatelliteInfo> inViewList =
+ inViewSpy.at(0).at(0).value<QList<QGeoSatelliteInfo>>();
+ const QList<QGeoSatelliteInfo> inUseList =
+ inUseSpy.at(0).at(0).value<QList<QGeoSatelliteInfo>>();
+
+ QCOMPARE(inViewList, desiredInView);
+ QCOMPARE(inUseList, desiredInUse);
+}
+
+#include "tst_dummynmeasatelliteinfosource.moc"
+
+QTEST_GUILESS_MAIN(tst_DummyNmeaSatelliteInfoSource);
diff --git a/tests/auto/qnmeasatelliteinfosource/generic/CMakeLists.txt b/tests/auto/qnmeasatelliteinfosource/generic/CMakeLists.txt
new file mode 100644
index 00000000..acca9294
--- /dev/null
+++ b/tests/auto/qnmeasatelliteinfosource/generic/CMakeLists.txt
@@ -0,0 +1,17 @@
+# special case begin
+qt_internal_add_test(tst_nmeasatelliteinfosourcegeneric
+ SOURCES
+ ../../qgeosatelliteinfosource/testqgeosatelliteinfosource.cpp ../../qgeosatelliteinfosource/testqgeosatelliteinfosource_p.h
+ ../../utils/qlocationtestutils.cpp ../../utils/qlocationtestutils_p.h
+ ../../utils/qnmeaproxyfactory.cpp ../../utils/qnmeaproxyfactory.h
+ tst_nmeasatelliteinfosourcegeneric.cpp
+ DEFINES
+ QT_DISABLE_DEPRECATED_BEFORE=0
+ INCLUDE_DIRECTORIES
+ ..
+ PUBLIC_LIBRARIES
+ Qt::Core
+ Qt::Network
+ Qt::Positioning
+)
+# special case end
diff --git a/tests/auto/qnmeasatelliteinfosource/generic/tst_nmeasatelliteinfosourcegeneric.cpp b/tests/auto/qnmeasatelliteinfosource/generic/tst_nmeasatelliteinfosourcegeneric.cpp
new file mode 100644
index 00000000..ebd25502
--- /dev/null
+++ b/tests/auto/qnmeasatelliteinfosource/generic/tst_nmeasatelliteinfosourcegeneric.cpp
@@ -0,0 +1,92 @@
+/****************************************************************************
+**
+** Copyright (C) 2021 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:GPL-EXCEPT$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QTest>
+#include <QTimer>
+#include <QtPositioning/QNmeaSatelliteInfoSource>
+#include "../../qgeosatelliteinfosource/testqgeosatelliteinfosource_p.h"
+#include "../../utils/qnmeaproxyfactory.h"
+#include "../../utils/qlocationtestutils_p.h"
+
+class Feeder : public QObject
+{
+ Q_OBJECT
+public:
+ Feeder(QObject *parent) : QObject(parent)
+ {
+ }
+
+ void start(QNmeaSatelliteInfoSourceProxy *proxy)
+ {
+ m_proxy = proxy;
+ QTimer *timer = new QTimer(this);
+ QObject::connect(timer, &QTimer::timeout, this, &Feeder::timeout);
+ timer->setInterval(proxy->source()->minimumUpdateInterval() * 2);
+ timer->start();
+ }
+
+public slots:
+ void timeout()
+ {
+ // Here we need to provide different chunks of data, because the signals
+ // are emitted only when data changes.
+ if (has_data) {
+ m_proxy->feedBytes(QLocationTestUtils::createGsvLongSentence().toLatin1());
+ m_proxy->feedBytes(QLocationTestUtils::createGsaLongSentence().toLatin1());
+ } else {
+ m_proxy->feedBytes(QLocationTestUtils::createGsvSentence().toLatin1());
+ m_proxy->feedBytes(QLocationTestUtils::createGsaSentence().toLatin1());
+ }
+ has_data = !has_data;
+ }
+
+private:
+ QNmeaSatelliteInfoSourceProxy *m_proxy;
+ bool has_data = true;
+};
+
+class tst_QNmeaSatelliteInfoSource_Generic : public TestQGeoSatelliteInfoSource
+{
+ Q_OBJECT
+protected:
+ QGeoSatelliteInfoSource *createTestSource() override
+ {
+ QNmeaSatelliteInfoSource *source = new QNmeaSatelliteInfoSource;
+ QNmeaSatelliteInfoSourceProxy *proxy = m_factory.createSatelliteInfoSourceProxy(source);
+ Feeder *feeder = new Feeder(source);
+ feeder->start(proxy);
+ return source;
+ }
+
+private:
+ QNmeaProxyFactory m_factory;
+};
+
+#include "tst_nmeasatelliteinfosourcegeneric.moc"
+
+QTEST_GUILESS_MAIN(tst_QNmeaSatelliteInfoSource_Generic)
diff --git a/tests/auto/utils/qlocationtestutils.cpp b/tests/auto/utils/qlocationtestutils.cpp
index df595daa..c98fc603 100644
--- a/tests/auto/utils/qlocationtestutils.cpp
+++ b/tests/auto/utils/qlocationtestutils.cpp
@@ -84,3 +84,19 @@ QString QLocationTestUtils::createGsaSentence()
{
return addNmeaChecksumAndBreaks(QStringLiteral("$GPGSA,A,3,,,,,,,,,,,,,3.0,3.5,4.0*"));
}
+
+QString QLocationTestUtils::createGsvSentence()
+{
+ return addNmeaChecksumAndBreaks(QStringLiteral("$GPGSV,1,1,0,,,,,,,,,,,,,,,,*"));
+}
+
+QString QLocationTestUtils::createGsaLongSentence()
+{
+ return addNmeaChecksumAndBreaks(QStringLiteral("$GPGSA,A,3,16,25,,,,,,,,,,,2.3,1.3,1.9*"));
+}
+
+QString QLocationTestUtils::createGsvLongSentence()
+{
+ return addNmeaChecksumAndBreaks(
+ QStringLiteral("$GPGSV,1,1,4,16,49,115,42,25,39,269,36,23,58,176,29,20,72,335,35*"));
+}
diff --git a/tests/auto/utils/qlocationtestutils_p.h b/tests/auto/utils/qlocationtestutils_p.h
index 05c325fd..fec8d164 100644
--- a/tests/auto/utils/qlocationtestutils_p.h
+++ b/tests/auto/utils/qlocationtestutils_p.h
@@ -45,6 +45,9 @@ namespace QLocationTestUtils
QString createGgaSentence(int lat, int lng, const QTime &time);
QString createZdaSentence(const QDateTime &dt);
QString createGsaSentence();
+ QString createGsvSentence();
+ QString createGsaLongSentence();
+ QString createGsvLongSentence();
//The purpose of compareEquality() is to test equality
//operators where it is expected that A == B.
diff --git a/tests/auto/qnmeapositioninfosource/qnmeapositioninfosourceproxyfactory.cpp b/tests/auto/utils/qnmeaproxyfactory.cpp
index 756d0272..8ad07adf 100644
--- a/tests/auto/qnmeapositioninfosource/qnmeapositioninfosourceproxyfactory.cpp
+++ b/tests/auto/utils/qnmeaproxyfactory.cpp
@@ -26,17 +26,18 @@
**
****************************************************************************/
-#include "qnmeapositioninfosourceproxyfactory.h"
-#include "../utils/qlocationtestutils_p.h"
+#include "qnmeaproxyfactory.h"
+#include "qlocationtestutils_p.h"
+#include <QtPositioning/QNmeaPositionInfoSource>
+#include <QtPositioning/QNmeaSatelliteInfoSource>
#include <QIODevice>
#include <QTcpServer>
#include <QTcpSocket>
-
-QNmeaPositionInfoSourceProxy::QNmeaPositionInfoSourceProxy(QNmeaPositionInfoSource *source, QIODevice *outDevice)
- : m_source(source),
- m_outDevice(outDevice)
+QNmeaPositionInfoSourceProxy::QNmeaPositionInfoSourceProxy(QNmeaPositionInfoSource *source,
+ QIODevice *outDevice)
+ : m_source(source), m_outDevice(outDevice)
{
}
@@ -61,17 +62,38 @@ void QNmeaPositionInfoSourceProxy::feedBytes(const QByteArray &bytes)
m_outDevice->write(bytes);
}
-
-QNmeaPositionInfoSourceProxyFactory::QNmeaPositionInfoSourceProxyFactory()
- : m_server(new QTcpServer(this))
+QNmeaProxyFactory::QNmeaProxyFactory() : m_server(new QTcpServer(this))
{
bool b = m_server->listen(QHostAddress::LocalHost);
Q_ASSERT(b);
}
-QNmeaPositionInfoSourceProxy *QNmeaPositionInfoSourceProxyFactory::createProxy(QNmeaPositionInfoSource *source)
+QNmeaPositionInfoSourceProxy *
+QNmeaProxyFactory::createPositionInfoSourceProxy(QNmeaPositionInfoSource *source)
+{
+ QTcpSocket *client = new QTcpSocket;
+ QIODevice *device = createServerConnection(client);
+ source->setDevice(device);
+ Q_ASSERT(source->device() != 0);
+ QNmeaPositionInfoSourceProxy *proxy = new QNmeaPositionInfoSourceProxy(source, client);
+ proxy->setParent(source);
+ return proxy;
+}
+
+QNmeaSatelliteInfoSourceProxy *
+QNmeaProxyFactory::createSatelliteInfoSourceProxy(QNmeaSatelliteInfoSource *source)
{
QTcpSocket *client = new QTcpSocket;
+ QIODevice *device = createServerConnection(client);
+ source->setDevice(device);
+ Q_ASSERT(source->device() != 0);
+ QNmeaSatelliteInfoSourceProxy *proxy = new QNmeaSatelliteInfoSourceProxy(source, client);
+ proxy->setParent(source);
+ return proxy;
+}
+
+QIODevice *QNmeaProxyFactory::createServerConnection(QTcpSocket *client)
+{
client->connectToHost(m_server->serverAddress(), m_server->serverPort());
qDebug() << "listening on" << m_server->serverAddress() << m_server->serverPort();
bool b = m_server->waitForNewConnection(15000);
@@ -81,15 +103,28 @@ QNmeaPositionInfoSourceProxy *QNmeaPositionInfoSourceProxyFactory::createProxy(Q
if (!b)
qWarning() << "Client could not connect to server";
- //QNmeaPositionInfoSource *source = new QNmeaPositionInfoSource(m_mode);
QIODevice *device = m_server->nextPendingConnection();
- if (!device)
- qWarning() << "Missing pending connection. Test is going to fail.";
- else
- qWarning() << "Received pending connection:" << device << b;
- source->setDevice(device);
- Q_ASSERT(source->device() != 0);
- QNmeaPositionInfoSourceProxy *proxy = new QNmeaPositionInfoSourceProxy(source, client);
- proxy->setParent(source);
- return proxy;
+ return device;
+}
+
+QNmeaSatelliteInfoSourceProxy::QNmeaSatelliteInfoSourceProxy(QNmeaSatelliteInfoSource *source,
+ QIODevice *outDevice)
+ : m_source(source), m_outDevice(outDevice)
+{
+}
+
+QNmeaSatelliteInfoSourceProxy::~QNmeaSatelliteInfoSourceProxy()
+{
+ m_outDevice->close();
+ delete m_outDevice;
+}
+
+QGeoSatelliteInfoSource *QNmeaSatelliteInfoSourceProxy::source() const
+{
+ return m_source;
+}
+
+void QNmeaSatelliteInfoSourceProxy::feedBytes(const QByteArray &bytes)
+{
+ m_outDevice->write(bytes);
}
diff --git a/tests/auto/qnmeapositioninfosource/qnmeapositioninfosourceproxyfactory.h b/tests/auto/utils/qnmeaproxyfactory.h
index d740f9b5..2cd2e262 100644
--- a/tests/auto/qnmeapositioninfosource/qnmeapositioninfosourceproxyfactory.h
+++ b/tests/auto/utils/qnmeaproxyfactory.h
@@ -26,17 +26,19 @@
**
****************************************************************************/
-#ifndef QNMEAPOSITIONINFOSOURCEPROXYFACTORY_H
-#define QNMEAPOSITIONINFOSOURCEPROXYFACTORY_H
+#ifndef QNMEAPROXYFACTORY_H
+#define QNMEAPROXYFACTORY_H
#include <QObject>
-#include <QtPositioning/qnmeapositioninfosource.h>
-
QT_BEGIN_NAMESPACE
class QTcpServer;
+class QTcpSocket;
class QIODevice;
class QNmeaPositionInfoSource;
+class QNmeaSatelliteInfoSource;
+class QGeoPositionInfoSource;
+class QGeoSatelliteInfoSource;
QT_END_NAMESPACE
class QNmeaPositionInfoSourceProxy : public QObject
@@ -59,16 +61,35 @@ private:
QIODevice *m_outDevice;
};
-class QNmeaPositionInfoSourceProxyFactory : public QObject
+class QNmeaSatelliteInfoSourceProxy : public QObject
{
Q_OBJECT
public:
- QNmeaPositionInfoSourceProxyFactory();
+ QNmeaSatelliteInfoSourceProxy(QNmeaSatelliteInfoSource *source, QIODevice *outDevice);
+ ~QNmeaSatelliteInfoSourceProxy();
+
+ QGeoSatelliteInfoSource *source() const;
+
+ void feedBytes(const QByteArray &bytes);
+
+private:
+ QNmeaSatelliteInfoSource *m_source;
+ QIODevice *m_outDevice;
+};
+
+class QNmeaProxyFactory : public QObject
+{
+ Q_OBJECT
+public:
+ QNmeaProxyFactory();
// proxy is created as child of source
- QNmeaPositionInfoSourceProxy *createProxy(QNmeaPositionInfoSource *source);
+ QNmeaPositionInfoSourceProxy *createPositionInfoSourceProxy(QNmeaPositionInfoSource *source);
+ QNmeaSatelliteInfoSourceProxy *createSatelliteInfoSourceProxy(QNmeaSatelliteInfoSource *source);
private:
+ QIODevice *createServerConnection(QTcpSocket *client);
+
QTcpServer *m_server;
};