summaryrefslogtreecommitdiff
path: root/platform/darwin/test/MGLPredicateTests.mm
diff options
context:
space:
mode:
Diffstat (limited to 'platform/darwin/test/MGLPredicateTests.mm')
-rw-r--r--platform/darwin/test/MGLPredicateTests.mm155
1 files changed, 155 insertions, 0 deletions
diff --git a/platform/darwin/test/MGLPredicateTests.mm b/platform/darwin/test/MGLPredicateTests.mm
index f34b480a25..6e6951dcdd 100644
--- a/platform/darwin/test/MGLPredicateTests.mm
+++ b/platform/darwin/test/MGLPredicateTests.mm
@@ -41,12 +41,48 @@ namespace mbgl {
mbgl::style::EqualsFilter expected = { .key = "a", .value = std::string("b") };
MGLAssertEqualFilters(actual, expected);
}
+
+ {
+ auto actual = [NSPredicate predicateWithFormat:@"%K = 'Point'", @"$type"].mgl_filter;
+ mbgl::style::TypeEqualsFilter expected = { .value = mbgl::FeatureType::Point };
+ MGLAssertEqualFilters(actual, expected);
+ }
+
+ {
+ auto actual = [NSPredicate predicateWithFormat:@"%K = 67086180", @"$id"].mgl_filter;
+ mbgl::style::IdentifierEqualsFilter expected = { .value = UINT64_C(67086180) };
+ MGLAssertEqualFilters(actual, expected);
+ }
+
+ {
+ auto actual = [NSPredicate predicateWithFormat:@"%K = nil", @"$id"].mgl_filter;
+ mbgl::style::NotHasIdentifierFilter expected;
+ MGLAssertEqualFilters(actual, expected);
+ }
{
auto actual = [NSPredicate predicateWithFormat:@"a = nil"].mgl_filter;
mbgl::style::NotHasFilter expected = { .key = "a" };
MGLAssertEqualFilters(actual, expected);
}
+
+ {
+ auto actual = [NSPredicate predicateWithFormat:@"%K != 'Point'", @"$type"].mgl_filter;
+ mbgl::style::TypeNotEqualsFilter expected = { .value = mbgl::FeatureType::Point };
+ MGLAssertEqualFilters(actual, expected);
+ }
+
+ {
+ auto actual = [NSPredicate predicateWithFormat:@"%K != 67086180", @"$id"].mgl_filter;
+ mbgl::style::IdentifierNotEqualsFilter expected = { .value = UINT64_C(67086180) };
+ MGLAssertEqualFilters(actual, expected);
+ }
+
+ {
+ auto actual = [NSPredicate predicateWithFormat:@"%K != nil", @"$id"].mgl_filter;
+ mbgl::style::HasIdentifierFilter expected;
+ MGLAssertEqualFilters(actual, expected);
+ }
{
auto actual = [NSPredicate predicateWithFormat:@"a != 'b'"].mgl_filter;
@@ -117,6 +153,30 @@ namespace mbgl {
mbgl::style::InFilter expected = { .key = "a", .values = { std::string("b"), std::string("c") } };
MGLAssertEqualFilters(actual, expected);
}
+
+ {
+ auto actual = [NSPredicate predicateWithFormat:@"%K IN {'LineString', 'Polygon'}", @"$type"].mgl_filter;
+ mbgl::style::TypeInFilter expected = { .values = { mbgl::FeatureType::LineString, mbgl::FeatureType::Polygon } };
+ MGLAssertEqualFilters(actual, expected);
+ }
+
+ {
+ auto actual = [NSPredicate predicateWithFormat:@"%K IN %@", @"$type", @[@"LineString", @"Polygon"]].mgl_filter;
+ mbgl::style::TypeInFilter expected = { .values = { mbgl::FeatureType::LineString, mbgl::FeatureType::Polygon } };
+ MGLAssertEqualFilters(actual, expected);
+ }
+
+ {
+ auto actual = [NSPredicate predicateWithFormat:@"%K IN {67086180, 3709678893, 3352016856, 4189833989}", @"$id"].mgl_filter;
+ mbgl::style::IdentifierInFilter expected = { .values = { UINT64_C(67086180), UINT64_C(3709678893), UINT64_C(3352016856), UINT64_C(4189833989) } };
+ MGLAssertEqualFilters(actual, expected);
+ }
+
+ {
+ auto actual = [NSPredicate predicateWithFormat:@"%K IN %@", @"$id", @[@67086180, @3709678893, @3352016856, @4189833989]].mgl_filter;
+ mbgl::style::IdentifierInFilter expected = { .values = { UINT64_C(67086180), UINT64_C(3709678893), UINT64_C(3352016856), UINT64_C(4189833989) } };
+ MGLAssertEqualFilters(actual, expected);
+ }
XCTAssertThrowsSpecificNamed([NSPredicate predicateWithFormat:@"'Mapbox' IN a"].mgl_filter, NSException, NSInvalidArgumentException);
@@ -131,6 +191,24 @@ namespace mbgl {
mbgl::style::InFilter expected = { .key = "a", .values = { std::string("b"), std::string("c") } };
MGLAssertEqualFilters(actual, expected);
}
+
+ {
+ auto actual = [NSPredicate predicateWithFormat:@"%@ CONTAINS %K", @[@"LineString", @"Polygon"], @"$type"].mgl_filter;
+ mbgl::style::TypeInFilter expected = { .values = { mbgl::FeatureType::LineString, mbgl::FeatureType::Polygon } };
+ MGLAssertEqualFilters(actual, expected);
+ }
+
+ {
+ auto actual = [NSPredicate predicateWithFormat:@"{67086180, 3709678893, 3352016856, 4189833989} CONTAINS %K", @"$id"].mgl_filter;
+ mbgl::style::IdentifierInFilter expected = { .values = { UINT64_C(67086180), UINT64_C(3709678893), UINT64_C(3352016856), UINT64_C(4189833989) } };
+ MGLAssertEqualFilters(actual, expected);
+ }
+
+ {
+ auto actual = [NSPredicate predicateWithFormat:@"%@ CONTAINS %K", @[@67086180, @3709678893, @3352016856, @4189833989], @"$id"].mgl_filter;
+ mbgl::style::IdentifierInFilter expected = { .values = { UINT64_C(67086180), UINT64_C(3709678893), UINT64_C(3352016856), UINT64_C(4189833989) } };
+ MGLAssertEqualFilters(actual, expected);
+ }
XCTAssertThrowsSpecificNamed([NSPredicate predicateWithFormat:@"a CONTAINS 'Mapbox'"].mgl_filter, NSException, NSInvalidArgumentException);
@@ -238,6 +316,41 @@ namespace mbgl {
mbgl::style::EqualsFilter filter = { .key = "a", .value = std::string("b") };
XCTAssertEqualObjects([NSPredicate mgl_predicateWithFilter:filter], [NSPredicate predicateWithFormat:@"a = 'b'"]);
}
+
+ {
+ mbgl::style::TypeEqualsFilter filter = { .value = mbgl::FeatureType::Point };
+ NSPredicate *expected = [NSPredicate predicateWithFormat:@"%K = 'Point'", @"$type"];
+ XCTAssertEqualObjects([NSPredicate mgl_predicateWithFilter:filter], expected);
+ }
+
+ {
+ mbgl::style::TypeEqualsFilter filter = { .value = mbgl::FeatureType::LineString };
+ NSPredicate *expected = [NSPredicate predicateWithFormat:@"%K = 'LineString'", @"$type"];
+ XCTAssertEqualObjects([NSPredicate mgl_predicateWithFilter:filter], expected);
+ }
+
+ {
+ mbgl::style::TypeEqualsFilter filter = { .value = mbgl::FeatureType::Polygon };
+ NSPredicate *expected = [NSPredicate predicateWithFormat:@"%K = 'Polygon'", @"$type"];
+ XCTAssertEqualObjects([NSPredicate mgl_predicateWithFilter:filter], expected);
+ }
+
+ {
+ mbgl::style::IdentifierEqualsFilter filter = { .value = UINT64_C(67086180) };
+ NSPredicate *expected = [NSPredicate predicateWithFormat:@"%K = 67086180", @"$id"];
+ XCTAssertEqualObjects([NSPredicate mgl_predicateWithFilter:filter], expected);
+ }
+
+ {
+ mbgl::style::NotHasIdentifierFilter filter;
+ NSPredicate *expected = [NSPredicate predicateWithFormat:@"%K = nil", @"$id"];
+ XCTAssertEqualObjects([NSPredicate mgl_predicateWithFilter:filter], expected);
+ }
+
+ {
+ mbgl::style::TypeEqualsFilter filter = { .value = mbgl::FeatureType::Unknown };
+ XCTAssertThrowsSpecificNamed([NSPredicate mgl_predicateWithFilter:filter], NSException, NSInternalInconsistencyException);
+ }
{
mbgl::style::NotHasFilter filter = { .key = "a" };
@@ -248,6 +361,24 @@ namespace mbgl {
mbgl::style::NotEqualsFilter filter = { .key = "a", .value = std::string("b") };
XCTAssertEqualObjects([NSPredicate mgl_predicateWithFilter:filter], [NSPredicate predicateWithFormat:@"a != 'b'"]);
}
+
+ {
+ mbgl::style::TypeNotEqualsFilter filter = { .value = mbgl::FeatureType::Point };
+ NSPredicate *expected = [NSPredicate predicateWithFormat:@"%K != 'Point'", @"$type"];
+ XCTAssertEqualObjects([NSPredicate mgl_predicateWithFilter:filter], expected);
+ }
+
+ {
+ mbgl::style::IdentifierNotEqualsFilter filter = { .value = UINT64_C(67086180) };
+ NSPredicate *expected = [NSPredicate predicateWithFormat:@"%K != 67086180", @"$id"];
+ XCTAssertEqualObjects([NSPredicate mgl_predicateWithFilter:filter], expected);
+ }
+
+ {
+ mbgl::style::HasIdentifierFilter filter;
+ NSPredicate *expected = [NSPredicate predicateWithFormat:@"%K != nil", @"$id"];
+ XCTAssertEqualObjects([NSPredicate mgl_predicateWithFilter:filter], expected);
+ }
{
mbgl::style::HasFilter filter = { .key = "a" };
@@ -298,11 +429,35 @@ namespace mbgl {
mbgl::style::InFilter filter = { .key = "a", .values = { std::string("b"), std::string("c") } };
XCTAssertEqualObjects([NSPredicate mgl_predicateWithFilter:filter].predicateFormat, [NSPredicate predicateWithFormat:@"a IN {'b', 'c'}"].predicateFormat);
}
+
+ {
+ mbgl::style::TypeInFilter filter = { .values = { mbgl::FeatureType::LineString, mbgl::FeatureType::Polygon } };
+ NSPredicate *expected = [NSPredicate predicateWithFormat:@"%K IN {'LineString', 'Polygon'}", @"$type"];
+ XCTAssertEqualObjects([NSPredicate mgl_predicateWithFilter:filter].predicateFormat, expected.predicateFormat);
+ }
+
+ {
+ mbgl::style::IdentifierInFilter filter = { .values = { UINT64_C(67086180), UINT64_C(3709678893), UINT64_C(3352016856), UINT64_C(4189833989) } };
+ NSPredicate *expected = [NSPredicate predicateWithFormat:@"%K IN {67086180, 3709678893, 3352016856, 4189833989}", @"$id"];
+ XCTAssertEqualObjects([NSPredicate mgl_predicateWithFilter:filter], expected);
+ }
{
mbgl::style::NotInFilter filter = { .key = "a", .values = { std::string("b"), std::string("c") } };
XCTAssertEqualObjects([NSPredicate mgl_predicateWithFilter:filter].predicateFormat, [NSPredicate predicateWithFormat:@"NOT a IN {'b', 'c'}"].predicateFormat);
}
+
+ {
+ mbgl::style::TypeNotInFilter filter = { .values = { mbgl::FeatureType::LineString, mbgl::FeatureType::Polygon } };
+ NSPredicate *expected = [NSPredicate predicateWithFormat:@"NOT %K IN {'LineString', 'Polygon'}", @"$type"];
+ XCTAssertEqualObjects([NSPredicate mgl_predicateWithFilter:filter].predicateFormat, expected.predicateFormat);
+ }
+
+ {
+ mbgl::style::IdentifierNotInFilter filter = { .values = { UINT64_C(67086180), UINT64_C(3709678893), UINT64_C(3352016856), UINT64_C(4189833989) } };
+ NSPredicate *expected = [NSPredicate predicateWithFormat:@"NOT %K IN {67086180, 3709678893, 3352016856, 4189833989}", @"$id"];
+ XCTAssertEqualObjects([NSPredicate mgl_predicateWithFilter:filter], expected);
+ }
{
mbgl::style::AllFilter filter;