enhance error handling, implement object_with_zone, and add more tests

This commit is contained in:
Uy Ha
2023-07-03 16:17:12 +00:00
parent 8bd1b7877c
commit 211c50c755
2 changed files with 52 additions and 45 deletions

View File

@@ -461,7 +461,9 @@ BOOST_AUTO_TEST_CASE(carray_byte_object_with_zone)
}
}
BOOST_AUTO_TEST_CASE(variant_as) {
#if defined(MSGPACK_USE_STD_VARIANT_ADAPTOR)
BOOST_AUTO_TEST_CASE(variant_pack_unpack_as) {
std::stringstream ss;
std::variant<bool, int, float, double> val1{1.0};
msgpack::pack(ss, val1);
@@ -470,6 +472,18 @@ BOOST_AUTO_TEST_CASE(variant_as) {
msgpack::unpack(str.data(), str.size());
std::variant<bool, int, float, double> val2 = oh.get().as<std::variant<bool, int, float, double> >();
BOOST_CHECK(val1 == val2);
BOOST_CHECK_THROW((oh.get().as<std::variant<bool>>()), msgpack::type_error);
}
BOOST_AUTO_TEST_CASE(variant_with_zone) {
msgpack::zone z;
std::variant<bool, int, float, double> val1{1.0};
msgpack::object obj(val1, z);
std::variant<bool, int, float, double> val2 = obj.as<std::variant<bool, int, float, double>>();
BOOST_CHECK(val1 == val2);
BOOST_CHECK_THROW((obj.as<std::variant<bool>>()), msgpack::type_error);
}
#endif // defined(MSGPACK_USE_STD_VARIANT_ADAPTOR)
#endif // MSGPACK_CPP_VERSION >= 201703