diff options
-rw-r--r-- | cmake/test-files.cmake | 2 | ||||
-rw-r--r-- | include/mbgl/style/expression/interpolate.hpp | 38 | ||||
-rw-r--r-- | test/style/expression/expression.test.cpp (renamed from test/style/expression/is_expression.test.cpp) | 0 |
3 files changed, 15 insertions, 25 deletions
diff --git a/cmake/test-files.cmake b/cmake/test-files.cmake index 5df5fb38d1..31747e1d45 100644 --- a/cmake/test-files.cmake +++ b/cmake/test-files.cmake @@ -88,7 +88,7 @@ set(MBGL_TEST_FILES test/style/conversion/stringify.test.cpp # style/expression - test/style/expression/is_expression.test.cpp + test/style/expression/expression.test.cpp test/style/expression/util.test.cpp # style diff --git a/include/mbgl/style/expression/interpolate.hpp b/include/mbgl/style/expression/interpolate.hpp index cb3bfe8b4a..2dcb5a32a4 100644 --- a/include/mbgl/style/expression/interpolate.hpp +++ b/include/mbgl/style/expression/interpolate.hpp @@ -140,7 +140,20 @@ public: return upper.error(); } - return interpolate({*lower, *upper}, t); + if (!lower->is<T>()) { + return EvaluationError { + "Expected value to be of type " + toString(valueTypeToExpressionType<T>()) + + ", but found " + toString(typeOf(*lower)) + " instead." + }; + } + + if (!upper->is<T>()) { + return EvaluationError { + "Expected value to be of type " + toString(valueTypeToExpressionType<T>()) + + ", but found " + toString(typeOf(*upper)) + " instead." + }; + } + return util::interpolate(lower->get<T>(), upper->get<T>(), t); } } @@ -157,29 +170,6 @@ public: } return false; } - - -private: - static EvaluationResult interpolate(const Range<Value>& outputs, const double t) { - optional<T> lower = fromExpressionValue<T>(outputs.min); - if (!lower) { - // TODO - refactor fromExpressionValue to return EvaluationResult<T> so as to - // consolidate DRY up producing this error message. - return EvaluationError { - "Expected value to be of type " + toString(valueTypeToExpressionType<T>()) + - ", but found " + toString(typeOf(outputs.min)) + " instead." - }; - } - const optional<T> upper = fromExpressionValue<T>(outputs.max); - if (!upper) { - return EvaluationError { - "Expected value to be of type " + toString(valueTypeToExpressionType<T>()) + - ", but found " + toString(typeOf(outputs.min)) + " instead." - }; - } - T result = util::interpolate(*lower, *upper, t); - return toExpressionValue(result); - } }; } // namespace expression diff --git a/test/style/expression/is_expression.test.cpp b/test/style/expression/expression.test.cpp index 694569695c..694569695c 100644 --- a/test/style/expression/is_expression.test.cpp +++ b/test/style/expression/expression.test.cpp |