diff options
author | Thiago Marcos P. Santos <thiago@mapbox.com> | 2016-08-17 15:55:59 +0300 |
---|---|---|
committer | Thiago Marcos P. Santos <thiago@mapbox.com> | 2016-08-26 16:08:44 +0300 |
commit | af56f0303133d553723c38df81910c076ba8a89a (patch) | |
tree | 7d5f7dba0f572061cf4abb0f8aca582bdc938b78 /platform/qt/test/qmapboxgl.cpp | |
parent | 7a2bfe32f88fee8d6a29f9e26e1f7a293aaee810 (diff) | |
download | qtlocation-mapboxgl-af56f0303133d553723c38df81910c076ba8a89a.tar.gz |
[Qt][tests] Added tests for set style interface
Diffstat (limited to 'platform/qt/test/qmapboxgl.cpp')
-rw-r--r-- | platform/qt/test/qmapboxgl.cpp | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/platform/qt/test/qmapboxgl.cpp b/platform/qt/test/qmapboxgl.cpp new file mode 100644 index 0000000000..67b2163ab8 --- /dev/null +++ b/platform/qt/test/qmapboxgl.cpp @@ -0,0 +1,94 @@ +#include <mbgl/test/util.hpp> +#include <mbgl/util/io.hpp> + +#include <QApplication> +#include <QGLWidget> +#include <QMapbox> +#include <QMapboxGL> + +class QMapboxGLTest : public QObject, public ::testing::Test { + Q_OBJECT + +public: + QMapboxGLTest() : app(argc, const_cast<char**>(&argv)), map(nullptr, settings) { + connect(&map, SIGNAL(mapChanged(QMapboxGL::MapChange)), + this, SLOT(onMapChanged(QMapboxGL::MapChange))); + connect(&map, SIGNAL(needsRendering()), + this, SLOT(onNeedsRendering())); + + widget.makeCurrent(); + QMapbox::initializeGLExtensions(); + + map.resize(QSize(512, 512)); + map.setCoordinateZoom(QMapbox::Coordinate(60.170448, 24.942046), 14); + } + + void runUntil(QMapboxGL::MapChange status) { + changeCallback = [&](QMapboxGL::MapChange change) { + if (change == status) { + app.exit(); + changeCallback = nullptr; + } + }; + + app.exec(); + } + +private: + int argc = 1; + const char* argv = "mbgl-test"; + + QApplication app; + QGLWidget widget; + +protected: + QMapboxGLSettings settings; + QMapboxGL map; + + std::function<void(QMapboxGL::MapChange)> changeCallback; + +private slots: + void onMapChanged(QMapboxGL::MapChange change) { + if (changeCallback) { + changeCallback(change); + } + }; + + void onNeedsRendering() { + 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); +} + +#include "qmapboxgl.moc" |