summaryrefslogtreecommitdiff
path: root/test/style
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2017-01-13 16:20:57 +0100
committerKonstantin Käfer <mail@kkaefer.com>2017-01-16 10:28:21 +0100
commit3b8e50a2a941d1786da4cbacff52734f0797c936 (patch)
tree8c940c328057c4ac43bc02e4193f7d3b5274a194 /test/style
parent6a7966fd36f897888bd7ad18751df72e6aa9a487 (diff)
downloadqtlocation-mapboxgl-3b8e50a2a941d1786da4cbacff52734f0797c936.tar.gz
[core] add tests for function parsing
Diffstat (limited to 'test/style')
-rw-r--r--test/style/conversion/function.test.cpp54
1 files changed, 54 insertions, 0 deletions
diff --git a/test/style/conversion/function.test.cpp b/test/style/conversion/function.test.cpp
new file mode 100644
index 0000000000..e93207ea13
--- /dev/null
+++ b/test/style/conversion/function.test.cpp
@@ -0,0 +1,54 @@
+#include <mbgl/test/util.hpp>
+
+#include <mbgl/style/conversion.hpp>
+#include <mbgl/style/rapidjson_conversion.hpp>
+#include <mbgl/style/conversion/constant.hpp>
+#include <mbgl/style/conversion/function.hpp>
+#include <mbgl/util/rapidjson.hpp>
+
+using namespace mbgl;
+using namespace mbgl::style;
+using namespace mbgl::style::conversion;
+
+auto parseFunction(const std::string& src) {
+ JSDocument doc;
+ doc.Parse<0>(src);
+ return convert<Function<float>>(doc);
+}
+
+TEST(StyleConversion, Function) {
+ auto fn1 = parseFunction("{\"stops\":[]}");
+ ASSERT_FALSE(fn1);
+ ASSERT_EQ("function must have at least one stop", fn1.error().message);
+
+ auto fn2 = parseFunction("{\"stops\":[1]}");
+ ASSERT_FALSE(fn2);
+ ASSERT_EQ("function stop must be an array", fn2.error().message);
+
+ auto fn3 = parseFunction("{\"stops\":[[]]}");
+ ASSERT_FALSE(fn3);
+ ASSERT_EQ("function stop must have two elements", fn3.error().message);
+
+ auto fn4 = parseFunction("{\"stops\":[[-1,-1]]}");
+ ASSERT_TRUE(bool(fn4));
+
+ auto fn5 = parseFunction("{\"stops\":[[0,1,2]]}");
+ ASSERT_FALSE(fn5);
+ ASSERT_EQ("function stop must have two elements", fn5.error().message);
+
+ auto fn6 = parseFunction("{\"stops\":[[0,\"x\"]]}");
+ ASSERT_FALSE(fn6);
+ ASSERT_EQ("value must be a number", fn6.error().message);
+
+ auto fn7 = parseFunction("{}");
+ ASSERT_FALSE(fn7);
+ ASSERT_EQ("function value must specify stops", fn7.error().message);
+
+ auto fn8 = parseFunction("[]");
+ ASSERT_FALSE(fn8);
+ ASSERT_EQ("function must be an object", fn8.error().message);
+
+ auto fn9 = parseFunction("{\"stops\":[[0,0]],\"base\":false}");
+ ASSERT_FALSE(fn9);
+ ASSERT_EQ("function base must be a number", fn9.error().message);
+}