#include #include "test_utils.hpp" #include #include using namespace hocon; using namespace std; TEST_CASE("convert various types to config values", "[config_value_factory]") { SECTION("true should convert to config_boolean") { auto value = config_value_factory::from_any_ref(true, ""); REQUIRE(dynamic_pointer_cast(value)); REQUIRE(boost::get(value->unwrapped()) == true); } SECTION("false should convert to config_boolean") { auto value = config_value_factory::from_any_ref(false, ""); REQUIRE(dynamic_pointer_cast(value)); REQUIRE(boost::get(value->unwrapped()) == false); } SECTION("a null value should convert to config_null") { auto value = config_value_factory::from_any_ref(boost::blank(), ""); REQUIRE(dynamic_pointer_cast(value)); REQUIRE(boost::get(value->unwrapped()) == boost::blank()); } SECTION("string should convert to config_string") { auto value = config_value_factory::from_any_ref(string("test"), ""); REQUIRE(dynamic_pointer_cast(value)); REQUIRE(boost::get(value->unwrapped()) == "test"); } SECTION("int should convert to config_int") { auto value = config_value_factory::from_any_ref(2, ""); REQUIRE(dynamic_pointer_cast(value)); REQUIRE(boost::get(value->unwrapped()) == 2); } SECTION("double should covert to config_double") { auto value = config_value_factory::from_any_ref(4.5, ""); REQUIRE(dynamic_pointer_cast(value)); REQUIRE(boost::get(value->unwrapped()) == 4.5); } SECTION("long (int64_t) should convert to config_long") { auto value = config_value_factory::from_any_ref(int64_t(19), ""); REQUIRE(dynamic_pointer_cast(value)); REQUIRE(boost::get(value->unwrapped()) == 19); } SECTION("map should convert to simple_config_object") { unordered_map map {{ "a", 1 }, { "b", "string" }, { "c", false }}; auto value = config_value_factory::from_any_ref(map, ""); REQUIRE(dynamic_pointer_cast(value)); auto unwrapped = boost::get>(value->unwrapped()); REQUIRE(unwrapped == map); } }