diff options
author | Thiago Marcos P. Santos <thiago@mapbox.com> | 2016-09-29 15:31:37 +0300 |
---|---|---|
committer | Thiago Marcos P. Santos <tmpsantos@gmail.com> | 2016-10-05 11:12:16 +0300 |
commit | 82b801250ef69cc9dc5f73f64c41ce6d37b86270 (patch) | |
tree | 1e67c6c2a0126e35db5192f65ad651d091480e5e /test | |
parent | 5829c0dbc6e7785cec5af12891ba2ead784d1a69 (diff) | |
download | qtlocation-mapboxgl-82b801250ef69cc9dc5f73f64c41ce6d37b86270.tar.gz |
[tests] Add unit tests for query features fiters
Diffstat (limited to 'test')
-rw-r--r-- | test/api/query.test.cpp | 62 | ||||
-rw-r--r-- | test/fixtures/api/query_style.json | 61 |
2 files changed, 123 insertions, 0 deletions
diff --git a/test/api/query.test.cpp b/test/api/query.test.cpp new file mode 100644 index 0000000000..7da0f4311c --- /dev/null +++ b/test/api/query.test.cpp @@ -0,0 +1,62 @@ +#include <mbgl/map/map.hpp> +#include <mbgl/platform/default/headless_display.hpp> +#include <mbgl/platform/default/headless_view.hpp> +#include <mbgl/sprite/sprite_image.hpp> +#include <mbgl/test/stub_file_source.hpp> +#include <mbgl/test/util.hpp> +#include <mbgl/util/image.hpp> +#include <mbgl/util/io.hpp> +#include <mbgl/util/run_loop.hpp> + +using namespace mbgl; + +namespace { + +class QueryTest { +public: + QueryTest() { + auto decoded = decodeImage(util::read_file("test/fixtures/sprites/default_marker.png")); + auto image = std::make_unique<SpriteImage>(std::move(decoded), 1.0); + + map.setStyleJSON(util::read_file("test/fixtures/api/query_style.json")); + map.addImage("test-icon", std::move(image)); + + test::render(map); + } + + util::RunLoop loop; + std::shared_ptr<HeadlessDisplay> display { std::make_shared<HeadlessDisplay>() }; + HeadlessView view { display, 1 }; + StubFileSource fileSource; + Map map { view, fileSource, MapMode::Still }; +}; + +} // end namespace + +TEST(Query, QueryRenderedFeatures) { + QueryTest test; + + auto features1 = test.map.queryRenderedFeatures(test.map.pixelForLatLng({ 0, 0 })); + EXPECT_EQ(features1.size(), 3u); + + auto features2 = test.map.queryRenderedFeatures(test.map.pixelForLatLng({ 9, 9 })); + EXPECT_EQ(features2.size(), 0u); +} + +TEST(Query, QueryRenderedFeaturesFilterLayer) { + QueryTest test; + + auto zz = test.map.pixelForLatLng({ 0, 0 }); + + auto features1 = test.map.queryRenderedFeatures(zz, {{ "layer1"}}); + EXPECT_EQ(features1.size(), 1u); + + auto features2 = test.map.queryRenderedFeatures(zz, {{ "layer1", "layer2" }}); + EXPECT_EQ(features2.size(), 2u); + + auto features3 = test.map.queryRenderedFeatures(zz, {{ "foobar" }}); + EXPECT_EQ(features3.size(), 0u); + + auto features4 = test.map.queryRenderedFeatures(zz, {{ "foobar", "layer3" }}); + EXPECT_EQ(features4.size(), 1u); +} diff --git a/test/fixtures/api/query_style.json b/test/fixtures/api/query_style.json new file mode 100644 index 0000000000..6978e1ba1b --- /dev/null +++ b/test/fixtures/api/query_style.json @@ -0,0 +1,61 @@ +{ + "version": 8, + "sources": { + "source1": { + "type": "geojson", + "data": { + "type": "Point", + "coordinates": [ + 0, + 0 + ] + } + }, + "source2": { + "type": "geojson", + "data": { + "type": "Point", + "coordinates": [ + 0, + 0 + ] + } + }, + "source3": { + "type": "geojson", + "data": { + "type": "Point", + "coordinates": [ + 0, + 0 + ] + } + } + }, + "layers": [ + { + "id": "layer1", + "type": "symbol", + "source": "source1", + "layout": { + "icon-image": "test-icon" + } + }, + { + "id": "layer2", + "type": "symbol", + "source": "source2", + "layout": { + "icon-image": "test-icon" + } + }, + { + "id": "layer3", + "type": "symbol", + "source": "source3", + "layout": { + "icon-image": "test-icon" + } + } + ] +} |