summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorPaolo Angelelli <paolo.angelelli@qt.io>2018-06-03 17:22:06 +0200
committerPaolo Angelelli <paolo.angelelli@qt.io>2018-06-21 11:17:44 +0000
commit2462679de35b4d7b4c333876b9d372ac4bb2712a (patch)
tree4af86bd30cd805528b35bc5eda580df6552c1de9 /tests
parent06c0fc0cf9740efd71e2a4bc62692565ace4b1e4 (diff)
downloadqtlocation-2462679de35b4d7b4c333876b9d372ac4bb2712a.tar.gz
Combine NMEA sentences - Live mode
This patch combines multiple nmea sentences related to the same update, preventing the push of multiple separate updates with the same timestamp. Task-number: QTBUG-64699 Change-Id: I082cd46924afe0f00e510dc059ff8594373b1e67 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/qgeopositioninfosource/testqgeopositioninfosource.cpp4
-rw-r--r--tests/auto/qnmeapositioninfosource/tst_qnmeapositioninfosource.cpp15
-rw-r--r--tests/auto/qnmeapositioninfosource/tst_qnmeapositioninfosource.h8
3 files changed, 14 insertions, 13 deletions
diff --git a/tests/auto/qgeopositioninfosource/testqgeopositioninfosource.cpp b/tests/auto/qgeopositioninfosource/testqgeopositioninfosource.cpp
index fa073308..ce7b4d66 100644
--- a/tests/auto/qgeopositioninfosource/testqgeopositioninfosource.cpp
+++ b/tests/auto/qgeopositioninfosource/testqgeopositioninfosource.cpp
@@ -482,12 +482,12 @@ void TestQGeoPositionInfoSource::startUpdates_testIntervalChangesWhileRunning()
m_source->setUpdateInterval(0);
- QTRY_VERIFY_WITH_TIMEOUT((spy.count() == 1) && (timeout.count() == 0), 7000);
+ QTRY_VERIFY_WITH_TIMEOUT((spy.count() > 0) && (timeout.count() == 0), 7000);
spy.clear();
m_source->setUpdateInterval(0);
- QTRY_VERIFY_WITH_TIMEOUT((spy.count() == 1) && (timeout.count() == 0), 7000);
+ QTRY_VERIFY_WITH_TIMEOUT((spy.count() > 0) && (timeout.count() == 0), 7000);
spy.clear();
m_source->stopUpdates();
diff --git a/tests/auto/qnmeapositioninfosource/tst_qnmeapositioninfosource.cpp b/tests/auto/qnmeapositioninfosource/tst_qnmeapositioninfosource.cpp
index 886d7009..37fe7abc 100644
--- a/tests/auto/qnmeapositioninfosource/tst_qnmeapositioninfosource.cpp
+++ b/tests/auto/qnmeapositioninfosource/tst_qnmeapositioninfosource.cpp
@@ -147,13 +147,14 @@ void tst_QNmeaPositionInfoSource::lastKnownPosition()
QList<QDateTime> dateTimes = createDateTimes(5);
for (int i=0; i<dateTimes.count(); i++) {
- proxy->source()->requestUpdate();
+ proxy->source()->requestUpdate(); // Irrelevant for this test
proxy->feedUpdate(dateTimes[i]);
QTRY_COMPARE(proxy->source()->lastKnownPosition().timestamp(), dateTimes[i]);
}
proxy->source()->startUpdates();
- dateTimes = createDateTimes(5);
+ // if dateTimes are older than before, they will be ignored.
+ dateTimes = createDateTimes(dateTimes.last().addMSecs(100), 5);
for (int i=0; i<dateTimes.count(); i++) {
proxy->feedUpdate(dateTimes[i]);
QTRY_COMPARE(proxy->source()->lastKnownPosition().timestamp(), dateTimes[i]);
@@ -358,8 +359,10 @@ void tst_QNmeaPositionInfoSource::startUpdates_waitForValidDateTime()
QObject::connect(proxy->source(), &QNmeaPositionInfoSource::positionUpdated, [](const QGeoPositionInfo &info) {
qDebug() << info.timestamp();
});
+
proxy->source()->startUpdates();
proxy->feedBytes(bytes);
+ QTest::qWait(1000); // default push delay is 20ms
QTRY_COMPARE(spy.count(), dateTimes.count());
for (int i=0; i<spy.count(); i++) {
@@ -397,6 +400,7 @@ void tst_QNmeaPositionInfoSource::startUpdates_waitForValidDateTime_data()
bytes += QLocationTestUtils::createGgaSentence(dt.addMSecs(100).time()).toLatin1();
bytes += QLocationTestUtils::createRmcSentence(dt.addMSecs(200)).toLatin1();
bytes += QLocationTestUtils::createGgaSentence(dt.addMSecs(300).time()).toLatin1();
+ // The first GGA does not have date, and there's no cached date to inject, so that update will be invalid
QTest::newRow("Feed GGA,RMC,GGA; expect RMC, second GGA only")
<< bytes << (QList<QDateTime>() << dt.addMSecs(200) << dt.addMSecs(300))
<< (QList<bool>() << true << true) // accuracies are currently cached and injected in QGeoPositionInfos that do not have it
@@ -424,13 +428,6 @@ void tst_QNmeaPositionInfoSource::startUpdates_waitForValidDateTime_data()
<< bytes << (QList<QDateTime>() << dt.addMSecs(200) << dt.addMSecs(300))
<< (QList<bool>() << true << true)
<< (QList<bool>() << true << true); // First GGA gets VDOP from GSA bundled into previous, as it has no timestamp, second GGA gets the cached value.
- } else {
- // FixMe: remove else block once NMEA realtime mode supports timestamp-based combination of nmea sentences
- QTest::newRow("Feed ZDA,GGA,GSA,GGA; expect vertical accuracy from second GGA")
- << bytes << (QList<QDateTime>() << dt.addMSecs(200) << dt.addMSecs(300))
- << (QList<bool>() << true << true)
- << (QList<bool>() << false << true);
-
}
if (m_mode == QNmeaPositionInfoSource::SimulationMode) {
diff --git a/tests/auto/qnmeapositioninfosource/tst_qnmeapositioninfosource.h b/tests/auto/qnmeapositioninfosource/tst_qnmeapositioninfosource.h
index 60a4093c..073a4aac 100644
--- a/tests/auto/qnmeapositioninfosource/tst_qnmeapositioninfosource.h
+++ b/tests/auto/qnmeapositioninfosource/tst_qnmeapositioninfosource.h
@@ -61,10 +61,9 @@ public:
tst_QNmeaPositionInfoSource(QNmeaPositionInfoSource::UpdateMode mode, QObject *parent = 0);
private:
- QList<QDateTime> createDateTimes(int count) const
+ QList<QDateTime> createDateTimes(const QDateTime &dt, int count) const
{
QList<QDateTime> dateTimes;
- QDateTime dt = QDateTime::currentDateTime().toUTC();
int interval = 100;
for (int i=0; i<count; i++) {
dateTimes << dt.addMSecs(interval);
@@ -73,6 +72,11 @@ private:
return dateTimes;
}
+ QList<QDateTime> createDateTimes(int count) const
+ {
+ return createDateTimes(QDateTime::currentDateTime().toUTC(), count);
+ }
+
private slots:
void initTestCase();