From f6e79d70735361438655f279c8699a786d25458c Mon Sep 17 00:00:00 2001 From: Lauren Budorick Date: Thu, 27 Apr 2017 15:56:55 -0700 Subject: [core] Render fill-extrusion layers (#8431) --- test/style/conversion/light.test.cpp | 101 +++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 test/style/conversion/light.test.cpp (limited to 'test/style/conversion/light.test.cpp') diff --git a/test/style/conversion/light.test.cpp b/test/style/conversion/light.test.cpp new file mode 100644 index 0000000000..da0fd3054a --- /dev/null +++ b/test/style/conversion/light.test.cpp @@ -0,0 +1,101 @@ +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +using namespace mbgl; +using namespace mbgl::style; +using namespace mbgl::style::conversion; + +TEST(StyleConversion, Light) { + Error error; + + auto parseLight = [&](const std::string& src) { + JSDocument doc; + doc.Parse<0>(src); + return convert(doc, error); + }; + + { + auto light = parseLight("{}"); + ASSERT_TRUE((bool) light); + } + + { + auto light = parseLight("{\"color\":{\"stops\":[[14,\"blue\"],[16,\"red\"]]},\"intensity\":0.3,\"position\":[3,90,90]}"); + ASSERT_TRUE((bool) light); + + ASSERT_TRUE(light->get().value.isUndefined()); + ASSERT_FALSE(light->get().value.isConstant()); + ASSERT_FALSE(light->get().value.isCameraFunction()); + + ASSERT_FALSE(light->get().value.isUndefined()); + ASSERT_TRUE(light->get().value.isConstant()); + ASSERT_EQ(light->get().value.asConstant(), 0.3f); + ASSERT_FALSE(light->get().value.isCameraFunction()); + + ASSERT_FALSE(light->get().value.isUndefined()); + ASSERT_FALSE(light->get().value.isConstant()); + ASSERT_TRUE(light->get().value.isCameraFunction()); + + ASSERT_FALSE(light->get().value.isUndefined()); + ASSERT_TRUE(light->get().value.isConstant()); + std::array expected{{ 3, 90, 90 }}; + ASSERT_EQ(light->get().value.asConstant(), mbgl::style::Position({ expected })); + ASSERT_FALSE(light->get().value.isCameraFunction()); + } + + { + auto light = parseLight("{\"color\":\"blue\",\"intensity\":0.3,\"color-transition\":{\"duration\":1000}}"); + ASSERT_TRUE((bool) light); + + ASSERT_FALSE(light->get().value.isUndefined()); + ASSERT_TRUE(light->get().value.isConstant()); + ASSERT_FALSE(light->get().value.isCameraFunction()); + ASSERT_EQ(light->get().transition.duration, mbgl::Duration(mbgl::Milliseconds(1000))); + ASSERT_FALSE((bool) light->get().transition.delay); + } + + { + auto light = parseLight("{\"intensity\":false}"); + + ASSERT_FALSE((bool) light); + ASSERT_EQ("value must be a number", error.message); + } + + { + auto light = parseLight("{\"intensity\":{\"stops\":[[15,\"red\"],[17,\"blue\"]]}}"); + + ASSERT_FALSE((bool) light); + ASSERT_EQ("value must be a number", error.message); + } + + { + auto light = parseLight("{\"color\":5}"); + + ASSERT_FALSE((bool) light); + ASSERT_EQ("value must be a string", error.message); + } + + { + auto light = parseLight("{\"position\":[0,5]}"); + + ASSERT_FALSE((bool) light); + ASSERT_EQ("value must be an array of 3 numbers", error.message); + } + + { + auto light = parseLight("{\"anchor\":\"something\"}"); + + ASSERT_FALSE((bool) light); + ASSERT_EQ("value must be a valid enumeration value", error.message); + } +} -- cgit v1.2.1