Merge pull request #1464 from mapbox/1ec5-type-in
Parse feature types in set filters
This commit is contained in:
@@ -59,7 +59,11 @@ FilterExpression parseSetFilter(const rapidjson::Value& value) {
|
||||
Expression expression;
|
||||
expression.key = { value[1u].GetString(), value[1u].GetStringLength() };
|
||||
for (rapidjson::SizeType i = 2; i < value.Size(); ++i) {
|
||||
expression.values.push_back(parseValue(value[i]));
|
||||
Value parsedValue = parseValue(value[i]);
|
||||
if (expression.key == "$type") {
|
||||
parsedValue = parseFeatureType(parsedValue);
|
||||
}
|
||||
expression.values.push_back(parsedValue);
|
||||
}
|
||||
return expression;
|
||||
}
|
||||
|
||||
@@ -72,6 +72,13 @@ TEST(FilterComparison, EqualsType) {
|
||||
ASSERT_TRUE(evaluate(f, {{}}, FeatureType::LineString));
|
||||
}
|
||||
|
||||
TEST(FilterComparison, InType) {
|
||||
FilterExpression f = parse("[\"in\", \"$type\", \"LineString\", \"Polygon\"]");
|
||||
ASSERT_FALSE(evaluate(f, {{}}, FeatureType::Point));
|
||||
ASSERT_TRUE(evaluate(f, {{}}, FeatureType::LineString));
|
||||
ASSERT_TRUE(evaluate(f, {{}}, FeatureType::Polygon));
|
||||
}
|
||||
|
||||
TEST(FilterComparison, Any) {
|
||||
ASSERT_FALSE(evaluate(parse("[\"any\"]"), {{}}));
|
||||
ASSERT_TRUE(evaluate(parse("[\"any\", [\"==\", \"foo\", 1]]"),
|
||||
|
||||
Reference in New Issue
Block a user