diff --git a/test/style/source.test.cpp b/test/style/source.test.cpp index a08d11c7a..d9dc0d9d8 100644 --- a/test/style/source.test.cpp +++ b/test/style/source.test.cpp @@ -3,20 +3,22 @@ #include #include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include #include #include -#include -#include #include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include @@ -906,3 +908,25 @@ TEST(Source, RenderTileSetSourceUpdate) { VectorSource uninitialized("source", "http://url"); renderSource->update(uninitialized.baseImpl, layers, true, true, test.tileParameters); } + +TEST(Source, GeoJSONSourceTilesRemainAfterDataReset) { + SourceTest test; + GeoJSONSource source("source"); + source.setGeoJSONData(GeoJSONData::create( + mapbox::geojson::parse( + R"({"geometry": {"type": "Point", "coordinates": [1.1, 1.1]}, "type": "Feature", "properties": {}})"), + {})); + RenderGeoJSONSource renderSource{staticImmutableCast(source.baseImpl)}; + + CircleLayer layer("id", "source"); + Immutable layerProperties = + makeMutable(staticImmutableCast(layer.baseImpl)); + std::vector> layers{layerProperties}; + + static_cast(renderSource).update(source.baseImpl, layers, true, true, test.tileParameters); + EXPECT_FALSE(renderSource.isLoaded()); // loaded == false, means that the source contains pending tiles. + + source.setGeoJSONData(nullptr); + static_cast(renderSource).update(source.baseImpl, layers, true, true, test.tileParameters); + EXPECT_FALSE(renderSource.isLoaded()); // Tiles remain. +} \ No newline at end of file