123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235 |
- #include <msgpack.hpp>
- #include <string>
- #include <sstream>
- #include <gtest/gtest.h>
- #ifdef HAVE_CONFIG_H
- #include "config.h"
- #endif
- TEST(MSGPACK_RAW_REF, pack_unpack)
- {
- std::string s = "ABC";
- msgpack::type::raw_ref rr1(s.data(), s.size());
- std::stringstream ss;
- msgpack::pack(ss, rr1);
- std::string packed_str = ss.str();
- EXPECT_EQ(packed_str[0], static_cast<char>(0xc4u));
- EXPECT_EQ(packed_str[1], static_cast<char>(0x03u));
- EXPECT_EQ(packed_str[2], 'A');
- EXPECT_EQ(packed_str[3], 'B');
- EXPECT_EQ(packed_str[4], 'C');
- msgpack::object_handle oh =
- msgpack::unpack(ss.str().data(), ss.str().size());
- msgpack::type::raw_ref rr2 = oh.get().as<msgpack::type::raw_ref>();
- EXPECT_TRUE(rr1 == rr2);
- }
- TEST(MSGPACK_RAW_REF, pack_unpack_8_l)
- {
- std::string s;
- msgpack::type::raw_ref rr1(s.data(), s.size());
- std::stringstream ss;
- msgpack::pack(ss, rr1);
- std::string packed_str = ss.str();
- EXPECT_EQ(packed_str[0], static_cast<char>(0xc4u));
- EXPECT_EQ(packed_str[1], static_cast<char>(0x00u));
- msgpack::object_handle oh =
- msgpack::unpack(ss.str().data(), ss.str().size());
- msgpack::type::raw_ref rr2 = oh.get().as<msgpack::type::raw_ref>();
- EXPECT_TRUE(rr1 == rr2);
- }
- TEST(MSGPACK_RAW_REF, pack_unpack_8_h)
- {
- std::string s(0xff, 'A');
- msgpack::type::raw_ref rr1(s.data(), s.size());
- std::stringstream ss;
- msgpack::pack(ss, rr1);
- std::string packed_str = ss.str();
- EXPECT_EQ(packed_str[0], static_cast<char>(0xc4u));
- EXPECT_EQ(packed_str[1], static_cast<char>(0xffu));
- EXPECT_EQ(packed_str[2], 'A');
- msgpack::object_handle oh =
- msgpack::unpack(ss.str().data(), ss.str().size());
- msgpack::type::raw_ref rr2 = oh.get().as<msgpack::type::raw_ref>();
- EXPECT_TRUE(rr1 == rr2);
- }
- TEST(MSGPACK_RAW_REF, pack_unpack_16_l)
- {
- std::string s(0xff+1, 'A');
- msgpack::type::raw_ref rr1(s.data(), s.size());
- std::stringstream ss;
- msgpack::pack(ss, rr1);
- std::string packed_str = ss.str();
- EXPECT_EQ(packed_str[0], static_cast<char>(0xc5u));
- EXPECT_EQ(packed_str[1], static_cast<char>(0x01));
- EXPECT_EQ(packed_str[2], static_cast<char>(0x00));
- EXPECT_EQ(packed_str[3], 'A');
- msgpack::object_handle oh =
- msgpack::unpack(ss.str().data(), ss.str().size());
- msgpack::type::raw_ref rr2 = oh.get().as<msgpack::type::raw_ref>();
- EXPECT_TRUE(rr1 == rr2);
- }
- TEST(MSGPACK_RAW_REF, pack_unpack_16_h)
- {
- std::string s(0xffff, 'A');
- msgpack::type::raw_ref rr1(s.data(), s.size());
- std::stringstream ss;
- msgpack::pack(ss, rr1);
- std::string packed_str = ss.str();
- EXPECT_EQ(packed_str[0], static_cast<char>(0xc5u));
- EXPECT_EQ(packed_str[1], static_cast<char>(0xffu));
- EXPECT_EQ(packed_str[2], static_cast<char>(0xffu));
- EXPECT_EQ(packed_str[3], 'A');
- msgpack::object_handle oh =
- msgpack::unpack(ss.str().data(), ss.str().size());
- msgpack::type::raw_ref rr2 = oh.get().as<msgpack::type::raw_ref>();
- EXPECT_TRUE(rr1 == rr2);
- }
- TEST(MSGPACK_RAW_REF, pack_unpack_32_l)
- {
- std::string s(0xffff+1, 'A');
- msgpack::type::raw_ref rr1(s.data(), s.size());
- std::stringstream ss;
- msgpack::pack(ss, rr1);
- std::string packed_str = ss.str();
- EXPECT_EQ(packed_str[0], static_cast<char>(0xc6u));
- EXPECT_EQ(packed_str[1], static_cast<char>(0x00));
- EXPECT_EQ(packed_str[2], static_cast<char>(0x01));
- EXPECT_EQ(packed_str[3], static_cast<char>(0x00));
- EXPECT_EQ(packed_str[4], static_cast<char>(0x00));
- EXPECT_EQ(packed_str[5], 'A');
- msgpack::object_handle oh =
- msgpack::unpack(ss.str().data(), ss.str().size());
- msgpack::type::raw_ref rr2 = oh.get().as<msgpack::type::raw_ref>();
- EXPECT_TRUE(rr1 == rr2);
- }
- TEST(MSGPACK_V4RAW_REF, pack_unpack)
- {
- std::string s = "ABC";
- msgpack::type::v4raw_ref rr1(s.data(), s.size());
- std::stringstream ss;
- msgpack::pack(ss, rr1);
- std::string packed_str = ss.str();
- EXPECT_EQ(packed_str[0], static_cast<char>(0xa3u));
- EXPECT_EQ(packed_str[1], 'A');
- EXPECT_EQ(packed_str[2], 'B');
- EXPECT_EQ(packed_str[3], 'C');
- msgpack::object_handle oh =
- msgpack::unpack(ss.str().data(), ss.str().size());
- msgpack::type::v4raw_ref rr2 = oh.get().as<msgpack::type::v4raw_ref>();
- EXPECT_TRUE(rr1 == rr2);
- }
- TEST(MSGPACK_V4RAW_REF, pack_unpack_fix_l)
- {
- std::string s;
- msgpack::type::v4raw_ref rr1(s.data(), s.size());
- std::stringstream ss;
- msgpack::pack(ss, rr1);
- std::string packed_str = ss.str();
- EXPECT_EQ(packed_str[0], static_cast<char>(0xa0u));
- msgpack::object_handle oh =
- msgpack::unpack(ss.str().data(), ss.str().size());
- msgpack::type::v4raw_ref rr2 = oh.get().as<msgpack::type::v4raw_ref>();
- EXPECT_TRUE(rr1 == rr2);
- }
- TEST(MSGPACK_V4RAW_REF, pack_unpack_fix_h)
- {
- std::string s(0x1f, 'A');
- msgpack::type::v4raw_ref rr1(s.data(), s.size());
- std::stringstream ss;
- msgpack::pack(ss, rr1);
- std::string packed_str = ss.str();
- EXPECT_EQ(packed_str[0], static_cast<char>(0xbfu));
- EXPECT_EQ(packed_str[1], 'A');
- msgpack::object_handle oh =
- msgpack::unpack(ss.str().data(), ss.str().size());
- msgpack::type::v4raw_ref rr2 = oh.get().as<msgpack::type::v4raw_ref>();
- EXPECT_TRUE(rr1 == rr2);
- }
- TEST(MSGPACK_V4RAW_REF, pack_unpack_16_l)
- {
- std::string s(0x1f+1, 'A');
- msgpack::type::v4raw_ref rr1(s.data(), s.size());
- std::stringstream ss;
- msgpack::pack(ss, rr1);
- std::string packed_str = ss.str();
- EXPECT_EQ(packed_str[0], static_cast<char>(0xdau));
- EXPECT_EQ(packed_str[1], static_cast<char>(0x00u));
- EXPECT_EQ(packed_str[2], static_cast<char>(0x20u));
- EXPECT_EQ(packed_str[3], 'A');
- msgpack::object_handle oh =
- msgpack::unpack(ss.str().data(), ss.str().size());
- msgpack::type::v4raw_ref rr2 = oh.get().as<msgpack::type::v4raw_ref>();
- EXPECT_TRUE(rr1 == rr2);
- }
- TEST(MSGPACK_V4RAW_REF, pack_unpack_16_h)
- {
- std::string s(0xffff, 'A');
- msgpack::type::v4raw_ref rr1(s.data(), s.size());
- std::stringstream ss;
- msgpack::pack(ss, rr1);
- std::string packed_str = ss.str();
- EXPECT_EQ(packed_str[0], static_cast<char>(0xdau));
- EXPECT_EQ(packed_str[1], static_cast<char>(0xffu));
- EXPECT_EQ(packed_str[2], static_cast<char>(0xffu));
- EXPECT_EQ(packed_str[3], 'A');
- msgpack::object_handle oh =
- msgpack::unpack(ss.str().data(), ss.str().size());
- msgpack::type::v4raw_ref rr2 = oh.get().as<msgpack::type::v4raw_ref>();
- EXPECT_TRUE(rr1 == rr2);
- }
- TEST(MSGPACK_V4RAW_REF, pack_unpack_32_l)
- {
- std::string s(0xffff+1, 'A');
- msgpack::type::v4raw_ref rr1(s.data(), s.size());
- std::stringstream ss;
- msgpack::pack(ss, rr1);
- std::string packed_str = ss.str();
- EXPECT_EQ(packed_str[0], static_cast<char>(0xdbu));
- EXPECT_EQ(packed_str[1], static_cast<char>(0x00));
- EXPECT_EQ(packed_str[2], static_cast<char>(0x01));
- EXPECT_EQ(packed_str[3], static_cast<char>(0x00));
- EXPECT_EQ(packed_str[4], static_cast<char>(0x00));
- EXPECT_EQ(packed_str[5], 'A');
- msgpack::object_handle oh =
- msgpack::unpack(ss.str().data(), ss.str().size());
- msgpack::type::v4raw_ref rr2 = oh.get().as<msgpack::type::v4raw_ref>();
- EXPECT_TRUE(rr1 == rr2);
- }
|