diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2016-08-29 12:00:08 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2016-09-06 14:29:22 -0700 |
commit | fe2a26225f3746381b36ad8b6c6a3ce7727bf655 (patch) | |
tree | 62507ffd6a28654a377469d35e21719ff7a12fdc /test/style | |
parent | 3a48c60813b18c092c8d8d75c80a318bdd8859bb (diff) | |
download | qtlocation-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.cpp | 44 |
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); +} |