#include "catch.hpp" #include #include #include #include #include namespace detail { class string_holder { public: string_holder() : member_("member") {} std::string const& get_string() const { return member_; } private: std::string member_; }; } // namespace detail TEST_CASE("parameters") { SECTION("get/set") { try { mapnik::parameters params; // true params["bool"] = mapnik::value_integer(true); REQUIRE((params.get("bool") && *params.get("bool") == true)); params["bool"] = "true"; REQUIRE((params.get("bool") && *params.get("bool") == true)); params["bool"] = mapnik::value_integer(1); REQUIRE((params.get("bool") && *params.get("bool") == true)); params["bool"] = "1"; REQUIRE((params.get("bool") && *params.get("bool") == true)); params["bool"] = "True"; REQUIRE((params.get("bool") && *params.get("bool") == true)); params["bool"] = "on"; REQUIRE((params.get("bool") && *params.get("bool") == true)); params["bool"] = "yes"; REQUIRE((params.get("bool") && *params.get("bool") == true)); // false params["bool"] = mapnik::value_integer(false); REQUIRE((params.get("bool") && *params.get("bool") == false)); params["bool"] = "false"; REQUIRE((params.get("bool") && *params.get("bool") == false)); params["bool"] = mapnik::value_integer(0); REQUIRE((params.get("bool") && *params.get("bool") == false)); params["bool"] = "0"; REQUIRE((params.get("bool") && *params.get("bool") == false)); params["bool"] = "False"; REQUIRE((params.get("bool") && *params.get("bool") == false)); params["bool"] = "off"; REQUIRE((params.get("bool") && *params.get("bool") == false)); params["bool"] = "no"; REQUIRE((params.get("bool") && *params.get("bool") == false)); // strings params["string"] = "hello"; REQUIRE((params.get("string") && *params.get("string") == "hello")); // int params["int"] = mapnik::value_integer(1); REQUIRE((params.get("int") && *params.get("int") == 1)); // double params["double"] = 1.5; REQUIRE((params.get("double") && *params.get("double") == 1.5)); // value_null params["null"] = mapnik::value_null(); // https://github.com/mapnik/mapnik/issues/2471 // REQUIRE( (params.get("null") && *params.get("null") == // mapnik::value_null()) ); std::string value("value"); params["value"] = value; REQUIRE((params.get("value") == std::string("value"))); REQUIRE(value == std::string("value")); // ensure that const member is not moved incorrectly when added to params detail::string_holder holder; std::string const& holder_member = holder.get_string(); params["member"] = holder_member; REQUIRE((params.get("member") == std::string("member"))); REQUIRE((holder_member == std::string("member"))); } catch (std::exception const& ex) { std::cerr << ex.what() << "\n"; REQUIRE(false); } } }