summaryrefslogtreecommitdiff
path: root/platform/qt/test/qmapboxgl.test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'platform/qt/test/qmapboxgl.test.cpp')
-rw-r--r--platform/qt/test/qmapboxgl.test.cpp77
1 files changed, 77 insertions, 0 deletions
diff --git a/platform/qt/test/qmapboxgl.test.cpp b/platform/qt/test/qmapboxgl.test.cpp
new file mode 100644
index 0000000000..c6ae3ed403
--- /dev/null
+++ b/platform/qt/test/qmapboxgl.test.cpp
@@ -0,0 +1,77 @@
+#include "qmapboxgl.test.hpp"
+
+#include <mbgl/util/io.hpp>
+
+#include <QMapbox>
+
+// We're using QGLFramebufferObject, which is only available in Qt 5 and up.
+#if QT_VERSION >= 0x050000
+
+QMapboxGLTest::QMapboxGLTest() : size(512, 512), fbo((assert(widget.context()->isValid()), widget.makeCurrent(), size)), map(nullptr, settings, size) {
+ connect(&map, SIGNAL(mapChanged(QMapboxGL::MapChange)),
+ this, SLOT(onMapChanged(QMapboxGL::MapChange)));
+ connect(&map, SIGNAL(needsRendering()),
+ this, SLOT(onNeedsRendering()));
+ map.resize(fbo.size(), fbo.size());
+ map.setFramebufferObject(fbo.handle());
+ map.setCoordinateZoom(QMapbox::Coordinate(60.170448, 24.942046), 14);
+}
+
+void QMapboxGLTest::runUntil(QMapboxGL::MapChange status) {
+ changeCallback = [&](QMapboxGL::MapChange change) {
+ if (change == status) {
+ qApp->exit();
+ changeCallback = nullptr;
+ }
+ };
+
+ qApp->exec();
+}
+
+void QMapboxGLTest::onMapChanged(QMapboxGL::MapChange change) {
+ if (changeCallback) {
+ changeCallback(change);
+ }
+}
+
+void QMapboxGLTest::onNeedsRendering() {
+ widget.makeCurrent();
+ fbo.bind();
+ glViewport(0, 0, fbo.width(), fbo.height());
+ map.render();
+}
+
+
+TEST_F(QMapboxGLTest, TEST_DISABLED_ON_CI(styleJson)) {
+ QString json = QString::fromStdString(
+ mbgl::util::read_file("test/fixtures/resources/style_vector.json"));
+
+ map.setStyleJson(json);
+ ASSERT_EQ(map.styleJson(), json);
+ runUntil(QMapboxGL::MapChangeDidFinishLoadingMap);
+
+ map.setStyleJson("invalid json");
+ runUntil(QMapboxGL::MapChangeDidFailLoadingMap);
+
+ map.setStyleJson("\"\"");
+ runUntil(QMapboxGL::MapChangeDidFailLoadingMap);
+
+ map.setStyleJson(QString());
+ runUntil(QMapboxGL::MapChangeDidFailLoadingMap);
+}
+
+TEST_F(QMapboxGLTest, TEST_DISABLED_ON_CI(styleUrl)) {
+ QString url(QMapbox::defaultStyles()[0].first);
+
+ map.setStyleUrl(url);
+ ASSERT_EQ(map.styleUrl(), url);
+ runUntil(QMapboxGL::MapChangeDidFinishLoadingMap);
+
+ map.setStyleUrl("invalid://url");
+ runUntil(QMapboxGL::MapChangeDidFailLoadingMap);
+
+ map.setStyleUrl(QString());
+ runUntil(QMapboxGL::MapChangeDidFailLoadingMap);
+}
+
+#endif