| #include <msgpack.hpp> |
| |
| #include <string> |
| #include <sstream> |
| |
| #include <gtest/gtest.h> |
| |
| #ifdef HAVE_CONFIG_H |
| #include "config.h" |
| #endif |
| |
| TEST(MSGPACK_ARRAY_REF, pack_unpack_convert_vector_char) |
| { |
| std::vector<char> v; |
| v.push_back('a'); |
| v.push_back('b'); |
| v.push_back('c'); |
| |
| msgpack::type::array_ref<std::vector<char> > ar1 = msgpack::type::make_array_ref(v); |
| std::stringstream ss; |
| msgpack::pack(ss, ar1); |
| |
| msgpack::unpacked upd; |
| msgpack::unpack(upd, ss.str().data(), ss.str().size()); |
| EXPECT_EQ(upd.get().type, msgpack::type::ARRAY); |
| std::vector<char> v2; |
| msgpack::type::array_ref<std::vector<char> > ar2(v2); |
| upd.get().convert(ar2); |
| EXPECT_TRUE(ar1 == ar2); |
| } |
| |
| TEST(MSGPACK_ARRAY_REF, pack_unpack_convert_vector_char_const) |
| { |
| std::vector<char> v; |
| v.push_back('a'); |
| v.push_back('b'); |
| v.push_back('c'); |
| |
| std::vector<char> const& cv = v; |
| |
| msgpack::type::array_ref<std::vector<char> const> ar1 = msgpack::type::make_array_ref(cv); |
| std::stringstream ss; |
| msgpack::pack(ss, ar1); |
| |
| msgpack::unpacked upd; |
| msgpack::unpack(upd, ss.str().data(), ss.str().size()); |
| EXPECT_EQ(upd.get().type, msgpack::type::ARRAY); |
| std::vector<char> v2; |
| msgpack::type::array_ref<std::vector<char> > ar2(v2); |
| upd.get().convert(ar2); |
| EXPECT_TRUE(ar1 == ar2); |
| } |
| |
| TEST(MSGPACK_ARRAY_REF, pack_unpack_convert_vector_unsigned_char) |
| { |
| std::vector<unsigned char> v; |
| v.push_back('a'); |
| v.push_back('b'); |
| v.push_back('c'); |
| |
| msgpack::type::array_ref<std::vector<unsigned char> > ar1 = msgpack::type::make_array_ref(v); |
| std::stringstream ss; |
| msgpack::pack(ss, ar1); |
| |
| msgpack::unpacked upd; |
| msgpack::unpack(upd, ss.str().data(), ss.str().size()); |
| EXPECT_EQ(upd.get().type, msgpack::type::ARRAY); |
| std::vector<unsigned char> v2; |
| msgpack::type::array_ref<std::vector<unsigned char> > ar2(v2); |
| upd.get().convert(ar2); |
| EXPECT_TRUE(ar1 == ar2); |
| } |
| |
| TEST(MSGPACK_ARRAY_REF, pack_unpack_convert_vector_unsigned_char_const) |
| { |
| std::vector<unsigned char> v; |
| v.push_back('a'); |
| v.push_back('b'); |
| v.push_back('c'); |
| |
| std::vector<unsigned char> const& cv = v; |
| |
| msgpack::type::array_ref<std::vector<unsigned char> const> ar1 = msgpack::type::make_array_ref(cv); |
| std::stringstream ss; |
| msgpack::pack(ss, ar1); |
| |
| msgpack::unpacked upd; |
| msgpack::unpack(upd, ss.str().data(), ss.str().size()); |
| EXPECT_EQ(upd.get().type, msgpack::type::ARRAY); |
| std::vector<unsigned char> v2; |
| msgpack::type::array_ref<std::vector<unsigned char> > ar2(v2); |
| upd.get().convert(ar2); |
| EXPECT_TRUE(ar1 == ar2); |
| } |
| |
| TEST(MSGPACK_ARRAY_REF, object_with_zone_vector_char) |
| { |
| std::vector<char> v; |
| v.push_back('a'); |
| v.push_back('b'); |
| v.push_back('c'); |
| |
| msgpack::type::array_ref<std::vector<char> > ar1 = msgpack::type::make_array_ref(v); |
| msgpack::zone z; |
| msgpack::object obj(ar1, z); |
| |
| EXPECT_EQ(obj.type, msgpack::type::ARRAY); |
| std::vector<char> v2; |
| msgpack::type::array_ref<std::vector<char> > ar2(v2); |
| obj.convert(ar2); |
| EXPECT_TRUE(ar1 == ar2); |
| } |
| |
| TEST(MSGPACK_ARRAY_REF, object_with_zone_vector_char_const) |
| { |
| std::vector<char> v; |
| v.push_back('a'); |
| v.push_back('b'); |
| v.push_back('c'); |
| |
| std::vector<char> const& cv = v; |
| |
| msgpack::type::array_ref<std::vector<char> const> ar1 = msgpack::type::make_array_ref(cv); |
| msgpack::zone z; |
| msgpack::object obj(ar1, z); |
| |
| EXPECT_EQ(obj.type, msgpack::type::ARRAY); |
| std::vector<char> v2; |
| msgpack::type::array_ref<std::vector<char> > ar2(v2); |
| obj.convert(ar2); |
| EXPECT_TRUE(ar1 == ar2); |
| } |
| |
| TEST(MSGPACK_ARRAY_REF, object_with_zone_vector_unsigned_char) |
| { |
| std::vector<unsigned char> v; |
| v.push_back('a'); |
| v.push_back('b'); |
| v.push_back('c'); |
| |
| msgpack::type::array_ref<std::vector<unsigned char> > ar1 = msgpack::type::make_array_ref(v); |
| msgpack::zone z; |
| msgpack::object obj(ar1, z); |
| |
| EXPECT_EQ(obj.type, msgpack::type::ARRAY); |
| std::vector<unsigned char> v2; |
| msgpack::type::array_ref<std::vector<unsigned char> > ar2(v2); |
| obj.convert(ar2); |
| EXPECT_TRUE(ar1 == ar2); |
| } |
| |
| TEST(MSGPACK_ARRAY_REF, object_with_zone_vector_unsigned_char_const) |
| { |
| std::vector<unsigned char> v; |
| v.push_back('a'); |
| v.push_back('b'); |
| v.push_back('c'); |
| |
| std::vector<unsigned char> const& cv = v; |
| |
| msgpack::type::array_ref<std::vector<unsigned char> const> ar1 = msgpack::type::make_array_ref(cv); |
| msgpack::zone z; |
| msgpack::object obj(ar1, z); |
| |
| EXPECT_EQ(obj.type, msgpack::type::ARRAY); |
| std::vector<unsigned char> v2; |
| msgpack::type::array_ref<std::vector<unsigned char> > ar2(v2); |
| obj.convert(ar2); |
| EXPECT_TRUE(ar1 == ar2); |
| } |
| |
| #if !defined(MSGPACK_USE_CPP03) |
| |
| TEST(MSGPACK_ARRAY_REF, pack_unpack_convert_array_char) |
| { |
| std::array<char, 3> v { { 'a', 'b', 'c' } }; |
| |
| msgpack::type::array_ref<std::array<char, 3> > ar1 = msgpack::type::make_array_ref(v); |
| std::stringstream ss; |
| msgpack::pack(ss, ar1); |
| |
| msgpack::unpacked upd; |
| msgpack::unpack(upd, ss.str().data(), ss.str().size()); |
| EXPECT_EQ(upd.get().type, msgpack::type::ARRAY); |
| std::array<char, 3> v2; |
| msgpack::type::array_ref<std::array<char, 3> > ar2(v2); |
| upd.get().convert(ar2); |
| EXPECT_TRUE(ar1 == ar2); |
| } |
| |
| TEST(MSGPACK_ARRAY_REF, pack_unpack_convert_array_char_const) |
| { |
| std::array<char, 3> v { { 'a', 'b', 'c' } }; |
| |
| std::array<char, 3> const& cv = v; |
| |
| msgpack::type::array_ref<std::array<char, 3> const> ar1 = msgpack::type::make_array_ref(cv); |
| std::stringstream ss; |
| msgpack::pack(ss, ar1); |
| |
| msgpack::unpacked upd; |
| msgpack::unpack(upd, ss.str().data(), ss.str().size()); |
| EXPECT_EQ(upd.get().type, msgpack::type::ARRAY); |
| std::array<char, 3> v2; |
| msgpack::type::array_ref<std::array<char, 3> > ar2(v2); |
| upd.get().convert(ar2); |
| EXPECT_TRUE(ar1 == ar2); |
| } |
| |
| TEST(MSGPACK_ARRAY_REF, pack_unpack_convert_array_unsigned_char) |
| { |
| std::array<unsigned char, 3> v { { 'a', 'b', 'c' } }; |
| |
| msgpack::type::array_ref<std::array<unsigned char, 3> > ar1 = msgpack::type::make_array_ref(v); |
| std::stringstream ss; |
| msgpack::pack(ss, ar1); |
| |
| msgpack::unpacked upd; |
| msgpack::unpack(upd, ss.str().data(), ss.str().size()); |
| EXPECT_EQ(upd.get().type, msgpack::type::ARRAY); |
| std::array<unsigned char, 3> v2; |
| msgpack::type::array_ref<std::array<unsigned char, 3> > ar2(v2); |
| upd.get().convert(ar2); |
| EXPECT_TRUE(ar1 == ar2); |
| } |
| |
| TEST(MSGPACK_ARRAY_REF, pack_unpack_convert_array_unsigned_char_const) |
| { |
| std::array<unsigned char, 3> v { { 'a', 'b', 'c' } }; |
| |
| std::array<unsigned char, 3> const& cv = v; |
| |
| msgpack::type::array_ref<std::array<unsigned char, 3> const> ar1 = msgpack::type::make_array_ref(cv); |
| std::stringstream ss; |
| msgpack::pack(ss, ar1); |
| |
| msgpack::unpacked upd; |
| msgpack::unpack(upd, ss.str().data(), ss.str().size()); |
| EXPECT_EQ(upd.get().type, msgpack::type::ARRAY); |
| std::array<unsigned char, 3> v2; |
| msgpack::type::array_ref<std::array<unsigned char, 3> > ar2(v2); |
| upd.get().convert(ar2); |
| EXPECT_TRUE(ar1 == ar2); |
| } |
| |
| TEST(MSGPACK_ARRAY_REF, object_with_zone_array_char) |
| { |
| std::array<char, 3> v { { 'a', 'b', 'c' } }; |
| |
| msgpack::type::array_ref<std::array<char, 3> > ar1 = msgpack::type::make_array_ref(v); |
| msgpack::zone z; |
| msgpack::object obj(ar1, z); |
| |
| EXPECT_EQ(obj.type, msgpack::type::ARRAY); |
| std::array<char, 3> v2; |
| msgpack::type::array_ref<std::array<char, 3> > ar2(v2); |
| obj.convert(ar2); |
| EXPECT_TRUE(ar1 == ar2); |
| } |
| |
| TEST(MSGPACK_ARRAY_REF, object_with_zone_array_char_const) |
| { |
| std::array<char, 3> v { { 'a', 'b', 'c' } }; |
| |
| std::array<char, 3> const& cv = v; |
| |
| msgpack::type::array_ref<std::array<char, 3> const> ar1 = msgpack::type::make_array_ref(cv); |
| msgpack::zone z; |
| msgpack::object obj(ar1, z); |
| |
| EXPECT_EQ(obj.type, msgpack::type::ARRAY); |
| std::array<char, 3> v2; |
| msgpack::type::array_ref<std::array<char, 3> > ar2(v2); |
| obj.convert(ar2); |
| EXPECT_TRUE(ar1 == ar2); |
| } |
| |
| TEST(MSGPACK_ARRAY_REF, object_with_zone_array_unsigned_char) |
| { |
| std::array<unsigned char, 3> v { { 'a', 'b', 'c' } }; |
| |
| msgpack::type::array_ref<std::array<unsigned char, 3> > ar1 = msgpack::type::make_array_ref(v); |
| msgpack::zone z; |
| msgpack::object obj(ar1, z); |
| |
| EXPECT_EQ(obj.type, msgpack::type::ARRAY); |
| std::array<unsigned char, 3> v2; |
| msgpack::type::array_ref<std::array<unsigned char, 3> > ar2(v2); |
| obj.convert(ar2); |
| EXPECT_TRUE(ar1 == ar2); |
| } |
| |
| TEST(MSGPACK_ARRAY_REF, object_with_zone_array_unsigned_char_const) |
| { |
| std::array<unsigned char, 3> v { { 'a', 'b', 'c' } }; |
| |
| std::array<unsigned char, 3> const& cv = v; |
| |
| msgpack::type::array_ref<std::array<unsigned char, 3> const> ar1 = msgpack::type::make_array_ref(cv); |
| msgpack::zone z; |
| msgpack::object obj(ar1, z); |
| |
| EXPECT_EQ(obj.type, msgpack::type::ARRAY); |
| std::array<unsigned char, 3> v2; |
| msgpack::type::array_ref<std::array<unsigned char, 3> > ar2(v2); |
| obj.convert(ar2); |
| EXPECT_TRUE(ar1 == ar2); |
| } |
| |
| #endif // !defined(MSGPACK_USE_CPP03) |