void TestQGeoSatelliteInfoSource::requestUpdateAfterStartUpdates_ZeroInterval() { CHECK_SOURCE_VALID; QSignalSpy spyView(m_source, SIGNAL(satellitesInViewUpdated(const QList<QGeoSatelliteInfo> &))); QSignalSpy spyUse(m_source, SIGNAL(satellitesInUseUpdated(const QList<QGeoSatelliteInfo> &))); QSignalSpy spyTimeout(m_source, SIGNAL(requestTimeout())); m_source->setUpdateInterval(0); m_source->startUpdates(); QTRY_VERIFY_WITH_TIMEOUT((spyView.count() == 1) && (spyUse.count() == 1), MAX_WAITING_TIME); spyView.clear(); spyUse.clear(); m_source->requestUpdate(7000); QTRY_VERIFY_WITH_TIMEOUT((spyView.count() == 1) && (spyUse.count() == 1) && (spyTimeout.count() == 0), 7000); spyView.clear(); spyUse.clear(); QTRY_VERIFY_WITH_TIMEOUT((spyView.count() == 1) && (spyUse.count() == 1), 12000); m_source->stopUpdates(); }
void TestQGeoPositionInfoSource::requestUpdateBeforeStartUpdates_SmallInterval() { CHECK_SOURCE_VALID; #if defined(Q_WS_MAEMO_6) || defined(Q_OS_SYMBIAN) QSKIP("Real GPS not suitable for autotesting, skipping the test.", SkipAll); #endif QSignalSpy spyUpdate(m_source, SIGNAL(positionUpdated(const QGeoPositionInfo&))); QSignalSpy spyTimeout(m_source, SIGNAL(updateTimeout())); m_source->requestUpdate(7000); m_source->setUpdateInterval(10000); m_source->startUpdates(); EXPECT_FAIL_WINCE_SEE_MOBILITY_337; QTRY_VERIFY_WITH_TIMEOUT((spyUpdate.count() > 0) && (spyTimeout.count() == 0), 7000); spyUpdate.clear(); EXPECT_FAIL_WINCE_SEE_MOBILITY_337; QTRY_VERIFY_WITH_TIMEOUT((spyUpdate.count() > 0) && (spyTimeout.count() == 0), 20000); m_source->stopUpdates(); }
void TestQGeoPositionInfoSource::requestUpdateAfterStartUpdates_SmallInterval() { CHECK_SOURCE_VALID; QSignalSpy spyUpdate(m_source, SIGNAL(positionUpdated(const QGeoPositionInfo&))); QSignalSpy spyTimeout(m_source, SIGNAL(updateTimeout())); m_source->setUpdateInterval(10000); m_source->startUpdates(); EXPECT_FAIL_WINCE_SEE_MOBILITY_337; QTRY_VERIFY_WITH_TIMEOUT((spyUpdate.count() == 1) && (spyTimeout.count() == 0), 20000); spyUpdate.clear(); m_source->requestUpdate(7000); EXPECT_FAIL_WINCE_SEE_MOBILITY_337; QTRY_VERIFY_WITH_TIMEOUT((spyUpdate.count() == 1) && (spyTimeout.count() == 0), 7000); spyUpdate.clear(); EXPECT_FAIL_WINCE_SEE_MOBILITY_337; QTRY_VERIFY_WITH_TIMEOUT((spyUpdate.count() == 1) && (spyTimeout.count() == 0), 20000); m_source->stopUpdates(); }
void TestQGeoPositionInfoSource::requestUpdateBeforeStartUpdates_ZeroInterval() { CHECK_SOURCE_VALID; QSignalSpy spyUpdate(m_source, SIGNAL(positionUpdated(const QGeoPositionInfo&))); QSignalSpy spyTimeout(m_source, SIGNAL(updateTimeout())); m_source->requestUpdate(7000); m_source->setUpdateInterval(0); m_source->startUpdates(); EXPECT_FAIL_WINCE_SEE_MOBILITY_337; QTRY_VERIFY_WITH_TIMEOUT((spyUpdate.count() >= 2) && (spyTimeout.count() == 0), 14000); spyUpdate.clear(); QTest::qWait(7000); EXPECT_FAIL_WINCE_SEE_MOBILITY_337; QCOMPARE(spyTimeout.count(), 0); m_source->stopUpdates(); }
void tst_QNmeaPositionInfoSource::requestUpdate_after_start() { QNmeaPositionInfoSource source(m_mode); QNmeaPositionInfoSourceProxyFactory factory; QNmeaPositionInfoSourceProxy *proxy = static_cast<QNmeaPositionInfoSourceProxy*>(factory.createProxy(&source)); QSignalSpy spyUpdate(proxy->source(), SIGNAL(positionUpdated(QGeoPositionInfo))); QSignalSpy spyTimeout(proxy->source(), SIGNAL(updateTimeout())); // Start updates with 500ms interval and requestUpdate() with 100ms // timeout. Feed an update, and it should be emitted immediately due to // the requestUpdate(). The update should not be emitted again after that // (i.e. the startUpdates() interval should not cause it to be re-emitted). QDateTime dt = QDateTime::currentDateTime().toUTC(); proxy->source()->setUpdateInterval(500); proxy->source()->startUpdates(); proxy->source()->requestUpdate(100); proxy->feedUpdate(dt); QTRY_COMPARE(spyUpdate.count(), 1); QCOMPARE(spyUpdate[0][0].value<QGeoPositionInfo>().timestamp(), dt); QCOMPARE(spyTimeout.count(), 0); spyUpdate.clear(); // Update has been emitted for requestUpdate(), shouldn't be emitted for startUpdates() QTRY_COMPARE_WITH_TIMEOUT(spyUpdate.count(), 0, 1000); }
void tst_QNmeaPositionInfoSource::lastKnownPosition() { QNmeaPositionInfoSource source(m_mode); QNmeaPositionInfoSourceProxyFactory factory; QNmeaPositionInfoSourceProxy *proxy = static_cast<QNmeaPositionInfoSourceProxy*>(factory.createProxy(&source)); QCOMPARE(proxy->source()->lastKnownPosition(), QGeoPositionInfo()); // source may need requestUpdate() or startUpdates() to be called to // trigger reading of data channel QSignalSpy spyTimeout(proxy->source(), SIGNAL(updateTimeout())); proxy->source()->requestUpdate(proxy->source()->minimumUpdateInterval()); QTRY_COMPARE(spyTimeout.count(), 1); // If an update is received and startUpdates() or requestUpdate() hasn't // been called, it should still be available through lastKnownPosition() QDateTime dt = QDateTime::currentDateTime().toUTC(); proxy->feedUpdate(dt); QTRY_COMPARE(proxy->source()->lastKnownPosition().timestamp(), dt); QList<QDateTime> dateTimes = createDateTimes(5); for (int i=0; i<dateTimes.count(); i++) { proxy->source()->requestUpdate(); proxy->feedUpdate(dateTimes[i]); QTRY_COMPARE(proxy->source()->lastKnownPosition().timestamp(), dateTimes[i]); } proxy->source()->startUpdates(); dateTimes = createDateTimes(5); for (int i=0; i<dateTimes.count(); i++) { proxy->feedUpdate(dateTimes[i]); QTRY_COMPARE(proxy->source()->lastKnownPosition().timestamp(), dateTimes[i]); } }
void TestQGeoSatelliteInfoSource::requestUpdate_timeoutLessThanMinimumInterval() { CHECK_SOURCE_VALID; QSignalSpy spyTimeout(m_source, SIGNAL(requestTimeout())); m_source->requestUpdate(1); QTRY_COMPARE_WITH_TIMEOUT(spyTimeout.count(), 1, 1000); }
// TC_ID_3_x_2 : Create position source and call requestUpdate with a timeout less than // minimumupdateInterval void TestQGeoPositionInfoSource::requestUpdate_timeoutLessThanMinimumInterval() { CHECK_SOURCE_VALID; QSignalSpy spyTimeout(m_source, SIGNAL(updateTimeout())); m_source->requestUpdate(1); EXPECT_FAIL_WINCE_SEE_MOBILITY_337; QTRY_COMPARE_WITH_TIMEOUT(spyTimeout.count(), 1, 1000); }
// TC_ID_3_x_1 : Create position source and call requestUpdate with valid timeout value void TestQGeoPositionInfoSource::requestUpdate_validTimeout() { CHECK_SOURCE_VALID; QSignalSpy spyUpdate(m_source, SIGNAL(positionUpdated(const QGeoPositionInfo&))); QSignalSpy spyTimeout(m_source, SIGNAL(updateTimeout())); m_source->requestUpdate(7000); EXPECT_FAIL_WINCE_SEE_MOBILITY_337; QTRY_VERIFY_WITH_TIMEOUT((spyUpdate.count() > 0) && (spyTimeout.count() == 0), 7000); }
void TestQGeoSatelliteInfoSource::requestUpdate_validTimeout() { CHECK_SOURCE_VALID; QSignalSpy spyView(m_source, SIGNAL(satellitesInViewUpdated(const QList<QGeoSatelliteInfo> &))); QSignalSpy spyUse(m_source, SIGNAL(satellitesInUseUpdated(const QList<QGeoSatelliteInfo> &))); QSignalSpy spyTimeout(m_source, SIGNAL(requestTimeout())); m_source->requestUpdate(7000); QTRY_VERIFY_WITH_TIMEOUT( (spyView.count() == 1) && (spyUse.count() == 1 && (spyTimeout.count()) == 0), 7000); }
void TestQGeoPositionInfoSource::requestUpdate_defaultTimeout() { CHECK_SOURCE_VALID; #if defined(Q_WS_MAEMO_6) || defined(Q_OS_SYMBIAN) QSKIP("Real GPS not suitable for autotesting, skipping the test.", SkipAll); #endif QSignalSpy spyUpdate(m_source, SIGNAL(positionUpdated(const QGeoPositionInfo&))); QSignalSpy spyTimeout(m_source, SIGNAL(updateTimeout())); m_source->requestUpdate(0); EXPECT_FAIL_WINCE_SEE_MOBILITY_337; // S60 emulator fail QTRY_VERIFY_WITH_TIMEOUT((spyUpdate.count() > 0) && (spyTimeout.count() == 0), 7000); }
void TestQGeoSatelliteInfoSource::requestUpdate_overlappingCallsWithTimeout() { CHECK_SOURCE_VALID; QSignalSpy spyView(m_source, SIGNAL(satellitesInViewUpdated(const QList<QGeoSatelliteInfo> &))); QSignalSpy spyUse(m_source, SIGNAL(satellitesInUseUpdated(const QList<QGeoSatelliteInfo> &))); QSignalSpy spyTimeout(m_source, SIGNAL(requestTimeout())); m_source->requestUpdate(0); m_source->requestUpdate(1); QTRY_COMPARE_WITH_TIMEOUT(spyTimeout.count(), 0, 7000); QTRY_VERIFY_WITH_TIMEOUT((spyView.count() == 1) && (spyUse.count() == 1), 7000); }
void tst_QNmeaPositionInfoSource::requestUpdate() { QNmeaPositionInfoSource source(m_mode); QNmeaPositionInfoSourceProxyFactory factory; QNmeaPositionInfoSourceProxy *proxy = static_cast<QNmeaPositionInfoSourceProxy*>(factory.createProxy(&source)); QSignalSpy spyUpdate(proxy->source(), SIGNAL(positionUpdated(QGeoPositionInfo))); QSignalSpy spyTimeout(proxy->source(), SIGNAL(updateTimeout())); QDateTime dt; proxy->source()->requestUpdate(100); QTRY_COMPARE(spyTimeout.count(), 1); spyTimeout.clear(); dt = QDateTime::currentDateTime().toUTC(); proxy->feedUpdate(dt); proxy->source()->requestUpdate(); QTRY_COMPARE(spyUpdate.count(), 1); QCOMPARE(spyUpdate[0][0].value<QGeoPositionInfo>().timestamp(), dt); QCOMPARE(spyTimeout.count(), 0); spyUpdate.clear(); // delay the update and expect it to be emitted after 300ms dt = QDateTime::currentDateTime().toUTC(); proxy->source()->requestUpdate(1000); QTest::qWait(300); proxy->feedUpdate(dt); QTRY_COMPARE(spyUpdate.count(), 1); QCOMPARE(spyUpdate[0][0].value<QGeoPositionInfo>().timestamp(), dt); QCOMPARE(spyTimeout.count(), 0); spyUpdate.clear(); // delay the update and expect updateTimeout() to be emitted dt = QDateTime::currentDateTime().toUTC(); proxy->source()->requestUpdate(500); QTest::qWait(1000); proxy->feedUpdate(dt); QCOMPARE(spyTimeout.count(), 1); QCOMPARE(spyUpdate.count(), 0); spyUpdate.clear(); }
void tst_QNmeaPositionInfoSource::startUpdates_withTimeout() { QNmeaPositionInfoSource source(m_mode); QNmeaPositionInfoSourceProxyFactory factory; QNmeaPositionInfoSourceProxy *proxy = static_cast<QNmeaPositionInfoSourceProxy*>(factory.createProxy(&source)); QSignalSpy spyUpdate(proxy->source(), SIGNAL(positionUpdated(QGeoPositionInfo))); QSignalSpy spyTimeout(proxy->source(), SIGNAL(updateTimeout())); proxy->source()->setUpdateInterval(1000); proxy->source()->startUpdates(); QDateTime dt = QDateTime::currentDateTime().toUTC(); if (m_mode == QNmeaPositionInfoSource::SimulationMode) { // the first sentence primes the simulation proxy->feedBytes(QLocationTestUtils::createRmcSentence(dt).toLatin1()); proxy->feedBytes(QLocationTestUtils::createRmcSentence(dt.addMSecs(10)).toLatin1()); proxy->feedBytes(QLocationTestUtils::createRmcSentence(dt.addMSecs(1100)).toLatin1()); proxy->feedBytes(QLocationTestUtils::createRmcSentence(dt.addMSecs(2200)).toLatin1()); proxy->feedBytes(QLocationTestUtils::createRmcSentence(dt.addSecs(9)).toLatin1()); QTime t; t.start(); for (int j = 1; j < 4; ++j) { QTRY_COMPARE(spyUpdate.count(), j); QCOMPARE(spyTimeout.count(), 0); int time = t.elapsed(); QVERIFY((time > j*1000 - 300) && (time < j*1000 + 300)); } spyUpdate.clear(); QTRY_VERIFY_WITH_TIMEOUT((spyUpdate.count() == 0) && (spyTimeout.count() == 1), 7500); spyTimeout.clear(); QTRY_VERIFY_WITH_TIMEOUT((spyUpdate.count() == 1) && (spyTimeout.count() == 0), 7500); } else { // dt + 900 QTRY_VERIFY(spyUpdate.count() == 0 && spyTimeout.count() == 0); proxy->feedBytes(QLocationTestUtils::createRmcSentence(dt.addSecs(1)).toLatin1()); // dt + 1200 QTRY_VERIFY(spyUpdate.count() == 1 && spyTimeout.count() == 0); spyUpdate.clear(); // dt + 1900 QTRY_VERIFY(spyUpdate.count() == 0 && spyTimeout.count() == 0); proxy->feedBytes(QLocationTestUtils::createRmcSentence(dt.addSecs(2)).toLatin1()); // dt + 2200 QTRY_VERIFY(spyUpdate.count() == 1 && spyTimeout.count() == 0); spyUpdate.clear(); // dt + 2900 QTRY_VERIFY(spyUpdate.count() == 0 && spyTimeout.count() == 0); proxy->feedBytes(QLocationTestUtils::createRmcSentence(dt.addSecs(3)).toLatin1()); // dt + 3200 QTRY_VERIFY(spyUpdate.count() == 1 && spyTimeout.count() == 0); spyUpdate.clear(); // dt + 6900 QTRY_VERIFY(spyUpdate.count() == 0 && spyTimeout.count() == 1); spyTimeout.clear(); proxy->feedBytes(QLocationTestUtils::createRmcSentence(dt.addSecs(7)).toLatin1()); // dt + 7200 QTRY_VERIFY(spyUpdate.count() == 1 && spyTimeout.count() == 0); spyUpdate.clear(); } }