summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThiago Marcos P. Santos <thiago@mapbox.com>2016-08-24 19:57:16 +0300
committerThiago Marcos P. Santos <thiago@mapbox.com>2016-08-24 20:02:39 +0300
commit1d7a5b0fe0bc3d69cc77cfb654876ad3db2ea33a (patch)
tree2584ce377d31eb24a0af06a11b94d64d4de7cea5
parentc98f4f476bd590bdfd78409d428459e40347302a (diff)
downloadqtlocation-mapboxgl-1d7a5b0fe0bc3d69cc77cfb654876ad3db2ea33a.tar.gz
[tests] Add unit test for style loading failures
-rw-r--r--include/mbgl/platform/default/headless_view.hpp4
-rw-r--r--platform/default/headless_view.cpp6
-rw-r--r--test/map/map.cpp32
3 files changed, 42 insertions, 0 deletions
diff --git a/include/mbgl/platform/default/headless_view.hpp b/include/mbgl/platform/default/headless_view.hpp
index 989c226694..89716643d4 100644
--- a/include/mbgl/platform/default/headless_view.hpp
+++ b/include/mbgl/platform/default/headless_view.hpp
@@ -43,10 +43,12 @@ public:
void invalidate() override;
void activate() override;
void deactivate() override;
+ void notifyMapChange(MapChange) override;
PremultipliedImage readStillImage() override;
void resize(uint16_t width, uint16_t height);
+ void setMapChangeCallback(std::function<void(MapChange)>&& cb) { mapChangeCallback = std::move(cb); }
private:
// Implementation specific functions
@@ -85,6 +87,8 @@ private:
GLXPbuffer glxPbuffer = 0;
#endif
+ std::function<void(MapChange)> mapChangeCallback;
+
GLuint fbo = 0;
GLuint fboDepthStencil = 0;
GLuint fboColor = 0;
diff --git a/platform/default/headless_view.cpp b/platform/default/headless_view.cpp
index 13ea78a709..28c300b41e 100644
--- a/platform/default/headless_view.cpp
+++ b/platform/default/headless_view.cpp
@@ -107,4 +107,10 @@ void HeadlessView::invalidate() {
assert(false);
}
+void HeadlessView::notifyMapChange(MapChange change) {
+ if (mapChangeCallback) {
+ mapChangeCallback(change);
+ }
+}
+
} // namespace mbgl
diff --git a/test/map/map.cpp b/test/map/map.cpp
index 7e0bbd0234..314fb947f7 100644
--- a/test/map/map.cpp
+++ b/test/map/map.cpp
@@ -60,11 +60,20 @@ TEST(Map, SetStyleInvalidJSON) {
Log::setObserver(std::make_unique<FixtureLogObserver>());
+ bool fail = false;
+ test.view.setMapChangeCallback([&](MapChange change) {
+ if (change == mbgl::MapChangeDidFailLoadingMap) {
+ fail = true;
+ }
+ });
+
{
Map map(test.view, test.fileSource, MapMode::Still);
map.setStyleJSON("invalid");
}
+ EXPECT_TRUE(fail);
+
auto observer = Log::removeObserver();
auto flo = dynamic_cast<FixtureLogObserver*>(observer.get());
EXPECT_EQ(1u, flo->count({ EventSeverity::Error, Event::ParseStyle, -1,
@@ -73,6 +82,29 @@ TEST(Map, SetStyleInvalidJSON) {
EXPECT_TRUE(unchecked.empty()) << unchecked;
}
+TEST(Map, SetStyleInvalidURL) {
+ MapTest test;
+
+ test.fileSource.styleResponse = [] (const Resource&) {
+ Response response;
+ response.error = std::make_unique<Response::Error>(
+ Response::Error::Reason::Other,
+ "Failed by the test case");
+ return response;
+ };
+
+ test.view.setMapChangeCallback([&](MapChange change) {
+ if (change == mbgl::MapChangeDidFailLoadingMap) {
+ test.runLoop.stop();
+ }
+ });
+
+ Map map(test.view, test.fileSource, MapMode::Still);
+ map.setStyleURL("mapbox://bar");
+
+ test.runLoop.run();
+}
+
TEST(Map, DoubleStyleLoad) {
MapTest test;