summaryrefslogtreecommitdiff
path: root/test/style
diff options
context:
space:
mode:
Diffstat (limited to 'test/style')
-rw-r--r--test/style/conversion/function.test.cpp2
-rw-r--r--test/style/conversion/stringify.test.cpp33
-rw-r--r--test/style/function/camera_function.test.cpp (renamed from test/style/functions.test.cpp)14
-rw-r--r--test/style/paint_property.test.cpp76
-rw-r--r--test/style/style_layer.test.cpp116
5 files changed, 131 insertions, 110 deletions
diff --git a/test/style/conversion/function.test.cpp b/test/style/conversion/function.test.cpp
index e93207ea13..5a3ec93917 100644
--- a/test/style/conversion/function.test.cpp
+++ b/test/style/conversion/function.test.cpp
@@ -13,7 +13,7 @@ using namespace mbgl::style::conversion;
auto parseFunction(const std::string& src) {
JSDocument doc;
doc.Parse<0>(src);
- return convert<Function<float>>(doc);
+ return convert<CameraFunction<float>>(doc);
}
TEST(StyleConversion, Function) {
diff --git a/test/style/conversion/stringify.test.cpp b/test/style/conversion/stringify.test.cpp
index be5d65d4ce..6814563ceb 100644
--- a/test/style/conversion/stringify.test.cpp
+++ b/test/style/conversion/stringify.test.cpp
@@ -79,13 +79,40 @@ TEST(Stringify, Filter) {
ASSERT_EQ(stringify(EqualsFilter { "a", 1.0 }), "[\"==\",\"a\",1.0]");
}
-TEST(Stringify, Function) {
- ASSERT_EQ(stringify(Function<float>({{0, 1}}, 2)), "{\"base\":2.0,\"stops\":[[0.0,1.0]]}");
+TEST(Stringify, CameraFunction) {
+ ASSERT_EQ(stringify(CameraFunction<float>(ExponentialStops<float> { {{0, 1}}, 2 })),
+ "{\"type\":\"exponential\",\"base\":2.0,\"stops\":[[0.0,1.0]]}");
+ ASSERT_EQ(stringify(CameraFunction<float>(IntervalStops<float> { {{0, 1}} })),
+ "{\"type\":\"interval\",\"stops\":[[0.0,1.0]]}");
+}
+
+TEST(Stringify, SourceFunction) {
+ ASSERT_EQ(stringify(SourceFunction<float>("property", ExponentialStops<float> { {{0, 1}}, 2 })),
+ "{\"property\":\"property\",\"type\":\"exponential\",\"base\":2.0,\"stops\":[[0.0,1.0]]}");
+ ASSERT_EQ(stringify(SourceFunction<float>("property", IntervalStops<float> { {{0, 1}} })),
+ "{\"property\":\"property\",\"type\":\"interval\",\"stops\":[[0.0,1.0]]}");
+ ASSERT_EQ(stringify(SourceFunction<float>("property", CategoricalStops<float> { {{CategoricalValue(true), 1}} })),
+ "{\"property\":\"property\",\"type\":\"categorical\",\"stops\":[[true,1.0]]}");
+ ASSERT_EQ(stringify(SourceFunction<float>("property", IdentityStops<float> {})),
+ "{\"property\":\"property\",\"type\":\"identity\"}");
+}
+
+TEST(Stringify, CompositeFunction) {
+ ASSERT_EQ(stringify(CompositeFunction<float>("property",
+ std::map<float, ExponentialStops<float>> {
+ { 0, ExponentialStops<float> { {{0, 1}}, 2 } },
+ { 1, ExponentialStops<float> { {{0, 1}}, 2 } }
+ })),
+ "{\"property\":\"property\",\"type\":\"exponential\",\"base\":2.0,"
+ "\"stops\":["
+ "[{\"zoom\":0.0,\"value\":0.0},1.0],"
+ "[{\"zoom\":1.0,\"value\":0.0},1.0]]}");
}
TEST(Stringify, PropertyValue) {
ASSERT_EQ(stringify(PropertyValue<float>(1)), "1.0");
- ASSERT_EQ(stringify(PropertyValue<float>(Function<float>({{0, 1}}, 2))), "{\"base\":2.0,\"stops\":[[0.0,1.0]]}");
+ ASSERT_EQ(stringify(PropertyValue<float>(CameraFunction<float>(ExponentialStops<float> { {{0, 1}}, 2 }))),
+ "{\"type\":\"exponential\",\"base\":2.0,\"stops\":[[0.0,1.0]]}");
}
TEST(Stringify, Layout) {
diff --git a/test/style/functions.test.cpp b/test/style/function/camera_function.test.cpp
index 8553d13349..6cd53b0fa0 100644
--- a/test/style/functions.test.cpp
+++ b/test/style/function/camera_function.test.cpp
@@ -17,7 +17,7 @@ bool evaluate(PropertyValue<bool> value, float zoom) {
return value.evaluate(PropertyEvaluator<bool>(PropertyEvaluationParameters(zoom), false));
}
-TEST(Function, Constant) {
+TEST(CameraFunction, Constant) {
EXPECT_EQ(2.0f, evaluate(PropertyValue<float>(2.0), 0));
EXPECT_EQ(3.8f, evaluate(PropertyValue<float>(3.8), 0));
EXPECT_EQ(22.0f, evaluate(PropertyValue<float>(22.0), 0));
@@ -29,9 +29,9 @@ TEST(Function, Constant) {
EXPECT_EQ(22.0f, evaluate(PropertyValue<float>(22.0), 22));
}
-TEST(Function, Stops) {
+TEST(CameraFunction, Stops) {
// Explicit constant slope in fringe regions.
- Function<float> slope_1({ { 0, 1.5 }, { 6, 1.5 }, { 8, 3 }, { 22, 3 } }, 1.75);
+ CameraFunction<float> slope_1(ExponentialStops<float> { { { 0, 1.5 }, { 6, 1.5 }, { 8, 3 }, { 22, 3 } }, 1.75});
EXPECT_EQ(1.5, evaluate(slope_1, 0));
EXPECT_EQ(1.5, evaluate(slope_1, 4));
EXPECT_EQ(1.5, evaluate(slope_1, 6));
@@ -43,7 +43,7 @@ TEST(Function, Stops) {
// Test constant values in fringe regions.
- Function<float> slope_2({ { 6, 1.5 }, { 8, 3 } }, 1.75);
+ CameraFunction<float> slope_2(ExponentialStops<float> { { { 6, 1.5 }, { 8, 3 } }, 1.75 });
EXPECT_EQ(1.5, evaluate(slope_2, 0));
EXPECT_EQ(1.5, evaluate(slope_2, 4));
EXPECT_EQ(1.5, evaluate(slope_2, 6));
@@ -55,7 +55,7 @@ TEST(Function, Stops) {
// Explicit constant slope in fringe regions.
- Function<float> slope_4({ { 0, 2 }, { 8, 10 } }, 1);
+ CameraFunction<float> slope_4(ExponentialStops<float> { { { 0, 2 }, { 8, 10 } }, 1 });
EXPECT_EQ(2, evaluate(slope_4, 0));
EXPECT_EQ(3, evaluate(slope_4, 1));
EXPECT_EQ(4, evaluate(slope_4, 2));
@@ -63,14 +63,14 @@ TEST(Function, Stops) {
EXPECT_EQ(10, evaluate(slope_4, 8));
// discrete values
- Function<std::string> discrete_0({{3, "string0"}, {6, "string1"}, {9, "string2"}}, 1);
+ CameraFunction<std::string> discrete_0(IntervalStops<std::string> { {{3, "string0"}, {6, "string1"}, {9, "string2"}} });
EXPECT_EQ("string0", evaluate(discrete_0, 2));
EXPECT_EQ("string0", evaluate(discrete_0, 4));
EXPECT_EQ("string1", evaluate(discrete_0, 7));
EXPECT_EQ("string2", evaluate(discrete_0, 9));
EXPECT_EQ("string2", evaluate(discrete_0, 10));
- Function<bool> discreteBool({{1, false}, {3, true}}, 1);
+ CameraFunction<bool> discreteBool(IntervalStops<bool> { {{1, false}, {3, true}} });
EXPECT_FALSE(evaluate(discreteBool, 0));
EXPECT_FALSE(evaluate(discreteBool, 1));
EXPECT_FALSE(evaluate(discreteBool, 2));
diff --git a/test/style/paint_property.test.cpp b/test/style/paint_property.test.cpp
index 487dbe9652..c70fa101ca 100644
--- a/test/style/paint_property.test.cpp
+++ b/test/style/paint_property.test.cpp
@@ -6,54 +6,59 @@ using namespace mbgl;
using namespace mbgl::style;
using namespace std::literals::chrono_literals;
+float evaluate(UnevaluatedPaintProperty<PropertyValue<float>>& property, Duration delta = Duration::zero()) {
+ PropertyEvaluationParameters parameters {
+ 0,
+ TimePoint::min() + delta,
+ ZoomHistory(),
+ Duration::zero()
+ };
+
+ PropertyEvaluator<float> evaluator {
+ parameters,
+ 0.0f
+ };
+
+ return property.evaluate(evaluator, parameters.now);
+}
+
TEST(UnevaluatedPaintProperty, EvaluateDefaultValue) {
- UnevaluatedPaintProperty<float, PropertyEvaluator<float>> property;
- ASSERT_EQ(0.0f, property.evaluate(PropertyEvaluationParameters(0), 0.0f));
+ UnevaluatedPaintProperty<PropertyValue<float>> property;
+ ASSERT_EQ(0.0f, evaluate(property));
}
TEST(UnevaluatedPaintProperty, EvaluateUntransitionedConstant) {
- UnevaluatedPaintProperty<float, PropertyEvaluator<float>> property {
+ UnevaluatedPaintProperty<PropertyValue<float>> property {
PropertyValue<float>(1.0f),
- UnevaluatedPaintProperty<float, PropertyEvaluator<float>>(),
+ UnevaluatedPaintProperty<PropertyValue<float>>(),
TransitionOptions(),
TimePoint::min()
};
- ASSERT_EQ(1.0f, property.evaluate(PropertyEvaluationParameters(0), 0.0f));
+ ASSERT_EQ(1.0f, evaluate(property));
}
TEST(UnevaluatedPaintProperty, EvaluateTransitionedConstantWithoutDelay) {
TransitionOptions transition;
transition.duration = { 1000ms };
- UnevaluatedPaintProperty<float, PropertyEvaluator<float>> t0 {
+ UnevaluatedPaintProperty<PropertyValue<float>> t0 {
PropertyValue<float>(0.0f),
- UnevaluatedPaintProperty<float, PropertyEvaluator<float>>(),
+ UnevaluatedPaintProperty<PropertyValue<float>>(),
TransitionOptions(),
TimePoint::min()
};
- UnevaluatedPaintProperty<float, PropertyEvaluator<float>> t1 {
+ UnevaluatedPaintProperty<PropertyValue<float>> t1 {
PropertyValue<float>(1.0f),
t0,
transition,
TimePoint::min()
};
- auto evaluate = [&] (Duration delta) {
- PropertyEvaluationParameters parameters {
- 0,
- TimePoint::min() + delta,
- ZoomHistory(),
- Duration::zero()
- };
-
- return t1.evaluate(parameters, 0.0f);
- };
-
- ASSERT_FLOAT_EQ(0.0f, evaluate(0ms));
- ASSERT_FLOAT_EQ(0.823099f, evaluate(500ms));
- ASSERT_FLOAT_EQ(1.0f, evaluate(1500ms));
+ ASSERT_FLOAT_EQ(0.0f, evaluate(t1, 0ms));
+ ASSERT_FLOAT_EQ(0.823099f, evaluate(t1, 500ms));
+ ASSERT_FLOAT_EQ(1.0f, evaluate(t1, 1500ms));
}
TEST(UnevaluatedPaintProperty, EvaluateTransitionedConstantWithDelay) {
@@ -61,34 +66,23 @@ TEST(UnevaluatedPaintProperty, EvaluateTransitionedConstantWithDelay) {
transition.delay = { 1000ms };
transition.duration = { 1000ms };
- UnevaluatedPaintProperty<float, PropertyEvaluator<float>> t0 {
+ UnevaluatedPaintProperty<PropertyValue<float>> t0 {
PropertyValue<float>(0.0f),
- UnevaluatedPaintProperty<float, PropertyEvaluator<float>>(),
+ UnevaluatedPaintProperty<PropertyValue<float>>(),
TransitionOptions(),
TimePoint::min()
};
- UnevaluatedPaintProperty<float, PropertyEvaluator<float>> t1 {
+ UnevaluatedPaintProperty<PropertyValue<float>> t1 {
PropertyValue<float>(1.0f),
t0,
transition,
TimePoint::min()
};
- auto evaluate = [&] (Duration delta) {
- PropertyEvaluationParameters parameters {
- 0,
- TimePoint::min() + delta,
- ZoomHistory(),
- Duration::zero()
- };
-
- return t1.evaluate(parameters, 0.0f);
- };
-
- ASSERT_FLOAT_EQ(0.0f, evaluate(0ms));
- ASSERT_FLOAT_EQ(0.0f, evaluate(500ms));
- ASSERT_FLOAT_EQ(0.0f, evaluate(612ms));
- ASSERT_FLOAT_EQ(0.823099f, evaluate(1500ms));
- ASSERT_FLOAT_EQ(1.0f, evaluate(2500ms));
+ ASSERT_FLOAT_EQ(0.0f, evaluate(t1, 0ms));
+ ASSERT_FLOAT_EQ(0.0f, evaluate(t1, 500ms));
+ ASSERT_FLOAT_EQ(0.0f, evaluate(t1, 612ms));
+ ASSERT_FLOAT_EQ(0.823099f, evaluate(t1, 1500ms));
+ ASSERT_FLOAT_EQ(1.0f, evaluate(t1, 2500ms));
}
diff --git a/test/style/style_layer.test.cpp b/test/style/style_layer.test.cpp
index 773d172876..10b88c53d4 100644
--- a/test/style/style_layer.test.cpp
+++ b/test/style/style_layer.test.cpp
@@ -36,27 +36,27 @@ template <class T, class... Params> void testClone(Params... params) {
EXPECT_EQ("test", layer->baseImpl->clone()->getID());
}
-const auto color = PropertyValue<Color> {{ 1, 0, 0, 1 }};
-const auto opacity = PropertyValue<float> { 1.0f };
-const auto radius = PropertyValue<float> { 1.0f };
-const auto blur = PropertyValue<float> { 1.0f };
-const auto pattern = PropertyValue<std::string> { "foo" };
-const auto antialias = PropertyValue<bool> { false };
-const auto translate = PropertyValue<std::array<float, 2>> {{{ 0, 0 }}};
-const auto translateAnchor = PropertyValue<TranslateAnchorType> { TranslateAnchorType::Map };
-const auto lineCap = PropertyValue<LineCapType> { LineCapType::Round };
-const auto lineJoin = PropertyValue<LineJoinType> { LineJoinType::Miter };
-const auto miterLimit = PropertyValue<float> { 1.0f };
-const auto roundLimit = PropertyValue<float> { 1.0f };
-const auto width = PropertyValue<float> { 1.0f };
-const auto gapWidth = PropertyValue<float> { 1.0f };
-const auto offset = PropertyValue<float> { 1.0f };
-const auto dashArray = PropertyValue<std::vector<float>> {{}};
-const auto hueRotate = PropertyValue<float> { 1.0f };
-const auto brightness = PropertyValue<float> { 1.0f };
-const auto saturation = PropertyValue<float> { 1.0f };
-const auto contrast = PropertyValue<float> { 1.0f };
-const auto duration = PropertyValue<float> { 1.0f };
+const auto color = Color { 1, 0, 0, 1 };
+const auto opacity = 1.0f;
+const auto radius = 1.0f;
+const auto blur = 1.0f;
+const auto pattern = std::string { "foo" };
+const auto antialias = false;
+const auto translate = std::array<float, 2> {{ 0, 0 }};
+const auto translateAnchor = TranslateAnchorType::Map;
+const auto lineCap = LineCapType::Round;
+const auto lineJoin = LineJoinType::Miter;
+const auto miterLimit = 1.0f;
+const auto roundLimit = 1.0f;
+const auto width = 1.0f;
+const auto gapWidth = 1.0f;
+const auto offset = 1.0f;
+const auto dashArray = std::vector<float> {};
+const auto hueRotate = 1.0f;
+const auto brightness = 1.0f;
+const auto saturation = 1.0f;
+const auto contrast = 1.0f;
+const auto duration = 1.0f;
} // namespace
@@ -77,13 +77,13 @@ TEST(Layer, BackgroundProperties) {
// Paint properties
layer->setBackgroundColor(color);
- EXPECT_EQ(layer->getBackgroundColor().asConstant(), color.asConstant());
+ EXPECT_EQ(layer->getBackgroundColor(), color);
layer->setBackgroundOpacity(opacity);
- EXPECT_EQ(layer->getBackgroundOpacity().asConstant(), opacity.asConstant());
+ EXPECT_EQ(layer->getBackgroundOpacity(), opacity);
layer->setBackgroundPattern(pattern);
- EXPECT_EQ(layer->getBackgroundPattern().asConstant(), pattern.asConstant());
+ EXPECT_EQ(layer->getBackgroundPattern(), pattern);
}
TEST(Layer, CircleProperties) {
@@ -93,22 +93,22 @@ TEST(Layer, CircleProperties) {
// Paint properties
layer->setCircleColor(color);
- EXPECT_EQ(layer->getCircleColor().asConstant(), color.asConstant());
+ EXPECT_EQ(layer->getCircleColor(), color);
layer->setCircleOpacity(opacity);
- EXPECT_EQ(layer->getCircleOpacity().asConstant(), opacity.asConstant());
+ EXPECT_EQ(layer->getCircleOpacity(), opacity);
layer->setCircleRadius(radius);
- EXPECT_EQ(layer->getCircleRadius().asConstant(), radius.asConstant());
+ EXPECT_EQ(layer->getCircleRadius(), radius);
layer->setCircleBlur(blur);
- EXPECT_EQ(layer->getCircleBlur().asConstant(), blur.asConstant());
+ EXPECT_EQ(layer->getCircleBlur(), blur);
layer->setCircleTranslate(translate);
- EXPECT_EQ(layer->getCircleTranslate().asConstant(), translate.asConstant());
+ EXPECT_EQ(layer->getCircleTranslate(), translate);
layer->setCircleTranslateAnchor(translateAnchor);
- EXPECT_EQ(layer->getCircleTranslateAnchor().asConstant(), translateAnchor.asConstant());
+ EXPECT_EQ(layer->getCircleTranslateAnchor(), translateAnchor);
}
TEST(Layer, FillProperties) {
@@ -118,25 +118,25 @@ TEST(Layer, FillProperties) {
// Paint properties
layer->setFillColor(color);
- EXPECT_EQ(layer->getFillColor().asConstant(), color.asConstant());
+ EXPECT_EQ(layer->getFillColor(), color);
layer->setFillOutlineColor(color);
- EXPECT_EQ(layer->getFillOutlineColor().asConstant(), color.asConstant());
+ EXPECT_EQ(layer->getFillOutlineColor(), color);
layer->setFillOpacity(opacity);
- EXPECT_EQ(layer->getFillOpacity().asConstant(), opacity.asConstant());
+ EXPECT_EQ(layer->getFillOpacity(), opacity);
layer->setFillPattern(pattern);
- EXPECT_EQ(layer->getFillPattern().asConstant(), pattern.asConstant());
+ EXPECT_EQ(layer->getFillPattern(), pattern);
layer->setFillAntialias(antialias);
- EXPECT_EQ(layer->getFillAntialias().asConstant(), antialias.asConstant());
+ EXPECT_EQ(layer->getFillAntialias(), antialias);
layer->setFillTranslate(translate);
- EXPECT_EQ(layer->getFillTranslate().asConstant(), translate.asConstant());
+ EXPECT_EQ(layer->getFillTranslate(), translate);
layer->setFillTranslateAnchor(translateAnchor);
- EXPECT_EQ(layer->getFillTranslateAnchor().asConstant(), translateAnchor.asConstant());
+ EXPECT_EQ(layer->getFillTranslateAnchor(), translateAnchor);
}
TEST(Layer, LineProperties) {
@@ -146,48 +146,48 @@ TEST(Layer, LineProperties) {
// Layout properties
layer->setLineCap(lineCap);
- EXPECT_EQ(layer->getLineCap().asConstant(), lineCap.asConstant());
+ EXPECT_EQ(layer->getLineCap(), lineCap);
layer->setLineJoin(lineJoin);
- EXPECT_EQ(layer->getLineJoin().asConstant(), lineJoin.asConstant());
+ EXPECT_EQ(layer->getLineJoin(), lineJoin);
layer->setLineMiterLimit(miterLimit);
- EXPECT_EQ(layer->getLineMiterLimit().asConstant(), miterLimit.asConstant());
+ EXPECT_EQ(layer->getLineMiterLimit(), miterLimit);
layer->setLineRoundLimit(roundLimit);
- EXPECT_EQ(layer->getLineRoundLimit().asConstant(), roundLimit.asConstant());
+ EXPECT_EQ(layer->getLineRoundLimit(), roundLimit);
// Paint properties
layer->setLineColor(color);
- EXPECT_EQ(layer->getLineColor().asConstant(), color.asConstant());
+ EXPECT_EQ(layer->getLineColor(), color);
layer->setLineOpacity(opacity);
- EXPECT_EQ(layer->getLineOpacity().asConstant(), opacity.asConstant());
+ EXPECT_EQ(layer->getLineOpacity(), opacity);
layer->setLineTranslate(translate);
- EXPECT_EQ(layer->getLineTranslate().asConstant(), translate.asConstant());
+ EXPECT_EQ(layer->getLineTranslate(), translate);
layer->setLineTranslateAnchor(translateAnchor);
- EXPECT_EQ(layer->getLineTranslateAnchor().asConstant(), translateAnchor.asConstant());
+ EXPECT_EQ(layer->getLineTranslateAnchor(), translateAnchor);
layer->setLineWidth(width);
- EXPECT_EQ(layer->getLineWidth().asConstant(), width.asConstant());
+ EXPECT_EQ(layer->getLineWidth(), width);
layer->setLineGapWidth(gapWidth);
- EXPECT_EQ(layer->getLineGapWidth().asConstant(), gapWidth.asConstant());
+ EXPECT_EQ(layer->getLineGapWidth(), gapWidth);
layer->setLineOffset(offset);
- EXPECT_EQ(layer->getLineOffset().asConstant(), offset.asConstant());
+ EXPECT_EQ(layer->getLineOffset(), offset);
layer->setLineBlur(blur);
- EXPECT_EQ(layer->getLineBlur().asConstant(), blur.asConstant());
+ EXPECT_EQ(layer->getLineBlur(), blur);
layer->setLineDasharray(dashArray);
- EXPECT_EQ(layer->getLineDasharray().asConstant(), dashArray.asConstant());
+ EXPECT_EQ(layer->getLineDasharray(), dashArray);
layer->setLinePattern(pattern);
- EXPECT_EQ(layer->getLinePattern().asConstant(), pattern.asConstant());
+ EXPECT_EQ(layer->getLinePattern(), pattern);
}
TEST(Layer, RasterProperties) {
@@ -197,25 +197,25 @@ TEST(Layer, RasterProperties) {
// Paint properties
layer->setRasterOpacity(opacity);
- EXPECT_EQ(layer->getRasterOpacity().asConstant(), opacity.asConstant());
+ EXPECT_EQ(layer->getRasterOpacity(), opacity);
layer->setRasterHueRotate(hueRotate);
- EXPECT_EQ(layer->getRasterHueRotate().asConstant(), hueRotate.asConstant());
+ EXPECT_EQ(layer->getRasterHueRotate(), hueRotate);
layer->setRasterBrightnessMin(brightness);
- EXPECT_EQ(layer->getRasterBrightnessMin().asConstant(), brightness.asConstant());
+ EXPECT_EQ(layer->getRasterBrightnessMin(), brightness);
layer->setRasterBrightnessMax(brightness);
- EXPECT_EQ(layer->getRasterBrightnessMax().asConstant(), brightness.asConstant());
+ EXPECT_EQ(layer->getRasterBrightnessMax(), brightness);
layer->setRasterSaturation(saturation);
- EXPECT_EQ(layer->getRasterSaturation().asConstant(), saturation.asConstant());
+ EXPECT_EQ(layer->getRasterSaturation(), saturation);
layer->setRasterContrast(contrast);
- EXPECT_EQ(layer->getRasterContrast().asConstant(), contrast.asConstant());
+ EXPECT_EQ(layer->getRasterContrast(), contrast);
layer->setRasterFadeDuration(duration);
- EXPECT_EQ(layer->getRasterFadeDuration().asConstant(), duration.asConstant());
+ EXPECT_EQ(layer->getRasterFadeDuration(), duration);
}
TEST(Layer, Observer) {