mirror of
https://github.com/msgpack/msgpack-c.git
synced 2025-05-29 15:34:08 +02:00
cpp: add tests for stream unpacker api
This commit is contained in:
parent
bf3cb63d46
commit
d0b76814b0
120
cpp/test.cpp
120
cpp/test.cpp
@ -670,3 +670,123 @@ TEST(MSGPACK, vrefbuffer_int64)
|
|||||||
{
|
{
|
||||||
GEN_TEST_VREF(int64_t);
|
GEN_TEST_VREF(int64_t);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#define GEN_TEST_STREAM(test_type) \
|
||||||
|
for (unsigned int k = 0; k < kLoop; k++) { \
|
||||||
|
msgpack::sbuffer sbuf; \
|
||||||
|
msgpack::packer<msgpack::sbuffer> pk(sbuf); \
|
||||||
|
typedef std::vector<test_type> vec_type; \
|
||||||
|
vec_type vec; \
|
||||||
|
for(unsigned int i = 0; i < rand() % kLoop; ++i) { \
|
||||||
|
vec_type::value_type r = rand(); \
|
||||||
|
vec.push_back(r); \
|
||||||
|
pk.pack(r); \
|
||||||
|
} \
|
||||||
|
msgpack::unpacker pac; \
|
||||||
|
vec_type::const_iterator it = vec.begin(); \
|
||||||
|
const char *p = sbuf.data(); \
|
||||||
|
const char * const pend = p + sbuf.size(); \
|
||||||
|
while (p < pend) { \
|
||||||
|
const size_t sz = std::min<size_t>(pend - p, rand() % 128); \
|
||||||
|
pac.reserve_buffer(sz); \
|
||||||
|
memcpy(pac.buffer(), p, sz); \
|
||||||
|
pac.buffer_consumed(sz); \
|
||||||
|
while (pac.execute()) { \
|
||||||
|
if (it == vec.end()) goto out; \
|
||||||
|
msgpack::object obj = pac.data(); \
|
||||||
|
msgpack::zone *life = pac.release_zone(); \
|
||||||
|
EXPECT_TRUE(life != NULL); \
|
||||||
|
pac.reset(); \
|
||||||
|
vec_type::value_type val; \
|
||||||
|
obj.convert(&val); \
|
||||||
|
EXPECT_EQ(*it, val); \
|
||||||
|
++it; \
|
||||||
|
delete life; \
|
||||||
|
} \
|
||||||
|
p += sz; \
|
||||||
|
} \
|
||||||
|
out: \
|
||||||
|
; \
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MSGPACK, stream_short)
|
||||||
|
{
|
||||||
|
GEN_TEST_STREAM(short);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MSGPACK, stream_int)
|
||||||
|
{
|
||||||
|
GEN_TEST_STREAM(int);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MSGPACK, stream_long)
|
||||||
|
{
|
||||||
|
GEN_TEST_STREAM(long);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MSGPACK, stream_long_long)
|
||||||
|
{
|
||||||
|
GEN_TEST_STREAM(long long);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MSGPACK, stream_unsigned_short)
|
||||||
|
{
|
||||||
|
GEN_TEST_STREAM(unsigned short);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MSGPACK, stream_unsigned_int)
|
||||||
|
{
|
||||||
|
GEN_TEST_STREAM(unsigned int);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MSGPACK, stream_unsigned_long)
|
||||||
|
{
|
||||||
|
GEN_TEST_STREAM(unsigned long);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MSGPACK, stream_unsigned_long_long)
|
||||||
|
{
|
||||||
|
GEN_TEST_STREAM(unsigned long long);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MSGPACK, stream_uint8)
|
||||||
|
{
|
||||||
|
GEN_TEST_STREAM(uint8_t);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MSGPACK, stream_uint16)
|
||||||
|
{
|
||||||
|
GEN_TEST_STREAM(uint16_t);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MSGPACK, stream_uint32)
|
||||||
|
{
|
||||||
|
GEN_TEST_STREAM(uint32_t);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MSGPACK, stream_uint64)
|
||||||
|
{
|
||||||
|
GEN_TEST_STREAM(uint64_t);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MSGPACK, stream_int8)
|
||||||
|
{
|
||||||
|
GEN_TEST_STREAM(int8_t);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MSGPACK, stream_int16)
|
||||||
|
{
|
||||||
|
GEN_TEST_STREAM(int16_t);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MSGPACK, stream_int32)
|
||||||
|
{
|
||||||
|
GEN_TEST_STREAM(int32_t);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MSGPACK, stream_int64)
|
||||||
|
{
|
||||||
|
GEN_TEST_STREAM(int64_t);
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user