| #include "msgpack.hpp" |
| |
| #include <cmath> |
| #include <string> |
| #include <vector> |
| #include <map> |
| #include <deque> |
| #include <set> |
| #include <list> |
| #include <limits> |
| |
| #include <gtest/gtest.h> |
| |
| #ifdef HAVE_CONFIG_H |
| #include "config.h" |
| #endif |
| |
| using namespace std; |
| |
| #define GEN_TEST_VREF(test_type, vbuf) \ |
| do { \ |
| vector<test_type> v; \ |
| v.push_back(0); \ |
| for (unsigned int i = 0; i < v.size(); i++) { \ |
| test_type val1 = v[i]; \ |
| msgpack::pack(vbuf, val1); \ |
| msgpack::sbuffer sbuf; \ |
| const struct iovec* cur = vbuf.vector(); \ |
| const struct iovec* end = cur + vbuf.vector_size(); \ |
| for(; cur != end; ++cur) \ |
| sbuf.write((const char*)cur->iov_base, cur->iov_len); \ |
| msgpack::unpacked ret; \ |
| msgpack::unpack(ret, sbuf.data(), sbuf.size()); \ |
| test_type val2 = ret.get().as<test_type>(); \ |
| EXPECT_EQ(val1, val2); \ |
| } \ |
| } while(0); |
| |
| TEST(MSGPACK, vrefbuffer_char) |
| { |
| msgpack::vrefbuffer vbuf; |
| GEN_TEST_VREF(char, vbuf); |
| } |
| |
| TEST(MSGPACK, vrefbuffer_signed_char) |
| { |
| msgpack::vrefbuffer vbuf; |
| GEN_TEST_VREF(signed char, vbuf); |
| } |
| |
| TEST(MSGPACK, vrefbuffer_unsigned_char) |
| { |
| msgpack::vrefbuffer vbuf; |
| GEN_TEST_VREF(unsigned char, vbuf); |
| } |
| |
| TEST(MSGPACK, vrefbuffer_short) |
| { |
| msgpack::vrefbuffer vbuf; |
| GEN_TEST_VREF(short, vbuf); |
| } |
| |
| TEST(MSGPACK, vrefbuffer_int) |
| { |
| msgpack::vrefbuffer vbuf; |
| GEN_TEST_VREF(int, vbuf); |
| } |
| |
| TEST(MSGPACK, vrefbuffer_long) |
| { |
| msgpack::vrefbuffer vbuf; |
| GEN_TEST_VREF(long, vbuf); |
| } |
| |
| TEST(MSGPACK, vrefbuffer_long_long) |
| { |
| msgpack::vrefbuffer vbuf; |
| GEN_TEST_VREF(long long, vbuf); |
| } |
| |
| TEST(MSGPACK, vrefbuffer_unsigned_short) |
| { |
| msgpack::vrefbuffer vbuf; |
| GEN_TEST_VREF(unsigned short, vbuf); |
| } |
| |
| TEST(MSGPACK, vrefbuffer_unsigned_int) |
| { |
| msgpack::vrefbuffer vbuf; |
| GEN_TEST_VREF(unsigned int, vbuf); |
| } |
| |
| TEST(MSGPACK, vrefbuffer_unsigned_long) |
| { |
| msgpack::vrefbuffer vbuf; |
| GEN_TEST_VREF(unsigned long, vbuf); |
| } |
| |
| TEST(MSGPACK, vrefbuffer_unsigned_long_long) |
| { |
| msgpack::vrefbuffer vbuf; |
| GEN_TEST_VREF(unsigned long long, vbuf); |
| } |
| |
| TEST(MSGPACK, vrefbuffer_uint8) |
| { |
| msgpack::vrefbuffer vbuf; |
| GEN_TEST_VREF(uint8_t, vbuf); |
| } |
| |
| TEST(MSGPACK, vrefbuffer_uint16) |
| { |
| msgpack::vrefbuffer vbuf; |
| GEN_TEST_VREF(uint16_t, vbuf); |
| } |
| |
| TEST(MSGPACK, vrefbuffer_uint32) |
| { |
| msgpack::vrefbuffer vbuf; |
| GEN_TEST_VREF(uint32_t, vbuf); |
| } |
| |
| TEST(MSGPACK, vrefbuffer_uint64) |
| { |
| msgpack::vrefbuffer vbuf; |
| GEN_TEST_VREF(uint64_t, vbuf); |
| } |
| |
| TEST(MSGPACK, vrefbuffer_int8) |
| { |
| msgpack::vrefbuffer vbuf; |
| GEN_TEST_VREF(int8_t, vbuf); |
| } |
| |
| TEST(MSGPACK, vrefbuffer_int16) |
| { |
| msgpack::vrefbuffer vbuf; |
| GEN_TEST_VREF(int16_t, vbuf); |
| } |
| |
| TEST(MSGPACK, vrefbuffer_int32) |
| { |
| msgpack::vrefbuffer vbuf; |
| GEN_TEST_VREF(int32_t, vbuf); |
| } |
| |
| TEST(MSGPACK, vrefbuffer_int64) |
| { |
| msgpack::vrefbuffer vbuf; |
| GEN_TEST_VREF(int64_t, vbuf); |
| } |
| |
| // small ref_size and chunk_size |
| TEST(MSGPACK, vrefbuffer_small_char) |
| { |
| msgpack::vrefbuffer vbuf(0, 0); |
| GEN_TEST_VREF(char, vbuf); |
| } |
| |
| TEST(MSGPACK, vrefbuffer_small_signed_char) |
| { |
| msgpack::vrefbuffer vbuf(0, 0); |
| GEN_TEST_VREF(signed char, vbuf); |
| } |
| |
| TEST(MSGPACK, vrefbuffer_small_unsigned_char) |
| { |
| msgpack::vrefbuffer vbuf(0, 0); |
| GEN_TEST_VREF(unsigned char, vbuf); |
| } |
| |
| TEST(MSGPACK, vrefbuffer_small_short) |
| { |
| msgpack::vrefbuffer vbuf(0, 0); |
| GEN_TEST_VREF(short, vbuf); |
| } |
| |
| TEST(MSGPACK, vrefbuffer_small_int) |
| { |
| msgpack::vrefbuffer vbuf(0, 0); |
| GEN_TEST_VREF(int, vbuf); |
| } |
| |
| TEST(MSGPACK, vrefbuffer_small_long) |
| { |
| msgpack::vrefbuffer vbuf(0, 0); |
| GEN_TEST_VREF(long, vbuf); |
| } |
| |
| TEST(MSGPACK, vrefbuffer_small_long_long) |
| { |
| msgpack::vrefbuffer vbuf(0, 0); |
| GEN_TEST_VREF(long long, vbuf); |
| } |
| |
| TEST(MSGPACK, vrefbuffer_small_unsigned_short) |
| { |
| msgpack::vrefbuffer vbuf(0, 0); |
| GEN_TEST_VREF(unsigned short, vbuf); |
| } |
| |
| TEST(MSGPACK, vrefbuffer_small_unsigned_int) |
| { |
| msgpack::vrefbuffer vbuf(0, 0); |
| GEN_TEST_VREF(unsigned int, vbuf); |
| } |
| |
| TEST(MSGPACK, vrefbuffer_small_unsigned_long) |
| { |
| msgpack::vrefbuffer vbuf(0, 0); |
| GEN_TEST_VREF(unsigned long, vbuf); |
| } |
| |
| TEST(MSGPACK, vrefbuffer_small_unsigned_long_long) |
| { |
| msgpack::vrefbuffer vbuf(0, 0); |
| GEN_TEST_VREF(unsigned long long, vbuf); |
| } |
| |
| TEST(MSGPACK, vrefbuffer_small_uint8) |
| { |
| msgpack::vrefbuffer vbuf(0, 0); |
| GEN_TEST_VREF(uint8_t, vbuf); |
| } |
| |
| TEST(MSGPACK, vrefbuffer_small_uint16) |
| { |
| msgpack::vrefbuffer vbuf(0, 0); |
| GEN_TEST_VREF(uint16_t, vbuf); |
| } |
| |
| TEST(MSGPACK, vrefbuffer_small_uint32) |
| { |
| msgpack::vrefbuffer vbuf(0, 0); |
| GEN_TEST_VREF(uint32_t, vbuf); |
| } |
| |
| TEST(MSGPACK, vrefbuffer_small_uint64) |
| { |
| msgpack::vrefbuffer vbuf(0, 0); |
| GEN_TEST_VREF(uint64_t, vbuf); |
| } |
| |
| TEST(MSGPACK, vrefbuffer_small_int8) |
| { |
| msgpack::vrefbuffer vbuf(0, 0); |
| GEN_TEST_VREF(int8_t, vbuf); |
| } |
| |
| TEST(MSGPACK, vrefbuffer_small_int16) |
| { |
| msgpack::vrefbuffer vbuf(0, 0); |
| GEN_TEST_VREF(int16_t, vbuf); |
| } |
| |
| TEST(MSGPACK, vrefbuffer_small_int32) |
| { |
| msgpack::vrefbuffer vbuf(0, 0); |
| GEN_TEST_VREF(int32_t, vbuf); |
| } |
| |
| TEST(MSGPACK, vrefbuffer_small_int64) |
| { |
| msgpack::vrefbuffer vbuf(0, 0); |
| GEN_TEST_VREF(int64_t, vbuf); |
| } |