diff options
Diffstat (limited to 'platform/qt/test')
-rw-r--r-- | platform/qt/test/headless_backend_qt.cpp | 46 | ||||
-rw-r--r-- | platform/qt/test/qmapboxgl.cpp | 99 | ||||
-rw-r--r-- | platform/qt/test/qmapboxgl.test.cpp | 77 | ||||
-rw-r--r-- | platform/qt/test/qmapboxgl.test.hpp | 36 |
4 files changed, 113 insertions, 145 deletions
diff --git a/platform/qt/test/headless_backend_qt.cpp b/platform/qt/test/headless_backend_qt.cpp deleted file mode 100644 index 5f95b2f96a..0000000000 --- a/platform/qt/test/headless_backend_qt.cpp +++ /dev/null @@ -1,46 +0,0 @@ -#include <mbgl/gl/headless_backend.hpp> - -#include <QGLWidget> - -#if QT_VERSION >= 0x050000 -#include <QOpenGLContext> -#else -#include <QGLContext> -#endif - -#include <cassert> - -namespace mbgl { - -struct QtImpl : public HeadlessBackend::Impl { - void activateContext() final { - widget.makeCurrent(); - } - - void deactivateContext() final { - widget.doneCurrent(); - } - - QGLWidget widget; -}; - -gl::ProcAddress HeadlessBackend::initializeExtension(const char* name) { -#if QT_VERSION >= 0x050000 - QOpenGLContext* thisContext = QOpenGLContext::currentContext(); - return thisContext->getProcAddress(name); -#else - const QGLContext* thisContext = QGLContext::currentContext(); - return reinterpret_cast<gl::ProcAddress>(thisContext->getProcAddress(name)); -#endif -} - -bool HeadlessBackend::hasDisplay() { - return true; -}; - -void HeadlessBackend::createContext() { - assert(!hasContext()); - impl.reset(new QtImpl); -} - -} // namespace mbgl diff --git a/platform/qt/test/qmapboxgl.cpp b/platform/qt/test/qmapboxgl.cpp deleted file mode 100644 index 747f8796fa..0000000000 --- a/platform/qt/test/qmapboxgl.cpp +++ /dev/null @@ -1,99 +0,0 @@ -#include <mbgl/test/util.hpp> -#include <mbgl/util/io.hpp> - -#include <QApplication> -#include <QMapbox> -#include <QMapboxGL> - -// We're using QGLFramebufferObject, which is only available in Qt 5 and up. -#if QT_VERSION >= 0x050000 - -#include <QGLWidget> -#include <QGLFramebufferObject> - -class QMapboxGLTest : public QObject, public ::testing::Test { - Q_OBJECT - -public: - 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 runUntil(QMapboxGL::MapChange status) { - changeCallback = [&](QMapboxGL::MapChange change) { - if (change == status) { - qApp->exit(); - changeCallback = nullptr; - } - }; - - qApp->exec(); - } - -private: - QGLWidget widget; - const QSize size; - QGLFramebufferObject fbo; - -protected: - QMapboxGLSettings settings; - QMapboxGL map; - - std::function<void(QMapboxGL::MapChange)> changeCallback; - -private slots: - void onMapChanged(QMapboxGL::MapChange change) { - if (changeCallback) { - changeCallback(change); - } - }; - - void 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); -} - -#include "qmapboxgl.moc" - -#endif 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 diff --git a/platform/qt/test/qmapboxgl.test.hpp b/platform/qt/test/qmapboxgl.test.hpp new file mode 100644 index 0000000000..04d63610ca --- /dev/null +++ b/platform/qt/test/qmapboxgl.test.hpp @@ -0,0 +1,36 @@ +#include <mbgl/test/util.hpp> + +#include <QApplication> +#include <QMapboxGL> + +// We're using QGLFramebufferObject, which is only available in Qt 5 and up. +#if QT_VERSION >= 0x050000 + +#include <QGLWidget> +#include <QGLFramebufferObject> + +class QMapboxGLTest : public QObject, public ::testing::Test { + Q_OBJECT + +public: + QMapboxGLTest(); + + void runUntil(QMapboxGL::MapChange); + +private: + QGLWidget widget; + const QSize size; + QGLFramebufferObject fbo; + +protected: + QMapboxGLSettings settings; + QMapboxGL map; + + std::function<void(QMapboxGL::MapChange)> changeCallback; + +private slots: + void onMapChanged(QMapboxGL::MapChange); + void onNeedsRendering(); +}; + +#endif |