summaryrefslogtreecommitdiff
path: root/tests/auto/qgeoroutexmlparser
diff options
context:
space:
mode:
authorAaron McCarthy <aaron.mccarthy@jollamobile.com>2014-02-19 14:52:07 +1000
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-14 12:30:09 +0100
commitd2628aeb6ed1ab30d1a825122dc80cfebb5093d2 (patch)
tree00cec128c5d264346c871ba9bfcdc9a920dfa52b /tests/auto/qgeoroutexmlparser
parent3f4a3acab163fa6675a1513ab1fccdbda7723dd6 (diff)
downloadqtlocation-d2628aeb6ed1ab30d1a825122dc80cfebb5093d2.tar.gz
Parse Nokia route response in helper thread.
Complex and really long routes can take multiple seconds to parse. Use a helper thread to parse route responses to prevent blocking the main thread. Change-Id: I4130510ff15752427f31b429e53d2ab87fa1b84a Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
Diffstat (limited to 'tests/auto/qgeoroutexmlparser')
-rw-r--r--tests/auto/qgeoroutexmlparser/tst_qgeoroutexmlparser.cpp29
1 files changed, 24 insertions, 5 deletions
diff --git a/tests/auto/qgeoroutexmlparser/tst_qgeoroutexmlparser.cpp b/tests/auto/qgeoroutexmlparser/tst_qgeoroutexmlparser.cpp
index 9fb51cc6..1dde8b33 100644
--- a/tests/auto/qgeoroutexmlparser/tst_qgeoroutexmlparser.cpp
+++ b/tests/auto/qgeoroutexmlparser/tst_qgeoroutexmlparser.cpp
@@ -47,6 +47,9 @@
#include <QMetaType>
#include <QDebug>
#include <QFile>
+#include <QSignalSpy>
+
+Q_DECLARE_METATYPE(QList<QGeoRoute>)
QT_USE_NAMESPACE
@@ -58,7 +61,9 @@ public:
tst_QGeoRouteXmlParser()
: start(0.0, 0.0),
end(1.0, 1.0)
- {}
+ {
+ qRegisterMetaType<QList<QGeoRoute> >();
+ }
private:
// dummy values for creating the request object
@@ -74,11 +79,18 @@ private slots:
QGeoRouteRequest req(start, end);
QGeoRouteXmlParser xp(req);
+ xp.setAutoDelete(false);
+
+ QSignalSpy resultsSpy(&xp, SIGNAL(results(QList<QGeoRoute>)));
+
+ xp.parse(f.readAll());
- QVERIFY(xp.parse(&f));
+ QTRY_COMPARE(resultsSpy.count(), 1);
+
+ QVariantList arguments = resultsSpy.first();
// xml contains exactly 1 route
- QList<QGeoRoute> results = xp.results();
+ QList<QGeoRoute> results = arguments.at(0).value<QList<QGeoRoute> >();
QCOMPARE(results.size(), 1);
QGeoRoute route = results.first();
@@ -121,11 +133,18 @@ private slots:
QGeoRouteRequest req(start, end);
QGeoRouteXmlParser xp(req);
+ xp.setAutoDelete(false);
+
+ QSignalSpy resultsSpy(&xp, SIGNAL(results(QList<QGeoRoute>)));
+
+ xp.parse(f.readAll());
+
+ QTRY_COMPARE(resultsSpy.count(), 1);
- QVERIFY(xp.parse(&f));
+ QVariantList arguments = resultsSpy.first();
// xml contains exactly 1 route
- QList<QGeoRoute> results = xp.results();
+ QList<QGeoRoute> results = arguments.at(0).value<QList<QGeoRoute> >();
QCOMPARE(results.size(), 1);
QGeoRoute route = results.first();