#include
#define BOOST_TEST_MODULE iterator
#include
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#if !defined(MSGPACK_USE_CPP03)
#include
// C++11
constexpr unsigned int VECTOR_SIZE = 100;
constexpr unsigned int MAP_SIZE = 100;
BOOST_AUTO_TEST_CASE(vector)
{
using vec_type = std::vector;
vec_type vec;
vec.reserve(VECTOR_SIZE);
for (unsigned int i = 0; i < VECTOR_SIZE; i++) {
vec.push_back(static_cast(rand()));
}
msgpack::sbuffer sbuf;
msgpack::pack(sbuf, vec);
msgpack::object_handle oh =
msgpack::unpack(sbuf.data(), sbuf.size());
auto const& msgarr = oh.get().via.array;
auto dist = std::distance(begin(msgarr), end(msgarr));
auto vecSize = vec.size();
BOOST_CHECK_EQUAL(static_cast(dist), vecSize);
vec_type::const_iterator correct = std::begin(vec);
for (auto const& obj : msgarr) {
auto u64 = *correct;
BOOST_CHECK_EQUAL(obj.as(), u64);
++correct;
}
}
BOOST_AUTO_TEST_CASE(map)
{
using map_type = std::map;
map_type map;
for (unsigned i = 0; i < MAP_SIZE; i++) {
map[static_cast(rand())] = static_cast(rand());
}
msgpack::sbuffer sbuf;
msgpack::pack(sbuf, map);
msgpack::object_handle oh =
msgpack::unpack(sbuf.data(), sbuf.size());
auto const& msgmap = oh.get().via.map;
auto dist = std::distance(begin(msgmap), end(msgmap));
auto mapSize = map.size();
BOOST_CHECK_EQUAL(static_cast(dist), mapSize);
for (auto const& kv : msgmap) {
auto key = kv.key.as();
auto val = kv.val.as();
auto correct = map[key];
BOOST_CHECK_EQUAL(val, correct);
}
}
#endif // !defined(MSGPACK_USE_CPP03