summaryrefslogtreecommitdiff
path: root/test/style/conversion/source.test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/style/conversion/source.test.cpp')
-rw-r--r--test/style/conversion/source.test.cpp58
1 files changed, 58 insertions, 0 deletions
diff --git a/test/style/conversion/source.test.cpp b/test/style/conversion/source.test.cpp
new file mode 100644
index 0000000000..e889e01d1d
--- /dev/null
+++ b/test/style/conversion/source.test.cpp
@@ -0,0 +1,58 @@
+#include <mbgl/test/util.hpp>
+
+#include <mbgl/style/conversion/json.hpp>
+#include <mbgl/style/conversion/source.hpp>
+
+using namespace mbgl;
+using namespace mbgl::style;
+using namespace mbgl::style::conversion;
+namespace {
+
+std::unique_ptr<Source> parseSource(const std::string& src, const std::string& sourceName) {
+ Error error;
+ auto source = convertJSON<std::unique_ptr<mbgl::style::Source>>(src, error, sourceName);
+ if (source) return std::move(*source);
+ return nullptr;
+}
+
+void checkConstProperty(std::unique_ptr<Source>& source, const std::string& propertyName, const mbgl::Value& expected) {
+ Value value = source->getProperty(propertyName);
+ EXPECT_EQ(expected, value) << propertyName;
+}
+
+void checkSetProperty(std::unique_ptr<Source>& source, const std::string& propertyName, const JSValue& value) {
+ auto error = source->setProperty(propertyName, Convertible(&value));
+ EXPECT_EQ(nullopt, error) << error->message;
+}
+
+} // namespace
+
+TEST(StyleConversion, SetSourceGenericProperties) {
+ auto source = parseSource(R"JSON({
+ "type": "vector",
+ "tiles": ["http://example.com/{z}-{x}-{y}.vector.pbf"],
+ "scheme": "xyz",
+ "minzoom": 11,
+ "maxzoom": 16,
+ "attribution": "mapbox",
+ "bounds": [-180, -73, -120, 73]
+ })JSON",
+ "vector_source");
+
+ ASSERT_NE(nullptr, source);
+ checkConstProperty(source, "volatile", false);
+ checkSetProperty(source, "volatile", JSValue(true));
+ checkConstProperty(source, "volatile", true);
+
+ checkConstProperty(source, "minimum-tile-update-interval", 0.0);
+ checkSetProperty(source, "minimum-tile-update-interval", JSValue(10.5));
+ checkConstProperty(source, "minimum-tile-update-interval", 10.5);
+
+ checkConstProperty(source, "prefetch-zoom-delta", NullValue());
+ checkSetProperty(source, "prefetch-zoom-delta", JSValue(0));
+ checkConstProperty(source, "prefetch-zoom-delta", 0u);
+
+ checkConstProperty(source, "max-overscale-factor-for-parent-tiles", NullValue());
+ checkSetProperty(source, "max-overscale-factor-for-parent-tiles", JSValue(2));
+ checkConstProperty(source, "max-overscale-factor-for-parent-tiles", 2u);
+} \ No newline at end of file