diff options
Diffstat (limited to 'test/style')
-rw-r--r-- | test/style/conversion/function.test.cpp | 2 | ||||
-rw-r--r-- | test/style/conversion/stringify.test.cpp | 33 | ||||
-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.cpp | 76 | ||||
-rw-r--r-- | test/style/style_layer.test.cpp | 116 |
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) { |