#include #include #include #define BOOST_TEST_MODULE MSGPACK_ARRAY_REF #include #ifdef HAVE_CONFIG_H #include "config.h" #endif BOOST_AUTO_TEST_CASE(pack_unpack_convert_vector_char) { std::vector v; v.push_back('a'); v.push_back('b'); v.push_back('c'); msgpack::type::array_ref > ar1 = msgpack::type::make_array_ref(v); std::stringstream ss; msgpack::pack(ss, ar1); std::string const& str = ss.str(); msgpack::object_handle oh = msgpack::unpack(str.data(), str.size()); BOOST_CHECK_EQUAL(oh.get().type, msgpack::type::ARRAY); std::vector v2; msgpack::type::array_ref > ar2(v2); oh.get().convert(ar2); BOOST_CHECK(ar1 == ar2); } BOOST_AUTO_TEST_CASE(pack_unpack_convert_vector_char_const) { std::vector v; v.push_back('a'); v.push_back('b'); v.push_back('c'); std::vector const& cv = v; msgpack::type::array_ref const> ar1 = msgpack::type::make_array_ref(cv); std::stringstream ss; msgpack::pack(ss, ar1); std::string const& str = ss.str(); msgpack::object_handle oh = msgpack::unpack(str.data(), str.size()); BOOST_CHECK_EQUAL(oh.get().type, msgpack::type::ARRAY); std::vector v2; msgpack::type::array_ref > ar2(v2); oh.get().convert(ar2); BOOST_CHECK(ar1 == ar2); } BOOST_AUTO_TEST_CASE(pack_unpack_convert_vector_unsigned_char) { std::vector v; v.push_back('a'); v.push_back('b'); v.push_back('c'); msgpack::type::array_ref > ar1 = msgpack::type::make_array_ref(v); std::stringstream ss; msgpack::pack(ss, ar1); std::string const& str = ss.str(); msgpack::object_handle oh = msgpack::unpack(str.data(), str.size()); BOOST_CHECK_EQUAL(oh.get().type, msgpack::type::ARRAY); std::vector v2; msgpack::type::array_ref > ar2(v2); oh.get().convert(ar2); BOOST_CHECK(ar1 == ar2); } BOOST_AUTO_TEST_CASE(pack_unpack_convert_vector_unsigned_char_const) { std::vector v; v.push_back('a'); v.push_back('b'); v.push_back('c'); std::vector const& cv = v; msgpack::type::array_ref const> ar1 = msgpack::type::make_array_ref(cv); std::stringstream ss; msgpack::pack(ss, ar1); std::string const& str = ss.str(); msgpack::object_handle oh = msgpack::unpack(str.data(), str.size()); BOOST_CHECK_EQUAL(oh.get().type, msgpack::type::ARRAY); std::vector v2; msgpack::type::array_ref > ar2(v2); oh.get().convert(ar2); BOOST_CHECK(ar1 == ar2); } BOOST_AUTO_TEST_CASE(object_with_zone_vector_char) { std::vector v; v.push_back('a'); v.push_back('b'); v.push_back('c'); msgpack::type::array_ref > ar1 = msgpack::type::make_array_ref(v); msgpack::zone z; msgpack::object obj(ar1, z); BOOST_CHECK_EQUAL(obj.type, msgpack::type::ARRAY); std::vector v2; msgpack::type::array_ref > ar2(v2); obj.convert(ar2); BOOST_CHECK(ar1 == ar2); } BOOST_AUTO_TEST_CASE(object_with_zone_vector_char_const) { std::vector v; v.push_back('a'); v.push_back('b'); v.push_back('c'); std::vector const& cv = v; msgpack::type::array_ref const> ar1 = msgpack::type::make_array_ref(cv); msgpack::zone z; msgpack::object obj(ar1, z); BOOST_CHECK_EQUAL(obj.type, msgpack::type::ARRAY); std::vector v2; msgpack::type::array_ref > ar2(v2); obj.convert(ar2); BOOST_CHECK(ar1 == ar2); } BOOST_AUTO_TEST_CASE(object_with_zone_vector_unsigned_char) { std::vector v; v.push_back('a'); v.push_back('b'); v.push_back('c'); msgpack::type::array_ref > ar1 = msgpack::type::make_array_ref(v); msgpack::zone z; msgpack::object obj(ar1, z); BOOST_CHECK_EQUAL(obj.type, msgpack::type::ARRAY); std::vector v2; msgpack::type::array_ref > ar2(v2); obj.convert(ar2); BOOST_CHECK(ar1 == ar2); } BOOST_AUTO_TEST_CASE(object_with_zone_vector_unsigned_char_const) { std::vector v; v.push_back('a'); v.push_back('b'); v.push_back('c'); std::vector const& cv = v; msgpack::type::array_ref const> ar1 = msgpack::type::make_array_ref(cv); msgpack::zone z; msgpack::object obj(ar1, z); BOOST_CHECK_EQUAL(obj.type, msgpack::type::ARRAY); std::vector v2; msgpack::type::array_ref > ar2(v2); obj.convert(ar2); BOOST_CHECK(ar1 == ar2); } #if !defined(MSGPACK_USE_CPP03) BOOST_AUTO_TEST_CASE(pack_unpack_convert_array_char) { std::array v { { 'a', 'b', 'c' } }; msgpack::type::array_ref > ar1 = msgpack::type::make_array_ref(v); std::stringstream ss; msgpack::pack(ss, ar1); std::string const& str = ss.str(); msgpack::object_handle oh = msgpack::unpack(str.data(), str.size()); BOOST_CHECK_EQUAL(oh.get().type, msgpack::type::ARRAY); std::array v2; msgpack::type::array_ref > ar2(v2); oh.get().convert(ar2); BOOST_CHECK(ar1 == ar2); } BOOST_AUTO_TEST_CASE(pack_unpack_convert_array_char_const) { std::array v { { 'a', 'b', 'c' } }; std::array const& cv = v; msgpack::type::array_ref const> ar1 = msgpack::type::make_array_ref(cv); std::stringstream ss; msgpack::pack(ss, ar1); std::string const& str = ss.str(); msgpack::object_handle oh = msgpack::unpack(str.data(), str.size()); BOOST_CHECK_EQUAL(oh.get().type, msgpack::type::ARRAY); std::array v2; msgpack::type::array_ref > ar2(v2); oh.get().convert(ar2); BOOST_CHECK(ar1 == ar2); } BOOST_AUTO_TEST_CASE(pack_unpack_convert_array_unsigned_char) { std::array v { { 'a', 'b', 'c' } }; msgpack::type::array_ref > ar1 = msgpack::type::make_array_ref(v); std::stringstream ss; msgpack::pack(ss, ar1); std::string const& str = ss.str(); msgpack::object_handle oh = msgpack::unpack(str.data(), str.size()); BOOST_CHECK_EQUAL(oh.get().type, msgpack::type::ARRAY); std::array v2; msgpack::type::array_ref > ar2(v2); oh.get().convert(ar2); BOOST_CHECK(ar1 == ar2); } BOOST_AUTO_TEST_CASE(pack_unpack_convert_array_unsigned_char_const) { std::array v { { 'a', 'b', 'c' } }; std::array const& cv = v; msgpack::type::array_ref const> ar1 = msgpack::type::make_array_ref(cv); std::stringstream ss; msgpack::pack(ss, ar1); std::string const& str = ss.str(); msgpack::object_handle oh = msgpack::unpack(str.data(), str.size()); BOOST_CHECK_EQUAL(oh.get().type, msgpack::type::ARRAY); std::array v2; msgpack::type::array_ref > ar2(v2); oh.get().convert(ar2); BOOST_CHECK(ar1 == ar2); } BOOST_AUTO_TEST_CASE(object_with_zone_array_char) { std::array v { { 'a', 'b', 'c' } }; msgpack::type::array_ref > ar1 = msgpack::type::make_array_ref(v); msgpack::zone z; msgpack::object obj(ar1, z); BOOST_CHECK_EQUAL(obj.type, msgpack::type::ARRAY); std::array v2; msgpack::type::array_ref > ar2(v2); obj.convert(ar2); BOOST_CHECK(ar1 == ar2); } BOOST_AUTO_TEST_CASE(object_with_zone_array_char_const) { std::array v { { 'a', 'b', 'c' } }; std::array const& cv = v; msgpack::type::array_ref const> ar1 = msgpack::type::make_array_ref(cv); msgpack::zone z; msgpack::object obj(ar1, z); BOOST_CHECK_EQUAL(obj.type, msgpack::type::ARRAY); std::array v2; msgpack::type::array_ref > ar2(v2); obj.convert(ar2); BOOST_CHECK(ar1 == ar2); } BOOST_AUTO_TEST_CASE(object_with_zone_array_unsigned_char) { std::array v { { 'a', 'b', 'c' } }; msgpack::type::array_ref > ar1 = msgpack::type::make_array_ref(v); msgpack::zone z; msgpack::object obj(ar1, z); BOOST_CHECK_EQUAL(obj.type, msgpack::type::ARRAY); std::array v2; msgpack::type::array_ref > ar2(v2); obj.convert(ar2); BOOST_CHECK(ar1 == ar2); } BOOST_AUTO_TEST_CASE(object_with_zone_array_unsigned_char_const) { std::array v { { 'a', 'b', 'c' } }; std::array const& cv = v; msgpack::type::array_ref const> ar1 = msgpack::type::make_array_ref(cv); msgpack::zone z; msgpack::object obj(ar1, z); BOOST_CHECK_EQUAL(obj.type, msgpack::type::ARRAY); std::array v2; msgpack::type::array_ref > ar2(v2); obj.convert(ar2); BOOST_CHECK(ar1 == ar2); } #endif // !defined(MSGPACK_USE_CPP03)