[core] Correct boolean function interpolation
This commit is contained in:
@@ -62,6 +62,10 @@ struct Uninterpolated {
|
||||
}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct Interpolator<bool>
|
||||
: Uninterpolated {};
|
||||
|
||||
template <class T>
|
||||
struct Interpolator<T, typename std::enable_if_t<std::is_enum<T>::value>>
|
||||
: Uninterpolated {};
|
||||
|
||||
@@ -13,17 +13,20 @@ float evaluate(PropertyValue<float> value, float zoom) {
|
||||
std::string evaluate(PropertyValue<std::string> value, float zoom) {
|
||||
return value.evaluate(PropertyEvaluator<std::string>(PropertyEvaluationParameters(zoom), ""));
|
||||
}
|
||||
bool evaluate(PropertyValue<bool> value, float zoom) {
|
||||
return value.evaluate(PropertyEvaluator<bool>(PropertyEvaluationParameters(zoom), false));
|
||||
}
|
||||
|
||||
TEST(Function, Constant) {
|
||||
EXPECT_EQ(2.0f, evaluate(2, 0));
|
||||
EXPECT_EQ(3.8f, evaluate(3.8, 0));
|
||||
EXPECT_EQ(22.0f, evaluate(22, 0));
|
||||
EXPECT_EQ(2.0f, evaluate(2, 4));
|
||||
EXPECT_EQ(3.8f, evaluate(3.8, 4));
|
||||
EXPECT_EQ(22.0f, evaluate(22, 4));
|
||||
EXPECT_EQ(2.0f, evaluate(2, 22));
|
||||
EXPECT_EQ(3.8f, evaluate(3.8, 22));
|
||||
EXPECT_EQ(22.0f, evaluate(22, 22));
|
||||
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));
|
||||
EXPECT_EQ(2.0f, evaluate(PropertyValue<float>(2.0), 4));
|
||||
EXPECT_EQ(3.8f, evaluate(PropertyValue<float>(3.8), 4));
|
||||
EXPECT_EQ(22.0f, evaluate(PropertyValue<float>(22.0), 4));
|
||||
EXPECT_EQ(2.0f, evaluate(PropertyValue<float>(2.0), 22));
|
||||
EXPECT_EQ(3.8f, evaluate(PropertyValue<float>(3.8), 22));
|
||||
EXPECT_EQ(22.0f, evaluate(PropertyValue<float>(22.0), 22));
|
||||
}
|
||||
|
||||
TEST(Function, Stops) {
|
||||
@@ -60,10 +63,17 @@ TEST(Function, Stops) {
|
||||
EXPECT_EQ(10, evaluate(slope_4, 8));
|
||||
|
||||
// discrete values
|
||||
Function<std::string> discrete_0({{ 3, "string0"}, {6, "string1"}, {9, "string2"}}, 1);
|
||||
Function<std::string> discrete_0({{3, "string0"}, {6, "string1"}, {9, "string2"}}, 1);
|
||||
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);
|
||||
EXPECT_EQ(false, evaluate(discreteBool, 0));
|
||||
EXPECT_EQ(false, evaluate(discreteBool, 1));
|
||||
EXPECT_EQ(false, evaluate(discreteBool, 2));
|
||||
EXPECT_EQ(true, evaluate(discreteBool, 3));
|
||||
EXPECT_EQ(true, evaluate(discreteBool, 4));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user