diff options
Diffstat (limited to 'tests/auto/qgeosatelliteinfosource/testqgeosatelliteinfosource.cpp')
-rw-r--r-- | tests/auto/qgeosatelliteinfosource/testqgeosatelliteinfosource.cpp | 117 |
1 files changed, 105 insertions, 12 deletions
diff --git a/tests/auto/qgeosatelliteinfosource/testqgeosatelliteinfosource.cpp b/tests/auto/qgeosatelliteinfosource/testqgeosatelliteinfosource.cpp index c825cdad..d80385c8 100644 --- a/tests/auto/qgeosatelliteinfosource/testqgeosatelliteinfosource.cpp +++ b/tests/auto/qgeosatelliteinfosource/testqgeosatelliteinfosource.cpp @@ -46,6 +46,7 @@ #include "../utils/qlocationtestutils_p.h" Q_DECLARE_METATYPE(QList<QGeoSatelliteInfo>) +Q_DECLARE_METATYPE(QGeoSatelliteInfoSource::Error) #define MAX_WAITING_TIME 50000 @@ -90,6 +91,8 @@ protected: TestQGeoSatelliteInfoSource::TestQGeoSatelliteInfoSource(QObject *parent) : QObject(parent) { + qRegisterMetaType<QGeoSatelliteInfoSource::Error>(); + m_testingDefaultSource = false; } @@ -167,23 +170,26 @@ void TestQGeoSatelliteInfoSource::createDefaultSource() { QObject *parent = new QObject; QGeoSatelliteInfoSource *source = QGeoSatelliteInfoSource::createDefaultSource(parent); - // Satellite sources are available when SATELLITE_SOURCE_AVAILABLE is defined -#if defined(SATELLITE_SOURCE_AVAILABLE) - QVERIFY(source != 0); -#else - QVERIFY(source == 0); -#endif + + // Check that default satellite source is successfully created. + if (!QGeoSatelliteInfoSource::availableSources().isEmpty()) + QVERIFY(source); + else + QVERIFY(!source); + delete parent; } void TestQGeoSatelliteInfoSource::createDefaultSource_noParent() { QGeoSatelliteInfoSource *source = QGeoSatelliteInfoSource::createDefaultSource(0); -#if defined(SATELLITE_SOURCE_AVAILABLE) - QVERIFY(source != 0); -#else - QVERIFY(source == 0); -#endif + + // Check that default satellite source is successfully created. + if (!QGeoSatelliteInfoSource::availableSources().isEmpty()) + QVERIFY(source); + else + QVERIFY(!source); + delete source; } @@ -246,10 +252,16 @@ void TestQGeoSatelliteInfoSource::startUpdates_testIntervals() QSignalSpy spyUse(m_source, SIGNAL(satellitesInUseUpdated(QList<QGeoSatelliteInfo>))); QSignalSpy timeout(m_source, SIGNAL(requestTimeout())); + QSignalSpy errorSpy(m_source, SIGNAL(error(QGeoSatelliteInfoSource::Error))); + m_source->setUpdateInterval(7000); int interval = m_source->updateInterval(); m_source->startUpdates(); + + if (!errorSpy.isEmpty()) + QSKIP("Error starting satellite updates."); + QTRY_VERIFY_WITH_TIMEOUT((spyView.count() == 1) && (spyUse.count() == 1), 9500); for (int i = 0; i < 6; i++) { QTRY_VERIFY_WITH_TIMEOUT((spyView.count() == 1) && (spyUse.count() == 1) && (timeout.count() == 0), (interval*2)); @@ -275,10 +287,15 @@ void TestQGeoSatelliteInfoSource::startUpdates_testIntervalChangesWhileRunning() QSignalSpy spyUse(m_source, SIGNAL(satellitesInUseUpdated(QList<QGeoSatelliteInfo>))); QSignalSpy timeout(m_source, SIGNAL(requestTimeout())); + QSignalSpy errorSpy(m_source, SIGNAL(error(QGeoSatelliteInfoSource::Error))); + m_source->setUpdateInterval(0); m_source->startUpdates(); m_source->setUpdateInterval(0); + if (!errorSpy.isEmpty()) + QSKIP("Error starting satellite updates."); + QTRY_VERIFY_WITH_TIMEOUT((spyView.count() > 0) && (spyUse.count() > 0), 7000); QCOMPARE(timeout.count(), 0); spyView.clear(); @@ -330,7 +347,13 @@ void TestQGeoSatelliteInfoSource::startUpdates_testDefaultInterval() QSignalSpy spyUse(m_source, SIGNAL(satellitesInUseUpdated(QList<QGeoSatelliteInfo>))); QSignalSpy timeout(m_source, SIGNAL(requestTimeout())); + QSignalSpy errorSpy(m_source, SIGNAL(error(QGeoSatelliteInfoSource::Error))); + m_source->startUpdates(); + + if (!errorSpy.isEmpty()) + QSKIP("Error starting satellite updates."); + for (int i = 0; i < 3; i++) { QTRY_VERIFY_WITH_TIMEOUT( (spyView.count() > 0 ) && (spyUse.count() > 0) && (timeout.count() == 0), 7000); spyView.clear(); @@ -347,9 +370,14 @@ void TestQGeoSatelliteInfoSource::startUpdates_testZeroInterval() QSignalSpy spyUse(m_source, SIGNAL(satellitesInUseUpdated(QList<QGeoSatelliteInfo>))); QSignalSpy timeout(m_source, SIGNAL(requestTimeout())); + QSignalSpy errorSpy(m_source, SIGNAL(error(QGeoSatelliteInfoSource::Error))); m_source->setUpdateInterval(0); m_source->startUpdates(); + + if (!errorSpy.isEmpty()) + QSKIP("Error starting satellite updates."); + for (int i = 0; i < 3; i++) { QTRY_VERIFY_WITH_TIMEOUT( (spyView.count() > 0 ) && (spyUse.count() > 0) && (timeout.count() == 0), 7000); spyView.clear(); @@ -365,9 +393,14 @@ void TestQGeoSatelliteInfoSource::startUpdates_moreThanOnce() SIGNAL(satellitesInViewUpdated(QList<QGeoSatelliteInfo>))); QSignalSpy spyUse(m_source, SIGNAL(satellitesInUseUpdated(QList<QGeoSatelliteInfo>))); + QSignalSpy errorSpy(m_source, SIGNAL(error(QGeoSatelliteInfoSource::Error))); + m_source->setUpdateInterval(0); m_source->startUpdates(); + if (!errorSpy.isEmpty()) + QSKIP("Error starting satellite updates."); + m_source->startUpdates(); // check there is no crash QTRY_VERIFY_WITH_TIMEOUT((spyView.count() > 0) && (spyUse.count() > 0), MAX_WAITING_TIME); @@ -379,16 +412,20 @@ void TestQGeoSatelliteInfoSource::startUpdates_moreThanOnce() void TestQGeoSatelliteInfoSource::stopUpdates() { - CHECK_SOURCE_VALID; QSignalSpy spyView(m_source, SIGNAL(satellitesInViewUpdated(QList<QGeoSatelliteInfo>))); QSignalSpy spyUse(m_source, SIGNAL(satellitesInUseUpdated(QList<QGeoSatelliteInfo>))); + QSignalSpy errorSpy(m_source, SIGNAL(error(QGeoSatelliteInfoSource::Error))); + m_source->setUpdateInterval(10000); m_source->startUpdates(); + if (!errorSpy.isEmpty()) + QSKIP("Error starting satellite updates."); + for (int i = 0; i < 2; i++) { QTRY_VERIFY_WITH_TIMEOUT((spyView.count() == 1) && (spyUse.count() == 1), 12000); spyView.clear(); @@ -415,7 +452,13 @@ void TestQGeoSatelliteInfoSource::requestUpdate() QSignalSpy spy(m_source, SIGNAL(requestTimeout())); QSignalSpy spyView(m_source, SIGNAL(satellitesInViewUpdated(QList<QGeoSatelliteInfo>))); + QSignalSpy errorSpy(m_source, SIGNAL(error(QGeoSatelliteInfoSource::Error))); + m_source->requestUpdate(timeout); + + if (!errorSpy.isEmpty()) + QSKIP("Error starting satellite updates."); + // Geoclue may deliver update instantly if there is a satellite fix QTRY_VERIFY_WITH_TIMEOUT(!spy.isEmpty() || !spyView.isEmpty(), 10); } @@ -436,9 +479,13 @@ void TestQGeoSatelliteInfoSource::requestUpdate_validTimeout() QSignalSpy spyUse(m_source, SIGNAL(satellitesInUseUpdated(QList<QGeoSatelliteInfo>))); QSignalSpy spyTimeout(m_source, SIGNAL(requestTimeout())); + QSignalSpy errorSpy(m_source, SIGNAL(error(QGeoSatelliteInfoSource::Error))); m_source->requestUpdate(7000); + if (!errorSpy.isEmpty()) + QSKIP("Error starting satellite updates."); + QTRY_VERIFY_WITH_TIMEOUT( (spyView.count() == 1) && (spyUse.count() == 1 && (spyTimeout.count()) == 0), 7000); } @@ -452,9 +499,13 @@ void TestQGeoSatelliteInfoSource::requestUpdate_defaultTimeout() QSignalSpy spyUse(m_source, SIGNAL(satellitesInUseUpdated(QList<QGeoSatelliteInfo>))); QSignalSpy spyTimeout(m_source, SIGNAL(requestTimeout())); + QSignalSpy errorSpy(m_source, SIGNAL(error(QGeoSatelliteInfoSource::Error))); m_source->requestUpdate(0); + if (!errorSpy.isEmpty()) + QSKIP("Error starting satellite updates."); + QTRY_VERIFY_WITH_TIMEOUT( (spyView.count() == 1) && (spyUse.count() == 1 && (spyTimeout.count()) == 0), MAX_WAITING_TIME); @@ -465,8 +516,13 @@ void TestQGeoSatelliteInfoSource::requestUpdate_timeoutLessThanMinimumInterval() CHECK_SOURCE_VALID; QSignalSpy spyTimeout(m_source, SIGNAL(requestTimeout())); + QSignalSpy errorSpy(m_source, SIGNAL(error(QGeoSatelliteInfoSource::Error))); + m_source->requestUpdate(1); + if (!errorSpy.isEmpty()) + QSKIP("Error starting satellite updates."); + QTRY_COMPARE_WITH_TIMEOUT(spyTimeout.count(), 1, 1000); } @@ -478,9 +534,13 @@ void TestQGeoSatelliteInfoSource::requestUpdate_repeatedCalls() SIGNAL(satellitesInViewUpdated(QList<QGeoSatelliteInfo>))); QSignalSpy spyUse(m_source, SIGNAL(satellitesInUseUpdated(QList<QGeoSatelliteInfo>))); + QSignalSpy errorSpy(m_source, SIGNAL(error(QGeoSatelliteInfoSource::Error))); m_source->requestUpdate(7000); + if (!errorSpy.isEmpty()) + QSKIP("Error starting satellite updates."); + QTRY_VERIFY_WITH_TIMEOUT((spyView.count() == 1) && (spyUse.count() == 1), 7000); spyView.clear(); spyUse.clear(); @@ -498,8 +558,13 @@ void TestQGeoSatelliteInfoSource::requestUpdate_overlappingCalls() SIGNAL(satellitesInViewUpdated(QList<QGeoSatelliteInfo>))); QSignalSpy spyUse(m_source, SIGNAL(satellitesInUseUpdated(QList<QGeoSatelliteInfo>))); + QSignalSpy errorSpy(m_source, SIGNAL(error(QGeoSatelliteInfoSource::Error))); m_source->requestUpdate(7000); + + if (!errorSpy.isEmpty()) + QSKIP("Error starting satellite updates."); + m_source->requestUpdate(7000); QTRY_VERIFY_WITH_TIMEOUT((spyView.count() == 1) && (spyUse.count() == 1), 7000); @@ -515,8 +580,13 @@ void TestQGeoSatelliteInfoSource::requestUpdate_overlappingCallsWithTimeout() SIGNAL(satellitesInUseUpdated(QList<QGeoSatelliteInfo>))); QSignalSpy spyTimeout(m_source, SIGNAL(requestTimeout())); + QSignalSpy errorSpy(m_source, SIGNAL(error(QGeoSatelliteInfoSource::Error))); m_source->requestUpdate(0); + + if (!errorSpy.isEmpty()) + QSKIP("Error starting satellite updates."); + m_source->requestUpdate(1); QTRY_COMPARE_WITH_TIMEOUT(spyTimeout.count(), 0, 7000); @@ -533,10 +603,14 @@ void TestQGeoSatelliteInfoSource::requestUpdateAfterStartUpdates_ZeroInterval() QSignalSpy spyUse(m_source, SIGNAL(satellitesInUseUpdated(QList<QGeoSatelliteInfo>))); QSignalSpy spyTimeout(m_source, SIGNAL(requestTimeout())); + QSignalSpy errorSpy(m_source, SIGNAL(error(QGeoSatelliteInfoSource::Error))); m_source->setUpdateInterval(0); m_source->startUpdates(); + if (!errorSpy.isEmpty()) + QSKIP("Error starting satellite updates."); + QTRY_VERIFY_WITH_TIMEOUT((spyView.count() == 1) && (spyUse.count() == 1), MAX_WAITING_TIME); spyView.clear(); spyUse.clear(); @@ -563,9 +637,14 @@ void TestQGeoSatelliteInfoSource::requestUpdateAfterStartUpdates_SmallInterval() QSignalSpy spyUse(m_source, SIGNAL(satellitesInUseUpdated(QList<QGeoSatelliteInfo>))); QSignalSpy spyTimeout(m_source, SIGNAL(requestTimeout())); + QSignalSpy errorSpy(m_source, SIGNAL(error(QGeoSatelliteInfoSource::Error))); + m_source->setUpdateInterval(10000); m_source->requestUpdate(7000); + if (!errorSpy.isEmpty()) + QSKIP("Error starting satellite updates."); + m_source->startUpdates(); QTRY_VERIFY_WITH_TIMEOUT((spyView.count() > 0) && (spyUse.count() > 0) @@ -587,9 +666,13 @@ void TestQGeoSatelliteInfoSource::requestUpdateBeforeStartUpdates_ZeroInterval() QSignalSpy spyUse(m_source, SIGNAL(satellitesInUseUpdated(QList<QGeoSatelliteInfo>))); QSignalSpy timeout(m_source, SIGNAL(requestTimeout())); + QSignalSpy errorSpy(m_source, SIGNAL(error(QGeoSatelliteInfoSource::Error))); m_source->requestUpdate(7000); + if (!errorSpy.isEmpty()) + QSKIP("Error starting satellite updates."); + m_source->setUpdateInterval(0); m_source->startUpdates(); @@ -612,9 +695,13 @@ void TestQGeoSatelliteInfoSource::requestUpdateBeforeStartUpdates_SmallInterval( QSignalSpy spyUse(m_source, SIGNAL(satellitesInUseUpdated(QList<QGeoSatelliteInfo>))); QSignalSpy timeout(m_source, SIGNAL(requestTimeout())); + QSignalSpy errorSpy(m_source, SIGNAL(error(QGeoSatelliteInfoSource::Error))); m_source->requestUpdate(7000); + if (!errorSpy.isEmpty()) + QSKIP("Error starting satellite updates."); + m_source->setUpdateInterval(10000); m_source->startUpdates(); @@ -657,6 +744,9 @@ void TestQGeoSatelliteInfoSource::removeSlotForSatellitesInUseUpdated() m_source->requestUpdate(7000); + if (m_source->error() != QGeoSatelliteInfoSource::NoError) + QSKIP("Error starting satellite updates."); + QTRY_VERIFY_WITH_TIMEOUT((m_testSlot2Called == true), 7000); } @@ -673,6 +763,9 @@ void TestQGeoSatelliteInfoSource::removeSlotForSatellitesInViewUpdated() m_source->requestUpdate(7000); + if (m_source->error() != QGeoSatelliteInfoSource::NoError) + QSKIP("Error starting satellite updates."); + QTRY_VERIFY_WITH_TIMEOUT((m_testSlot2Called == true), 7000); } |