#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN #include "doctest.h" #include TEST_CASE("testing value_t to string") { CHECK_EQ(toml::to_string(toml::value_t::boolean ), "boolean"); CHECK_EQ(toml::to_string(toml::value_t::integer ), "integer"); CHECK_EQ(toml::to_string(toml::value_t::floating ), "floating"); CHECK_EQ(toml::to_string(toml::value_t::string ), "string"); CHECK_EQ(toml::to_string(toml::value_t::offset_datetime), "offset_datetime"); CHECK_EQ(toml::to_string(toml::value_t::local_datetime ), "local_datetime"); CHECK_EQ(toml::to_string(toml::value_t::local_date ), "local_date"); CHECK_EQ(toml::to_string(toml::value_t::local_time ), "local_time"); CHECK_EQ(toml::to_string(toml::value_t::array ), "array"); CHECK_EQ(toml::to_string(toml::value_t::table ), "table"); {std::ostringstream oss; oss << toml::value_t::boolean ; CHECK_EQ(oss.str(), "boolean" );} {std::ostringstream oss; oss << toml::value_t::integer ; CHECK_EQ(oss.str(), "integer" );} {std::ostringstream oss; oss << toml::value_t::floating ; CHECK_EQ(oss.str(), "floating" );} {std::ostringstream oss; oss << toml::value_t::string ; CHECK_EQ(oss.str(), "string" );} {std::ostringstream oss; oss << toml::value_t::offset_datetime; CHECK_EQ(oss.str(), "offset_datetime");} {std::ostringstream oss; oss << toml::value_t::local_datetime ; CHECK_EQ(oss.str(), "local_datetime" );} {std::ostringstream oss; oss << toml::value_t::local_date ; CHECK_EQ(oss.str(), "local_date" );} {std::ostringstream oss; oss << toml::value_t::local_time ; CHECK_EQ(oss.str(), "local_time" );} {std::ostringstream oss; oss << toml::value_t::array ; CHECK_EQ(oss.str(), "array" );} {std::ostringstream oss; oss << toml::value_t::table ; CHECK_EQ(oss.str(), "table" );} } #include TEST_CASE("testing type_to_enum") { using value_type = toml::value; using boolean_type = typename value_type::boolean_type ; using integer_type = typename value_type::integer_type ; using floating_type = typename value_type::floating_type ; using string_type = typename value_type::string_type ; using local_time_type = typename value_type::local_time_type ; using local_date_type = typename value_type::local_date_type ; using local_datetime_type = typename value_type::local_datetime_type ; using offset_datetime_type = typename value_type::offset_datetime_type; using array_type = typename value_type::array_type ; using table_type = typename value_type::table_type ; CHECK_EQ((toml::detail::type_to_enum::value), toml::value_t::boolean ); CHECK_EQ((toml::detail::type_to_enum::value), toml::value_t::integer ); CHECK_EQ((toml::detail::type_to_enum::value), toml::value_t::floating ); CHECK_EQ((toml::detail::type_to_enum::value), toml::value_t::string ); CHECK_EQ((toml::detail::type_to_enum::value), toml::value_t::local_time ); CHECK_EQ((toml::detail::type_to_enum::value), toml::value_t::local_date ); CHECK_EQ((toml::detail::type_to_enum::value), toml::value_t::local_datetime ); CHECK_EQ((toml::detail::type_to_enum::value), toml::value_t::offset_datetime); CHECK_EQ((toml::detail::type_to_enum::value), toml::value_t::array ); CHECK_EQ((toml::detail::type_to_enum::value), toml::value_t::table ); } TEST_CASE("testing enum_to_type") { using value_type = toml::value; using boolean_type = typename value_type::boolean_type ; using integer_type = typename value_type::integer_type ; using floating_type = typename value_type::floating_type ; using string_type = typename value_type::string_type ; using local_time_type = typename value_type::local_time_type ; using local_date_type = typename value_type::local_date_type ; using local_datetime_type = typename value_type::local_datetime_type ; using offset_datetime_type = typename value_type::offset_datetime_type; using array_type = typename value_type::array_type ; using table_type = typename value_type::table_type ; CHECK_UNARY(std::is_same::type, boolean_type >::value); CHECK_UNARY(std::is_same::type, integer_type >::value); CHECK_UNARY(std::is_same::type, floating_type >::value); CHECK_UNARY(std::is_same::type, string_type >::value); CHECK_UNARY(std::is_same::type, local_time_type >::value); CHECK_UNARY(std::is_same::type, local_date_type >::value); CHECK_UNARY(std::is_same::type, local_datetime_type >::value); CHECK_UNARY(std::is_same::type, offset_datetime_type>::value); CHECK_UNARY(std::is_same::type, array_type >::value); CHECK_UNARY(std::is_same::type, table_type >::value); } TEST_CASE("testing is_exact_toml_type") { using value_type = toml::value; using boolean_type = typename value_type::boolean_type ; using integer_type = typename value_type::integer_type ; using floating_type = typename value_type::floating_type ; using string_type = typename value_type::string_type ; using local_time_type = typename value_type::local_time_type ; using local_date_type = typename value_type::local_date_type ; using local_datetime_type = typename value_type::local_datetime_type ; using offset_datetime_type = typename value_type::offset_datetime_type; using array_type = typename value_type::array_type ; using table_type = typename value_type::table_type ; CHECK_UNARY(toml::detail::is_exact_toml_type::value); CHECK_UNARY(toml::detail::is_exact_toml_type::value); CHECK_UNARY(toml::detail::is_exact_toml_type::value); CHECK_UNARY(toml::detail::is_exact_toml_type::value); CHECK_UNARY(toml::detail::is_exact_toml_type::value); CHECK_UNARY(toml::detail::is_exact_toml_type::value); CHECK_UNARY(toml::detail::is_exact_toml_type::value); CHECK_UNARY(toml::detail::is_exact_toml_type::value); CHECK_UNARY(toml::detail::is_exact_toml_type::value); CHECK_UNARY(toml::detail::is_exact_toml_type::value); CHECK_UNARY(toml::detail::is_exact_toml_type::value); CHECK_UNARY(toml::detail::is_exact_toml_type::value); CHECK_UNARY(toml::detail::is_exact_toml_type::value); CHECK_UNARY(toml::detail::is_exact_toml_type::value); CHECK_UNARY(toml::detail::is_exact_toml_type::value); CHECK_UNARY(toml::detail::is_exact_toml_type::value); CHECK_UNARY(toml::detail::is_exact_toml_type::value); CHECK_UNARY(toml::detail::is_exact_toml_type::value); CHECK_UNARY(toml::detail::is_exact_toml_type::value); CHECK_UNARY(toml::detail::is_exact_toml_type::value); CHECK_UNARY(toml::detail::is_exact_toml_type::value); CHECK_UNARY(toml::detail::is_exact_toml_type::value); CHECK_UNARY(toml::detail::is_exact_toml_type::value); CHECK_UNARY(toml::detail::is_exact_toml_type::value); CHECK_UNARY(toml::detail::is_exact_toml_type::value); CHECK_UNARY(toml::detail::is_exact_toml_type::value); CHECK_UNARY(toml::detail::is_exact_toml_type::value); CHECK_UNARY(toml::detail::is_exact_toml_type::value); CHECK_UNARY(toml::detail::is_exact_toml_type::value); CHECK_UNARY(toml::detail::is_exact_toml_type::value); CHECK_UNARY_FALSE(toml::detail::is_exact_toml_type::value); CHECK_UNARY_FALSE(toml::detail::is_exact_toml_type::value); CHECK_UNARY_FALSE(toml::detail::is_exact_toml_type, value_type>::value); }