From 517659b1b44a4e31e1035d4da9c444380454ad58 Mon Sep 17 00:00:00 2001 From: Ivo van Dongen Date: Sat, 4 Mar 2017 18:44:33 -0800 Subject: [core] query source features --- test/api/query.test.cpp | 41 ++++++++++++++++++++++++++++++++++++++ test/fixtures/api/query_style.json | 9 +++++++++ 2 files changed, 50 insertions(+) (limited to 'test') diff --git a/test/api/query.test.cpp b/test/api/query.test.cpp index b42046fb48..45e6b19268 100644 --- a/test/api/query.test.cpp +++ b/test/api/query.test.cpp @@ -8,6 +8,7 @@ #include #include #include +#include using namespace mbgl; using namespace mbgl::style; @@ -81,3 +82,43 @@ TEST(Query, QueryRenderedFeaturesFilter) { auto features3 = test.map.queryRenderedFeatures(zz, {{ }, { gtFilter }}); EXPECT_EQ(features3.size(), 1u); } + +TEST(Query, QuerySourceFeatures) { + QueryTest test; + + auto features1 = test.map.getSource("source3")->querySourceFeatures(); + EXPECT_EQ(features1.size(), 1u); +} + +TEST(Query, QuerySourceFeaturesOptionValidation) { + QueryTest test; + + // GeoJSONSource, doesn't require a layer id + auto features = test.map.getSource("source3")->querySourceFeatures(); + ASSERT_EQ(features.size(), 1u); + + // VectorSource, requires a layer id + features = test.map.getSource("source5")->querySourceFeatures(); + ASSERT_EQ(features.size(), 0u); + + // RasterSource, not supported + features = test.map.getSource("source6")->querySourceFeatures(); + ASSERT_EQ(features.size(), 0u); +} + +TEST(Query, QuerySourceFeaturesFilter) { + QueryTest test; + + const EqualsFilter eqFilter = { "key1", std::string("value1") }; + auto features1 = test.map.getSource("source4")->querySourceFeatures({{}, { eqFilter }}); + EXPECT_EQ(features1.size(), 1u); + + const IdentifierNotEqualsFilter idNotEqFilter = { std::string("feature1") }; + auto features2 = test.map.getSource("source4")->querySourceFeatures({{}, { idNotEqFilter }}); + EXPECT_EQ(features2.size(), 0u); + + const GreaterThanFilter gtFilter = { "key2", 1.0 }; + auto features3 = test.map.getSource("source4")->querySourceFeatures({{}, { gtFilter }}); + EXPECT_EQ(features3.size(), 1u); +} + diff --git a/test/fixtures/api/query_style.json b/test/fixtures/api/query_style.json index 4e11921775..97f1d04432 100644 --- a/test/fixtures/api/query_style.json +++ b/test/fixtures/api/query_style.json @@ -50,6 +50,15 @@ "key4": 0.5 } } + }, + "source5": { + "type": "vector", + "url": "mapbox://mapbox.mapbox-streets-v6" + }, + "source6": { + "type": "raster", + "url": "mapbox://mapbox.satellite", + "tileSize": 256 } }, "layers": [ -- cgit v1.2.1