Lines Matching defs:udt
26 namespace udt
77 } // namespace udt
80 namespace udt
167 } // namespace udt
170 namespace udt
224 } // namespace udt
226 TEST_CASE("basic usage" * doctest::test_suite("udt"))
230 const udt::age a
234 const udt::name n{"theo"};
235 const udt::country c{udt::country::france};
236 const udt::person sfinae_addict{a, n, c};
237 const udt::person senior_programmer{{42}, {"王芳"}, udt::country::china};
238 const udt::address addr{"Paris"};
239 const udt::contact cpp_programmer{sfinae_addict, addr};
240 const udt::contact_book book{{"C++"}, {cpp_programmer, {senior_programmer, addr}}};
264 const auto parsed_book = big_json.get<udt::contact_book>();
265 const auto book_name = big_json["name"].get<udt::name>();
267 big_json["contacts"].get<std::vector<udt::contact>>();
269 const auto contact = contact_json.get<udt::contact>();
270 const auto person = contact_json["person"].get<udt::person>();
271 const auto address = contact_json["address"].get<udt::address>();
272 const auto age = contact_json["person"]["age"].get<udt::age>();
274 contact_json["person"]["country"].get<udt::country>();
275 const auto name = contact_json["person"]["name"].get<udt::name>();
284 CHECK(book_name == udt::name{"C++"});
290 udt::person person;
291 udt::name name;
304 const udt::contact_book parsed_book = big_json;
305 const udt::name book_name = big_json["name"];
306 const std::vector<udt::contact> contacts = big_json["contacts"];
308 const udt::contact contact = contact_json;
309 const udt::person person = contact_json["person"];
310 const udt::address address = contact_json["address"];
311 const udt::age age = contact_json["person"]["age"];
312 const udt::country country = contact_json["person"]["country"];
313 const udt::name name = contact_json["person"]["name"];
322 CHECK(book_name == udt::name{"C++"});
329 namespace udt
337 } // namespace udt
370 struct adl_serializer<udt::legacy_type>
372 static void to_json(json& j, const udt::legacy_type& l)
377 static void from_json(const json& j, udt::legacy_type& l)
384 TEST_CASE("adl_serializer specialization" * doctest::test_suite("udt"))
390 std::shared_ptr<udt::person> optPerson;
395 optPerson.reset(new udt::person{{42}, {"John Doe"}, udt::country::russia}); // NOLINT(cppcoreguidelines-owning-memory,modernize-make-shared)
399 CHECK(j.get<udt::person>() == *optPerson);
404 auto person = udt::person{{42}, {"John Doe"}, udt::country::russia};
407 auto optPerson = j.get<std::shared_ptr<udt::person>>();
412 optPerson = j.get<std::shared_ptr<udt::person>>();
421 udt::legacy_type lt{"4242"};
430 auto lt = j.get<udt::legacy_type>();
460 TEST_CASE("even supported types can be specialized" * doctest::test_suite("udt"))
499 TEST_CASE("Non-copyable types" * doctest::test_suite("udt"))
503 std::unique_ptr<udt::person> optPerson;
508 optPerson.reset(new udt::person{{42}, {"John Doe"}, udt::country::russia}); // NOLINT(cppcoreguidelines-owning-memory,modernize-make-unique)
512 CHECK(j.get<udt::person>() == *optPerson);
517 auto person = udt::person{{42}, {"John Doe"}, udt::country::russia};
520 auto optPerson = j.get<std::unique_ptr<udt::person>>();
525 optPerson = j.get<std::unique_ptr<udt::person>>();
595 namespace udt
638 } // namespace udt
640 TEST_CASE("custom serializer for pods" * doctest::test_suite("udt"))
646 auto p = udt::small_pod{42, '/', 42};
649 auto p2 = j.get<udt::small_pod>();
653 auto np = udt::non_pod{{"non-pod"}};
655 auto np2 = j2.get<udt::non_pod>();
680 TEST_CASE("custom serializer that does adl by default" * doctest::test_suite("udt"))
682 auto me = udt::person{{23}, {"theo"}, udt::country::france};
689 CHECK(me == j.get<udt::person>());
690 CHECK(me == cj.get<udt::person>());
792 TEST_CASE("an incomplete type does not trigger a compiler error in non-evaluated context" * doctest::test_suite("udt"))