mirror of
https://github.com/msgpack/msgpack-c.git
synced 2025-10-17 03:03:24 +02:00
@@ -527,7 +527,7 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct aligned_zone_size_visitor {
|
struct aligned_zone_size_visitor {
|
||||||
explicit aligned_zone_size_visitor(std::size_t s)
|
explicit aligned_zone_size_visitor(std::size_t& s)
|
||||||
:m_size(s) {}
|
:m_size(s) {}
|
||||||
bool visit_nil() {
|
bool visit_nil() {
|
||||||
return true;
|
return true;
|
||||||
@@ -596,7 +596,7 @@ struct aligned_zone_size_visitor {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
std::size_t m_size;
|
std::size_t& m_size;
|
||||||
};
|
};
|
||||||
|
|
||||||
inline std::size_t aligned_zone_size(msgpack::object const& obj) {
|
inline std::size_t aligned_zone_size(msgpack::object const& obj) {
|
||||||
|
116
test/object.cpp
116
test/object.cpp
@@ -361,67 +361,93 @@ TEST(object, clone_int)
|
|||||||
|
|
||||||
TEST(object, clone_str)
|
TEST(object, clone_str)
|
||||||
{
|
{
|
||||||
msgpack::zone z;
|
msgpack::object_handle oh;
|
||||||
std::string v = "123456789";
|
std::string v = "123456789";
|
||||||
msgpack::object obj(v, z);
|
{
|
||||||
std::size_t sz1 = msgpack::aligned_zone_size(obj);
|
msgpack::zone z;
|
||||||
msgpack::object_handle h = msgpack::clone(obj);
|
msgpack::object obj(v, z);
|
||||||
EXPECT_EQ(h.get(), obj);
|
std::size_t sz1 = msgpack::aligned_zone_size(obj);
|
||||||
EXPECT_EQ(sz1, msgpack::aligned_zone_size(h.get()));
|
msgpack::object_handle h = msgpack::clone(obj);
|
||||||
h = msgpack::clone(obj);
|
EXPECT_EQ(h.get(), obj);
|
||||||
EXPECT_EQ(h.get(), obj);
|
EXPECT_EQ(sz1, msgpack::aligned_zone_size(h.get()));
|
||||||
EXPECT_EQ(sz1, msgpack::aligned_zone_size(h.get()));
|
h = msgpack::clone(obj);
|
||||||
|
EXPECT_EQ(h.get(), obj);
|
||||||
|
EXPECT_EQ(sz1, msgpack::aligned_zone_size(h.get()));
|
||||||
|
oh = msgpack::move(h);
|
||||||
|
}
|
||||||
|
EXPECT_EQ(v, oh.get().as<std::string>());
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(object, clone_bin)
|
TEST(object, clone_bin)
|
||||||
{
|
{
|
||||||
msgpack::zone z;
|
msgpack::object_handle oh;
|
||||||
std::vector<char> v;
|
std::vector<char> v;
|
||||||
v.push_back('A');
|
{
|
||||||
v.push_back('B');
|
msgpack::zone z;
|
||||||
v.push_back('C');
|
v.push_back('A');
|
||||||
msgpack::object obj(v, z);
|
v.push_back('B');
|
||||||
std::size_t sz1 = msgpack::aligned_zone_size(obj);
|
v.push_back('C');
|
||||||
msgpack::object_handle h = msgpack::clone(obj);
|
msgpack::object obj(v, z);
|
||||||
EXPECT_EQ(h.get(), obj);
|
std::size_t sz1 = msgpack::aligned_zone_size(obj);
|
||||||
EXPECT_EQ(sz1, msgpack::aligned_zone_size(h.get()));
|
msgpack::object_handle h = msgpack::clone(obj);
|
||||||
h = msgpack::clone(obj);
|
EXPECT_EQ(h.get(), obj);
|
||||||
EXPECT_EQ(h.get(), obj);
|
EXPECT_EQ(sz1, msgpack::aligned_zone_size(h.get()));
|
||||||
EXPECT_EQ(sz1, msgpack::aligned_zone_size(h.get()));
|
h = msgpack::clone(obj);
|
||||||
|
EXPECT_EQ(h.get(), obj);
|
||||||
|
EXPECT_EQ(sz1, msgpack::aligned_zone_size(h.get()));
|
||||||
|
oh = msgpack::move(h);
|
||||||
|
}
|
||||||
|
std::vector<char> v2 = oh.get().as<std::vector<char> >();
|
||||||
|
EXPECT_EQ(v.size(), v2.size());
|
||||||
|
EXPECT_TRUE(equal(v.begin(), v.end(), v2.begin()));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(object, clone_array)
|
TEST(object, clone_array)
|
||||||
{
|
{
|
||||||
msgpack::zone z;
|
msgpack::object_handle oh;
|
||||||
std::vector<int> v;
|
std::vector<int> v;
|
||||||
v.push_back(1);
|
{
|
||||||
v.push_back(2);
|
msgpack::zone z;
|
||||||
v.push_back(3);
|
v.push_back(1);
|
||||||
msgpack::object obj(v, z);
|
v.push_back(2);
|
||||||
std::size_t sz1 = msgpack::aligned_zone_size(obj);
|
v.push_back(3);
|
||||||
msgpack::object_handle h = msgpack::clone(obj);
|
msgpack::object obj(v, z);
|
||||||
EXPECT_EQ(h.get(), obj);
|
std::size_t sz1 = msgpack::aligned_zone_size(obj);
|
||||||
EXPECT_EQ(sz1, msgpack::aligned_zone_size(h.get()));
|
msgpack::object_handle h = msgpack::clone(obj);
|
||||||
h = msgpack::clone(obj);
|
EXPECT_EQ(h.get(), obj);
|
||||||
EXPECT_EQ(h.get(), obj);
|
EXPECT_EQ(sz1, msgpack::aligned_zone_size(h.get()));
|
||||||
EXPECT_EQ(sz1, msgpack::aligned_zone_size(h.get()));
|
h = msgpack::clone(obj);
|
||||||
|
EXPECT_EQ(h.get(), obj);
|
||||||
|
EXPECT_EQ(sz1, msgpack::aligned_zone_size(h.get()));
|
||||||
|
oh = msgpack::move(h);
|
||||||
|
}
|
||||||
|
std::vector<int> v2 = oh.get().as<std::vector<int> >();
|
||||||
|
EXPECT_EQ(v.size(), v2.size());
|
||||||
|
EXPECT_TRUE(equal(v.begin(), v.end(), v2.begin()));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(object, clone_map)
|
TEST(object, clone_map)
|
||||||
{
|
{
|
||||||
msgpack::zone z;
|
msgpack::object_handle oh;
|
||||||
std::map<int, std::string> v;
|
std::map<int, std::string> v;
|
||||||
v.insert(std::map<int, std::string>::value_type(1, "ABC"));
|
{
|
||||||
v.insert(std::map<int, std::string>::value_type(2, "DEF"));
|
msgpack::zone z;
|
||||||
v.insert(std::map<int, std::string>::value_type(3, "GHI"));
|
v.insert(std::map<int, std::string>::value_type(1, "ABC"));
|
||||||
msgpack::object obj(v, z);
|
v.insert(std::map<int, std::string>::value_type(2, "DEF"));
|
||||||
std::size_t sz1 = msgpack::aligned_zone_size(obj);
|
v.insert(std::map<int, std::string>::value_type(3, "GHI"));
|
||||||
msgpack::object_handle h = msgpack::clone(obj);
|
msgpack::object obj(v, z);
|
||||||
EXPECT_EQ(h.get(), obj);
|
std::size_t sz1 = msgpack::aligned_zone_size(obj);
|
||||||
EXPECT_EQ(sz1, msgpack::aligned_zone_size(h.get()));
|
msgpack::object_handle h = msgpack::clone(obj);
|
||||||
h = msgpack::clone(obj);
|
EXPECT_EQ(h.get(), obj);
|
||||||
EXPECT_EQ(h.get(), obj);
|
EXPECT_EQ(sz1, msgpack::aligned_zone_size(h.get()));
|
||||||
EXPECT_EQ(sz1, msgpack::aligned_zone_size(h.get()));
|
h = msgpack::clone(obj);
|
||||||
|
EXPECT_EQ(h.get(), obj);
|
||||||
|
EXPECT_EQ(sz1, msgpack::aligned_zone_size(h.get()));
|
||||||
|
oh = msgpack::move(h);
|
||||||
|
}
|
||||||
|
std::map<int, std::string> v2 = oh.get().as<std::map<int, std::string> >();
|
||||||
|
EXPECT_EQ(v.size(), v2.size());
|
||||||
|
EXPECT_TRUE(equal(v.begin(), v.end(), v2.begin()));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(object, pack_float)
|
TEST(object, pack_float)
|
||||||
|
Reference in New Issue
Block a user