From 9f103d19d7a2df9f88f6d4749adc9071e2e6ad1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20DELRIEU?= Date: Sun, 22 Jan 2017 14:23:24 +0100 Subject: [PATCH] add implicit conversions test (operator T()) --- test/src/unit-udt.cpp | 67 +++++++++++++++++++++++++++++++------------ 1 file changed, 48 insertions(+), 19 deletions(-) diff --git a/test/src/unit-udt.cpp b/test/src/unit-udt.cpp index 98a60c34..07f85b37 100644 --- a/test/src/unit-udt.cpp +++ b/test/src/unit-udt.cpp @@ -261,26 +261,55 @@ TEST_CASE("basic usage", "[udt]") { const auto big_json = u8R"({"name":"C++", "contacts" : [{"person" : {"age":23, "name":"theo", "country":"France"}, "address":"Paris"}, {"person" : {"age":42, "country":"中华人民共和国", "name":"王芳"}, "address":"Paris"}]})"_json; - const auto parsed_book = big_json.get(); - const auto book_name = big_json["name"].get(); - const auto contacts = big_json["contacts"].get>(); - const auto contact_json = big_json["contacts"].at(0); - const auto contact = contact_json.get(); - const auto person = contact_json["person"].get(); - const auto address = contact_json["address"].get(); - const auto age = contact_json["person"]["age"].get(); - const auto country = contact_json["person"]["country"].get(); - const auto name = contact_json["person"]["name"].get(); + SECTION("via explicit calls to get") + { + const auto parsed_book = big_json.get(); + const auto book_name = big_json["name"].get(); + const auto contacts = + big_json["contacts"].get>(); + const auto contact_json = big_json["contacts"].at(0); + const auto contact = contact_json.get(); + const auto person = contact_json["person"].get(); + const auto address = contact_json["address"].get(); + const auto age = contact_json["person"]["age"].get(); + const auto country = + contact_json["person"]["country"].get(); + const auto name = contact_json["person"]["name"].get(); - CHECK(age == a); - CHECK(name == n); - CHECK(country == c); - CHECK(address == addr); - CHECK(person == sfinae_addict); - CHECK(contact == cpp_programmer); - CHECK(contacts == book.m_contacts); - CHECK(book_name == udt::name{"C++"}); - CHECK(book == parsed_book); + CHECK(age == a); + CHECK(name == n); + CHECK(country == c); + CHECK(address == addr); + CHECK(person == sfinae_addict); + CHECK(contact == cpp_programmer); + CHECK(contacts == book.m_contacts); + CHECK(book_name == udt::name{"C++"}); + CHECK(book == parsed_book); + } + + SECTION("implicit conversions") + { + const udt::contact_book parsed_book = big_json; + const udt::name book_name = big_json["name"]; + const std::vector contacts = big_json["contacts"]; + const auto contact_json = big_json["contacts"].at(0); + const udt::contact contact = contact_json; + const udt::person person = contact_json["person"]; + const udt::address address = contact_json["address"]; + const udt::age age = contact_json["person"]["age"]; + const udt::country country = contact_json["person"]["country"]; + const udt::name name = contact_json["person"]["name"]; + + CHECK(age == a); + CHECK(name == n); + CHECK(country == c); + CHECK(address == addr); + CHECK(person == sfinae_addict); + CHECK(contact == cpp_programmer); + CHECK(contacts == book.m_contacts); + CHECK(book_name == udt::name{"C++"}); + CHECK(book == parsed_book); + } } }