add methods getTiles and setTiles to mimick maplibre-gl-js interface (#149)

This commit is contained in:
Nathan Gass
2024-01-05 17:29:26 +01:00
committed by GitHub
parent 210eb45b44
commit fe728ebdd8
3 changed files with 71 additions and 0 deletions

View File

@@ -919,6 +919,50 @@ TEST(Source, RenderTileSetSourceUpdate) {
renderSource->update(uninitialized.baseImpl, layers, true, true, test.tileParameters());
}
TEST(Source, VectorSourceSetTiles) {
SourceTest test;
test.styleObserver.sourceChanged = [&](Source& source) {
EXPECT_EQ(source.as<VectorSource>()->getTiles(), std::vector<std::string>{"new"});
test.end();
};
VectorSource source("source", Tileset{{"url"}});
source.setObserver(&test.styleObserver);
source.setTiles({"unused"}); // make sure early setTiles does not segfault
source.loadDescription(*test.fileSource);
EXPECT_EQ(source.as<VectorSource>()->getTiles(), std::vector<std::string>{"url"});
source.setTiles({"new"});
test.run();
}
TEST(Source, VectorSourceUrlSetTiles) {
SourceTest test;
test.styleObserver.sourceLoaded = [&](Source& source) {
EXPECT_EQ(source.as<VectorSource>()->getTiles(), std::vector<std::string>{"tiles"});
source.as<VectorSource>()->setTiles({"new"});
};
int count = 0;
test.styleObserver.sourceChanged = [&](Source& source) {
if (count++) {
EXPECT_EQ(source.as<VectorSource>()->getTiles(), std::vector<std::string>{"new"});
test.end();
}
};
test.fileSource->sourceResponse = [&](const Resource& resource) {
EXPECT_EQ("url", resource.url);
Response response;
response.data = std::make_unique<std::string>(R"({"tiles": ["tiles"]})");
return response;
};
VectorSource source("source", "url");
source.setObserver(&test.styleObserver);
source.setTiles({"unused"});
source.loadDescription(*test.fileSource);
test.run();
}
TEST(Source, GeoJSONSourceTilesAfterDataReset) {
SourceTest test;
GeoJSONSource source("source");