summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-09-25 22:10:03 +0300
committerMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-09-26 11:57:39 +0300
commitb5862c212769ee1372e4005dd1b96d49b72171e3 (patch)
treeefc7ef276f59bc6bc463ff106b9eadf4051fd18c
parent1d6660b5521b9f67afad8bcfe6a6b649c8b3c317 (diff)
downloadqtlocation-mapboxgl-b5862c212769ee1372e4005dd1b96d49b72171e3.tar.gz
[core] Add Map.UniversalStyleGetter test
-rw-r--r--test/map/map.test.cpp73
1 files changed, 73 insertions, 0 deletions
diff --git a/test/map/map.test.cpp b/test/map/map.test.cpp
index 09e1b92336..35bae779c4 100644
--- a/test/map/map.test.cpp
+++ b/test/map/map.test.cpp
@@ -926,4 +926,77 @@ TEST(Map, Issue15342) {
};
test.runLoop.run();
+}
+
+TEST(Map, UniversalStyleGetter) {
+ MapTest<> test;
+
+ test.map.getStyle().loadJSON(R"STYLE({
+ "sources": {
+ "mapbox": {
+ "type": "vector",
+ "tiles": ["http://example.com/{z}-{x}-{y}.vector.pbf"]
+ }
+ },
+ "layers": [{
+ "id": "line",
+ "type": "line",
+ "source": "mapbox",
+ "paint": {
+ "line-color": "red",
+ "line-opacity": 0.5,
+ "line-width": ["get", "width"]
+ }
+ }]
+ })STYLE");
+
+ Layer* lineLayer = test.map.getStyle().getLayer("line");
+ ASSERT_TRUE(lineLayer);
+
+ LayerProperty nonexistent = lineLayer->getPaintProperty("nonexistent");
+ ASSERT_FALSE(nonexistent.value);
+ EXPECT_EQ(LayerProperty::Kind::Undefined, nonexistent.kind);
+
+ LayerProperty undefined = lineLayer->getPaintProperty("line-blur");
+ ASSERT_FALSE(undefined.value);
+ EXPECT_EQ(LayerProperty::Kind::Undefined, undefined.kind);
+
+ LayerProperty lineColor = lineLayer->getPaintProperty("line-color");
+ ASSERT_TRUE(lineColor.value);
+ EXPECT_EQ(LayerProperty::Kind::Constant, lineColor.kind);
+ ASSERT_TRUE(lineColor.value.getObject());
+ const auto& color = *(lineColor.value.getObject());
+ EXPECT_EQ(1.0, *color.at("r").getDouble());
+ EXPECT_EQ(0.0, *color.at("g").getDouble());
+ EXPECT_EQ(0.0, *color.at("b").getDouble());
+ EXPECT_EQ(1.0, *color.at("a").getDouble());
+
+ LayerProperty lineOpacity = lineLayer->getPaintProperty("line-opacity");
+ ASSERT_TRUE(lineOpacity.value);
+ EXPECT_EQ(LayerProperty::Kind::Constant, lineOpacity.kind);
+ ASSERT_TRUE(lineOpacity.value.getDouble());
+ EXPECT_EQ(0.5, *lineOpacity.value.getDouble());
+
+ LayerProperty lineOpacityTransition = lineLayer->getPaintProperty("line-opacity-transition");
+ ASSERT_TRUE(lineOpacityTransition.value);
+ EXPECT_EQ(LayerProperty::Kind::Transition, lineOpacityTransition.kind);
+ ASSERT_TRUE(lineOpacityTransition.value.getArray());
+ EXPECT_EQ(3u, lineOpacityTransition.value.getArray()->size());
+
+ LayerProperty lineWidth = lineLayer->getPaintProperty("line-width");
+ ASSERT_TRUE(lineWidth.value);
+ EXPECT_EQ(LayerProperty::Kind::Expression, lineWidth.kind);
+ ASSERT_TRUE(lineWidth.value.getArray());
+
+ const auto& expression = *lineWidth.value.getArray();
+ EXPECT_EQ(2u, expression.size());
+ ASSERT_TRUE(expression[0].getString());
+ EXPECT_EQ("number", *expression[0].getString());
+ ASSERT_TRUE(expression[1].getArray());
+ const auto& operation = *expression[1].getArray();
+ EXPECT_EQ(2, operation.size());
+ ASSERT_TRUE(operation[0].getString());
+ EXPECT_EQ("get", *operation[0].getString());
+ ASSERT_TRUE(operation[1].getString());
+ EXPECT_EQ("width", *operation[1].getString());
} \ No newline at end of file