summaryrefslogtreecommitdiff
path: root/test/style/source.test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/style/source.test.cpp')
-rw-r--r--test/style/source.test.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/test/style/source.test.cpp b/test/style/source.test.cpp
index 859aa82893..3270894a59 100644
--- a/test/style/source.test.cpp
+++ b/test/style/source.test.cpp
@@ -381,3 +381,37 @@ TEST(Source, RasterTileAttribution) {
test.run();
}
+
+TEST(Source, GeoJSonSourceUrlUpdate) {
+ SourceTest test;
+
+ test.fileSource.sourceResponse = [&] (const Resource& resource) {
+ EXPECT_EQ("url", resource.url);
+ Response response;
+ response.data = std::make_unique<std::string>("{\"geometry\": {\"type\": \"Point\", \"coordinates\": [1.1, 1.1]}, \"type\": \"Feature\", \"properties\": {}}");
+ return response;
+ };
+
+ test.observer.sourceDescriptionChanged = [&] (Source&) {
+ //Should be called (test will hang if it doesn't)
+ test.end();
+ };
+
+ test.observer.tileError = [&] (Source&, const OverscaledTileID&, std::exception_ptr) {
+ FAIL() << "Should never be called";
+ };
+
+ GeoJSONSource source("source");
+ source.baseImpl->setObserver(&test.observer);
+
+ //Load initial, so the source state will be loaded=true
+ source.baseImpl->loadDescription(test.fileSource);
+
+ //Schedule an update
+ test.loop.invoke([&] () {
+ //Update the url
+ source.setURL(std::string("http://source-url.ext"));
+ });
+
+ test.run();
+}