diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2016-04-25 09:51:47 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2016-04-25 09:51:47 -0700 |
commit | c4089b60bc630ee78c6755ebd7702943a30dd07d (patch) | |
tree | 662db1271ba46939efc6395b97fb609f828876a2 /test | |
parent | 42043599ffca9658d47792a85c136cb2384e35ed (diff) | |
download | qtlocation-mapboxgl-c4089b60bc630ee78c6755ebd7702943a30dd07d.tar.gz |
[core] Extract Function::evaluation to a separate class (#4811)
This allows the Function<Faded<T>> partial specialization to be eliminated, giving all property functions a consistent storage type.
Diffstat (limited to 'test')
-rw-r--r-- | test/style/functions.cpp | 78 |
1 files changed, 41 insertions, 37 deletions
diff --git a/test/style/functions.cpp b/test/style/functions.cpp index 26b952d7b4..2389459dbc 100644 --- a/test/style/functions.cpp +++ b/test/style/functions.cpp @@ -2,58 +2,62 @@ #include <mbgl/test/util.hpp> #include <mbgl/style/function.hpp> +#include <mbgl/style/function_evaluator.hpp> #include <mbgl/style/style_calculation_parameters.hpp> using namespace mbgl; TEST(Function, Constant) { - EXPECT_EQ(2.0f, mbgl::Function<float>(2).evaluate(StyleCalculationParameters(0))); - EXPECT_EQ(3.8f, mbgl::Function<float>(3.8).evaluate(StyleCalculationParameters(0))); - EXPECT_EQ(22.0f, mbgl::Function<float>(22).evaluate(StyleCalculationParameters(0))); - EXPECT_EQ(2.0f, mbgl::Function<float>(2).evaluate(StyleCalculationParameters(4))); - EXPECT_EQ(3.8f, mbgl::Function<float>(3.8).evaluate(StyleCalculationParameters(4))); - EXPECT_EQ(22.0f, mbgl::Function<float>(22).evaluate(StyleCalculationParameters(4))); - EXPECT_EQ(2.0f, mbgl::Function<float>(2).evaluate(StyleCalculationParameters(22))); - EXPECT_EQ(3.8f, mbgl::Function<float>(3.8).evaluate(StyleCalculationParameters(22))); - EXPECT_EQ(22.0f, mbgl::Function<float>(22).evaluate(StyleCalculationParameters(22))); + NormalFunctionEvaluator<float> evaluate; + EXPECT_EQ(2.0f, evaluate(Function<float>(2), StyleCalculationParameters(0))); + EXPECT_EQ(3.8f, evaluate(Function<float>(3.8), StyleCalculationParameters(0))); + EXPECT_EQ(22.0f, evaluate(Function<float>(22), StyleCalculationParameters(0))); + EXPECT_EQ(2.0f, evaluate(Function<float>(2), StyleCalculationParameters(4))); + EXPECT_EQ(3.8f, evaluate(Function<float>(3.8), StyleCalculationParameters(4))); + EXPECT_EQ(22.0f, evaluate(Function<float>(22), StyleCalculationParameters(4))); + EXPECT_EQ(2.0f, evaluate(Function<float>(2), StyleCalculationParameters(22))); + EXPECT_EQ(3.8f, evaluate(Function<float>(3.8), StyleCalculationParameters(22))); + EXPECT_EQ(22.0f, evaluate(Function<float>(22), StyleCalculationParameters(22))); } TEST(Function, Stops) { + NormalFunctionEvaluator<float> evaluate; + // Explicit constant slope in fringe regions. - mbgl::Function<float> slope_1({ { 0, 1.5 }, { 6, 1.5 }, { 8, 3 }, { 22, 3 } }, 1.75); - EXPECT_EQ(1.5, slope_1.evaluate(StyleCalculationParameters(0))); - EXPECT_EQ(1.5, slope_1.evaluate(StyleCalculationParameters(4))); - EXPECT_EQ(1.5, slope_1.evaluate(StyleCalculationParameters(6))); - ASSERT_FLOAT_EQ(2.0454545454545454, slope_1.evaluate(StyleCalculationParameters(7))); - EXPECT_EQ(3.0, slope_1.evaluate(StyleCalculationParameters(8))); - EXPECT_EQ(3.0, slope_1.evaluate(StyleCalculationParameters(9))); - EXPECT_EQ(3.0, slope_1.evaluate(StyleCalculationParameters(15))); - EXPECT_EQ(3.0, slope_1.evaluate(StyleCalculationParameters(22))); + Function<float> slope_1({ { 0, 1.5 }, { 6, 1.5 }, { 8, 3 }, { 22, 3 } }, 1.75); + EXPECT_EQ(1.5, evaluate(slope_1, StyleCalculationParameters(0))); + EXPECT_EQ(1.5, evaluate(slope_1, StyleCalculationParameters(4))); + EXPECT_EQ(1.5, evaluate(slope_1, StyleCalculationParameters(6))); + ASSERT_FLOAT_EQ(2.0454545454545454, evaluate(slope_1, StyleCalculationParameters(7))); + EXPECT_EQ(3.0, evaluate(slope_1, StyleCalculationParameters(8))); + EXPECT_EQ(3.0, evaluate(slope_1, StyleCalculationParameters(9))); + EXPECT_EQ(3.0, evaluate(slope_1, StyleCalculationParameters(15))); + EXPECT_EQ(3.0, evaluate(slope_1, StyleCalculationParameters(22))); // Test constant values in fringe regions. - mbgl::Function<float> slope_2({ { 6, 1.5 }, { 8, 3 } }, 1.75); - EXPECT_EQ(1.5, slope_2.evaluate(StyleCalculationParameters(0))); - EXPECT_EQ(1.5, slope_2.evaluate(StyleCalculationParameters(4))); - EXPECT_EQ(1.5, slope_2.evaluate(StyleCalculationParameters(6))); - ASSERT_FLOAT_EQ(2.0454545454545454, slope_2.evaluate(StyleCalculationParameters(7))); - EXPECT_EQ(3.0, slope_2.evaluate(StyleCalculationParameters(8))); - EXPECT_EQ(3.0, slope_2.evaluate(StyleCalculationParameters(9))); - EXPECT_EQ(3.0, slope_2.evaluate(StyleCalculationParameters(15))); - EXPECT_EQ(3.0, slope_2.evaluate(StyleCalculationParameters(22))); + Function<float> slope_2({ { 6, 1.5 }, { 8, 3 } }, 1.75); + EXPECT_EQ(1.5, evaluate(slope_2, StyleCalculationParameters(0))); + EXPECT_EQ(1.5, evaluate(slope_2, StyleCalculationParameters(4))); + EXPECT_EQ(1.5, evaluate(slope_2, StyleCalculationParameters(6))); + ASSERT_FLOAT_EQ(2.0454545454545454, evaluate(slope_2, StyleCalculationParameters(7))); + EXPECT_EQ(3.0, evaluate(slope_2, StyleCalculationParameters(8))); + EXPECT_EQ(3.0, evaluate(slope_2, StyleCalculationParameters(9))); + EXPECT_EQ(3.0, evaluate(slope_2, StyleCalculationParameters(15))); + EXPECT_EQ(3.0, evaluate(slope_2, StyleCalculationParameters(22))); // Test no values. - mbgl::Function<float> slope_3({}, 1.75); - EXPECT_EQ(1, slope_3.evaluate(StyleCalculationParameters(2))); - EXPECT_EQ(1, slope_3.evaluate(StyleCalculationParameters(6))); - EXPECT_EQ(1, slope_3.evaluate(StyleCalculationParameters(12))); + Function<float> slope_3({}, 1.75); + EXPECT_EQ(1, evaluate(slope_3, StyleCalculationParameters(2))); + EXPECT_EQ(1, evaluate(slope_3, StyleCalculationParameters(6))); + EXPECT_EQ(1, evaluate(slope_3, StyleCalculationParameters(12))); // Explicit constant slope in fringe regions. - mbgl::Function<float> slope_4({ { 0, 2 }, { 8, 10 } }, 1); - EXPECT_EQ(2, slope_4.evaluate(StyleCalculationParameters(0))); - EXPECT_EQ(3, slope_4.evaluate(StyleCalculationParameters(1))); - EXPECT_EQ(4, slope_4.evaluate(StyleCalculationParameters(2))); - EXPECT_EQ(4.75, slope_4.evaluate(StyleCalculationParameters(2.75))); - EXPECT_EQ(10, slope_4.evaluate(StyleCalculationParameters(8))); + Function<float> slope_4({ { 0, 2 }, { 8, 10 } }, 1); + EXPECT_EQ(2, evaluate(slope_4, StyleCalculationParameters(0))); + EXPECT_EQ(3, evaluate(slope_4, StyleCalculationParameters(1))); + EXPECT_EQ(4, evaluate(slope_4, StyleCalculationParameters(2))); + EXPECT_EQ(4.75, evaluate(slope_4, StyleCalculationParameters(2.75))); + EXPECT_EQ(10, evaluate(slope_4, StyleCalculationParameters(8))); } |