From d446b3382b7de03d9031445e37c1ebf183092ea2 Mon Sep 17 00:00:00 2001 From: Mikhail Pozdnyakov Date: Fri, 27 Sep 2019 18:22:57 +0300 Subject: [core] Enable move semantics for StyleProperty --- include/mbgl/style/style_property.hpp | 12 ++++++--- test/map/map.test.cpp | 48 +++++++++++++++++------------------ 2 files changed, 33 insertions(+), 27 deletions(-) diff --git a/include/mbgl/style/style_property.hpp b/include/mbgl/style/style_property.hpp index 43787c7919..fc34078dec 100644 --- a/include/mbgl/style/style_property.hpp +++ b/include/mbgl/style/style_property.hpp @@ -8,12 +8,18 @@ namespace style { /** * @brief Generic representation of a style property. */ -struct StyleProperty { +class StyleProperty { +public: enum class Kind : uint8_t { Undefined, Constant, Expression, Transition }; StyleProperty(Value value_, Kind kind_) : value(std::move(value_)), kind(kind_) {} StyleProperty() = default; - const Value value; - const Kind kind = Kind::Undefined; + const Value& getValue() const { return value; } + Value& getValue() { return value; } + Kind getKind() const { return kind; } + +private: + Value value; + Kind kind = Kind::Undefined; }; } // namespace style diff --git a/test/map/map.test.cpp b/test/map/map.test.cpp index 6f0f126d3d..3f3145059a 100644 --- a/test/map/map.test.cpp +++ b/test/map/map.test.cpp @@ -957,41 +957,41 @@ TEST(Map, UniversalStyleGetter) { ASSERT_TRUE(lineLayer); StyleProperty nonexistent = lineLayer->getProperty("nonexistent"); - ASSERT_FALSE(nonexistent.value); - EXPECT_EQ(StyleProperty::Kind::Undefined, nonexistent.kind); + ASSERT_FALSE(nonexistent.getValue()); + EXPECT_EQ(StyleProperty::Kind::Undefined, nonexistent.getKind()); StyleProperty undefined = lineLayer->getProperty("line-blur"); - ASSERT_FALSE(undefined.value); - EXPECT_EQ(StyleProperty::Kind::Undefined, undefined.kind); + ASSERT_FALSE(undefined.getValue()); + EXPECT_EQ(StyleProperty::Kind::Undefined, undefined.getKind()); StyleProperty lineColor = lineLayer->getProperty("line-color"); - ASSERT_TRUE(lineColor.value); - EXPECT_EQ(StyleProperty::Kind::Constant, lineColor.kind); - ASSERT_TRUE(lineColor.value.getObject()); - const auto& color = *(lineColor.value.getObject()); + ASSERT_TRUE(lineColor.getValue()); + EXPECT_EQ(StyleProperty::Kind::Constant, lineColor.getKind()); + ASSERT_TRUE(lineColor.getValue().getObject()); + const auto& color = *(lineColor.getValue().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()); StyleProperty lineOpacity = lineLayer->getProperty("line-opacity"); - ASSERT_TRUE(lineOpacity.value); - EXPECT_EQ(StyleProperty::Kind::Constant, lineOpacity.kind); - ASSERT_TRUE(lineOpacity.value.getDouble()); - EXPECT_EQ(0.5, *lineOpacity.value.getDouble()); + ASSERT_TRUE(lineOpacity.getValue()); + EXPECT_EQ(StyleProperty::Kind::Constant, lineOpacity.getKind()); + ASSERT_TRUE(lineOpacity.getValue().getDouble()); + EXPECT_EQ(0.5, *lineOpacity.getValue().getDouble()); StyleProperty lineOpacityTransition = lineLayer->getProperty("line-opacity-transition"); - ASSERT_TRUE(lineOpacityTransition.value); - EXPECT_EQ(StyleProperty::Kind::Transition, lineOpacityTransition.kind); - ASSERT_TRUE(lineOpacityTransition.value.getArray()); - EXPECT_EQ(3u, lineOpacityTransition.value.getArray()->size()); + ASSERT_TRUE(lineOpacityTransition.getValue()); + EXPECT_EQ(StyleProperty::Kind::Transition, lineOpacityTransition.getKind()); + ASSERT_TRUE(lineOpacityTransition.getValue().getArray()); + EXPECT_EQ(3u, lineOpacityTransition.getValue().getArray()->size()); StyleProperty lineWidth = lineLayer->getProperty("line-width"); - ASSERT_TRUE(lineWidth.value); - EXPECT_EQ(StyleProperty::Kind::Expression, lineWidth.kind); - ASSERT_TRUE(lineWidth.value.getArray()); + ASSERT_TRUE(lineWidth.getValue()); + EXPECT_EQ(StyleProperty::Kind::Expression, lineWidth.getKind()); + ASSERT_TRUE(lineWidth.getValue().getArray()); - const auto& expression = *lineWidth.value.getArray(); + const auto& expression = *lineWidth.getValue().getArray(); EXPECT_EQ(2u, expression.size()); ASSERT_TRUE(expression[0].getString()); EXPECT_EQ("number", *expression[0].getString()); @@ -1004,8 +1004,8 @@ TEST(Map, UniversalStyleGetter) { EXPECT_EQ("width", *operation[1].getString()); StyleProperty lineCap = lineLayer->getProperty("line-cap"); - ASSERT_TRUE(lineCap.value); - EXPECT_EQ(StyleProperty::Kind::Constant, lineCap.kind); - ASSERT_TRUE(lineCap.value.getString()); - EXPECT_EQ(std::string("butt"), *lineCap.value.getString()); + ASSERT_TRUE(lineCap.getValue()); + EXPECT_EQ(StyleProperty::Kind::Constant, lineCap.getKind()); + ASSERT_TRUE(lineCap.getValue().getString()); + EXPECT_EQ(std::string("butt"), *lineCap.getValue().getString()); } -- cgit v1.2.1