summaryrefslogtreecommitdiff
path: root/test/style
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2016-08-29 12:00:08 -0700
committerJohn Firebaugh <john.firebaugh@gmail.com>2016-09-06 14:29:22 -0700
commitfe2a26225f3746381b36ad8b6c6a3ce7727bf655 (patch)
tree62507ffd6a28654a377469d35e21719ff7a12fdc /test/style
parent3a48c60813b18c092c8d8d75c80a318bdd8859bb (diff)
downloadqtlocation-mapboxgl-fe2a26225f3746381b36ad8b6c6a3ce7727bf655.tar.gz
[core, ios, android, qt] Observe style layer mutations rather than requiring SDKs to use Map::update
This paves the way for updates to filter and layout properties to trigger a source reload, without each SDK having to participate in the implementation.
Diffstat (limited to 'test/style')
-rw-r--r--test/style/style_layer.cpp44
1 files changed, 44 insertions, 0 deletions
diff --git a/test/style/style_layer.cpp b/test/style/style_layer.cpp
index 9c6a6e924a..0d2ed88edd 100644
--- a/test/style/style_layer.cpp
+++ b/test/style/style_layer.cpp
@@ -1,4 +1,5 @@
#include <mbgl/test/util.hpp>
+#include <mbgl/test/stub_layer_observer.hpp>
#include <mbgl/style/layers/background_layer.hpp>
#include <mbgl/style/layers/background_layer_impl.hpp>
#include <mbgl/style/layers/circle_layer.hpp>
@@ -210,3 +211,46 @@ TEST(Layer, RasterProperties) {
layer->setRasterFadeDuration(duration);
EXPECT_EQ(layer->getRasterFadeDuration().asConstant(), duration.asConstant());
}
+
+TEST(Layer, Observer) {
+ auto layer = std::make_unique<LineLayer>("line", "source");
+ StubLayerObserver observer;
+ layer->baseImpl->setObserver(&observer);
+
+ // Notifies observer on filter change.
+ bool filterChanged = false;
+ observer.layerFilterChanged = [&] (Layer& layer_) {
+ EXPECT_EQ(layer.get(), &layer_);
+ filterChanged = true;
+ };
+ layer->setFilter(NullFilter());
+ EXPECT_TRUE(filterChanged);
+
+ // Notifies observer on paint property change.
+ bool paintPropertyChanged = false;
+ observer.layerPaintPropertyChanged = [&] (Layer& layer_) {
+ EXPECT_EQ(layer.get(), &layer_);
+ paintPropertyChanged = true;
+ };
+ layer->setLineColor(color);
+ EXPECT_TRUE(paintPropertyChanged);
+
+ // Notifies observer on layout property change.
+ bool layoutPropertyChanged = false;
+ observer.layerLayoutPropertyChanged = [&] (Layer& layer_) {
+ EXPECT_EQ(layer.get(), &layer_);
+ layoutPropertyChanged = true;
+ };
+ layer->setLineCap(lineCap);
+ EXPECT_TRUE(layoutPropertyChanged);
+
+ // Does not notify observer on no-op paint property change.
+ paintPropertyChanged = false;
+ layer->setLineColor(color);
+ EXPECT_FALSE(paintPropertyChanged);
+
+ // Does not notify observer on no-op layout property change.
+ layoutPropertyChanged = false;
+ layer->setLineCap(lineCap);
+ EXPECT_FALSE(layoutPropertyChanged);
+}