diff --git a/tests/test_user_defined_conversion.cpp b/tests/test_user_defined_conversion.cpp index e8941ae..e7f8520 100644 --- a/tests/test_user_defined_conversion.cpp +++ b/tests/test_user_defined_conversion.cpp @@ -49,6 +49,25 @@ struct foobar int a; std::string b; }; + +struct corge +{ + int a; + std::string b; + + void from_toml(const toml::value& v) + { + this->a = toml::find(v, "a"); + this->b = toml::find(v, "b"); + return ; + } + + template + toml::basic_value into_toml() const + { + return toml::basic_value(typename toml::basic_value::table_type{{"a", this->a}, {"b", this->b}}); + } +}; } // extlib namespace toml @@ -215,6 +234,19 @@ TEST_CASE("test_conversion_by_member_methods") CHECK(v == v2); } + + { + const toml::value v(toml::table{{"a", 42}, {"b", "baz"}}); + + const auto corge = toml::get(v); + CHECK_EQ(corge.a, 42); + CHECK_EQ(corge.b, "baz"); + + const toml::value v2(corge); + + CHECK_EQ(v, v2); + } + { const toml::ordered_value v(toml::ordered_table{{"a", 42}, {"b", "baz"}});