diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2017-01-13 16:20:57 +0100 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2017-01-16 10:28:21 +0100 |
commit | 3b8e50a2a941d1786da4cbacff52734f0797c936 (patch) | |
tree | 8c940c328057c4ac43bc02e4193f7d3b5274a194 /test | |
parent | 6a7966fd36f897888bd7ad18751df72e6aa9a487 (diff) | |
download | qtlocation-mapboxgl-3b8e50a2a941d1786da4cbacff52734f0797c936.tar.gz |
[core] add tests for function parsing
Diffstat (limited to 'test')
-rw-r--r-- | test/style/conversion/function.test.cpp | 54 |
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); +} |