diff options
Diffstat (limited to 'test/comparisons.cpp')
-rw-r--r-- | test/comparisons.cpp | 103 |
1 files changed, 0 insertions, 103 deletions
diff --git a/test/comparisons.cpp b/test/comparisons.cpp deleted file mode 100644 index 0daa78ab77..0000000000 --- a/test/comparisons.cpp +++ /dev/null @@ -1,103 +0,0 @@ -#include <iostream> -#include "../util.hpp" - -#include <mbgl/map/vector_tile.hpp> -#include <mbgl/style/filter_expression.hpp> -#include <mbgl/style/filter_expression_private.hpp> - -#include <map> - -using namespace mbgl; - -typedef std::multimap<std::string, mbgl::Value> Properties; - -class Extractor { -public: - inline Extractor(const Properties& properties_, FeatureType type_) - : properties(properties_) - , type(type_) - {} - - mapbox::util::optional<Value> getValue(const std::string &key) const { - if (key == "$type") - return Value(uint64_t(type)); - auto it = properties.find(key); - if (it == properties.end()) - return mapbox::util::optional<Value>(); - return it->second; - } - - FeatureType getType() const { - return type; - } - -private: - const Properties properties; - FeatureType type; -}; - -FilterExpression parse(const char * expression) { - rapidjson::Document doc; - doc.Parse<0>(expression); - return parseFilterExpression(doc); -} - -bool evaluate(const FilterExpression& expression, const Properties& properties, FeatureType type = FeatureType::Unknown) { - return mbgl::evaluate(expression, Extractor(properties, type)); -} - -TEST(FilterComparison, EqualsString) { - FilterExpression f = parse("[\"==\", \"foo\", \"bar\"]"); - ASSERT_TRUE(evaluate(f, {{ "foo", std::string("bar") }})); - ASSERT_FALSE(evaluate(f, {{ "foo", std::string("baz") }})); -}; - -TEST(FilterComparison, EqualsNumber) { - FilterExpression f = parse("[\"==\", \"foo\", 0]"); - ASSERT_TRUE(evaluate(f, {{ "foo", int64_t(0) }})); - ASSERT_TRUE(evaluate(f, {{ "foo", uint64_t(0) }})); - ASSERT_TRUE(evaluate(f, {{ "foo", double(0) }})); - ASSERT_FALSE(evaluate(f, {{ "foo", int64_t(1) }})); - ASSERT_FALSE(evaluate(f, {{ "foo", uint64_t(1) }})); - ASSERT_FALSE(evaluate(f, {{ "foo", double(1) }})); - ASSERT_FALSE(evaluate(f, {{ "foo", std::string("0") }})); - ASSERT_FALSE(evaluate(f, {{ "foo", false }})); - ASSERT_FALSE(evaluate(f, {{ "foo", true }})); - ASSERT_FALSE(evaluate(f, {{}})); -} - -TEST(FilterComparison, EqualsType) { - FilterExpression f = parse("[\"==\", \"$type\", \"LineString\"]"); - ASSERT_FALSE(evaluate(f, {{}}, FeatureType::Point)); - ASSERT_TRUE(evaluate(f, {{}}, FeatureType::LineString)); -} - -TEST(FilterComparison, Any) { - ASSERT_FALSE(evaluate(parse("[\"any\"]"), {{}})); - ASSERT_TRUE(evaluate(parse("[\"any\", [\"==\", \"foo\", 1]]"), - {{ std::string("foo"), int64_t(1) }})); - ASSERT_FALSE(evaluate(parse("[\"any\", [\"==\", \"foo\", 0]]"), - {{ std::string("foo"), int64_t(1) }})); - ASSERT_TRUE(evaluate(parse("[\"any\", [\"==\", \"foo\", 0], [\"==\", \"foo\", 1]]"), - {{ std::string("foo"), int64_t(1) }})); -} - -TEST(FilterComparison, All) { - ASSERT_TRUE(evaluate(parse("[\"all\"]"), {{}})); - ASSERT_TRUE(evaluate(parse("[\"all\", [\"==\", \"foo\", 1]]"), - {{ std::string("foo"), int64_t(1) }})); - ASSERT_FALSE(evaluate(parse("[\"all\", [\"==\", \"foo\", 0]]"), - {{ std::string("foo"), int64_t(1) }})); - ASSERT_FALSE(evaluate(parse("[\"all\", [\"==\", \"foo\", 0], [\"==\", \"foo\", 1]]"), - {{ std::string("foo"), int64_t(1) }})); -} - -TEST(FilterComparison, None) { - ASSERT_TRUE(evaluate(parse("[\"none\"]"), {{}})); - ASSERT_FALSE(evaluate(parse("[\"none\", [\"==\", \"foo\", 1]]"), - {{ std::string("foo"), int64_t(1) }})); - ASSERT_TRUE(evaluate(parse("[\"none\", [\"==\", \"foo\", 0]]"), - {{ std::string("foo"), int64_t(1) }})); - ASSERT_FALSE(evaluate(parse("[\"none\", [\"==\", \"foo\", 0], [\"==\", \"foo\", 1]]"), - {{ std::string("foo"), int64_t(1) }})); -} |