From b5862c212769ee1372e4005dd1b96d49b72171e3 Mon Sep 17 00:00:00 2001 From: Mikhail Pozdnyakov Date: Wed, 25 Sep 2019 22:10:03 +0300 Subject: [core] Add Map.UniversalStyleGetter test --- test/map/map.test.cpp | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) 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 -- cgit v1.2.1