From 5b8777026a288a1d7606f0a2beac3dbc62915dbc Mon Sep 17 00:00:00 2001 From: Kazuki Ohta Date: Tue, 25 Aug 2009 19:04:21 +0900 Subject: [PATCH] c: add sometests for serialization --- c/test.cpp | 129 ++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 113 insertions(+), 16 deletions(-) diff --git a/c/test.cpp b/c/test.cpp index bc418ed..68c4f22 100644 --- a/c/test.cpp +++ b/c/test.cpp @@ -1,28 +1,125 @@ #include "msgpack.h" +#include +#include + #include -TEST(MSGPACKC, simple_buffer) +using namespace std; + +#define LOOP 10000 + +TEST(MSGPACKC, simple_buffer_short) { - msgpack_sbuffer sbuf; - msgpack_sbuffer_init(&sbuf); + vector v; + v.push_back(0); + v.push_back(1); + v.push_back(-1); + v.push_back(numeric_limits::min()); + v.push_back(numeric_limits::max()); + for (unsigned int i = 0; i < LOOP; i++) + v.push_back(rand()); - msgpack_packer pk; - msgpack_packer_init(&pk, &sbuf, msgpack_sbuffer_write); + for (unsigned int i = 0; i < v.size(); i++) { + short val = v[i]; + msgpack_sbuffer sbuf; + msgpack_sbuffer_init(&sbuf); - msgpack_pack_int(&pk, 1); + msgpack_packer pk; + msgpack_packer_init(&pk, &sbuf, msgpack_sbuffer_write); + msgpack_pack_short(&pk, val); - msgpack_zone z; - msgpack_zone_init(&z, 2048); + msgpack_zone z; + msgpack_zone_init(&z, 2048); - msgpack_object obj; + msgpack_object obj; + msgpack_unpack_return ret = + msgpack_unpack(sbuf.data, sbuf.size, NULL, &z, &obj); - msgpack_unpack_return ret = - msgpack_unpack(sbuf.data, sbuf.size, NULL, &z, &obj); - - EXPECT_EQ(ret, MSGPACK_UNPACK_SUCCESS); - - EXPECT_EQ(MSGPACK_OBJECT_POSITIVE_INTEGER, obj.type); - EXPECT_EQ(1, obj.via.u64); + EXPECT_EQ(MSGPACK_UNPACK_SUCCESS, ret); + if (val < 0) { + EXPECT_EQ(MSGPACK_OBJECT_NEGATIVE_INTEGER, obj.type); + EXPECT_EQ(val, obj.via.i64); + } else { + EXPECT_EQ(MSGPACK_OBJECT_POSITIVE_INTEGER, obj.type); + EXPECT_EQ(val, obj.via.u64); + } + } } +TEST(MSGPACKC, simple_buffer_int) +{ + vector v; + v.push_back(0); + v.push_back(1); + v.push_back(-1); + v.push_back(numeric_limits::min()); + v.push_back(numeric_limits::max()); + for (unsigned int i = 0; i < LOOP; i++) + v.push_back(rand()); + + for (unsigned int i = 0; i < v.size(); i++) { + int val = v[i]; + msgpack_sbuffer sbuf; + msgpack_sbuffer_init(&sbuf); + + msgpack_packer pk; + msgpack_packer_init(&pk, &sbuf, msgpack_sbuffer_write); + msgpack_pack_int(&pk, val); + + msgpack_zone z; + msgpack_zone_init(&z, 2048); + + msgpack_object obj; + msgpack_unpack_return ret = + msgpack_unpack(sbuf.data, sbuf.size, NULL, &z, &obj); + + EXPECT_EQ(MSGPACK_UNPACK_SUCCESS, ret); + if (val < 0) { + EXPECT_EQ(MSGPACK_OBJECT_NEGATIVE_INTEGER, obj.type); + EXPECT_EQ(val, obj.via.i64); + } else { + EXPECT_EQ(MSGPACK_OBJECT_POSITIVE_INTEGER, obj.type); + EXPECT_EQ(val, obj.via.u64); + } + } +} + +TEST(MSGPACKC, simple_buffer_long) +{ + vector v; + v.push_back(0); + v.push_back(1); + v.push_back(-1); + v.push_back(numeric_limits::min()); + v.push_back(numeric_limits::max()); + for (unsigned int i = 0; i < LOOP; i++) + v.push_back(rand()); + + for (unsigned int i = 0; i < v.size() ; i++) { + long val = v[i]; + + msgpack_sbuffer sbuf; + msgpack_sbuffer_init(&sbuf); + + msgpack_packer pk; + msgpack_packer_init(&pk, &sbuf, msgpack_sbuffer_write); + msgpack_pack_int(&pk, val); + + msgpack_zone z; + msgpack_zone_init(&z, 2048); + + msgpack_object obj; + msgpack_unpack_return ret = + msgpack_unpack(sbuf.data, sbuf.size, NULL, &z, &obj); + + EXPECT_EQ(MSGPACK_UNPACK_SUCCESS, ret); + if (val < 0) { + EXPECT_EQ(MSGPACK_OBJECT_NEGATIVE_INTEGER, obj.type); + EXPECT_EQ(val, obj.via.i64); + } else { + EXPECT_EQ(MSGPACK_OBJECT_POSITIVE_INTEGER, obj.type); + EXPECT_EQ(val, obj.via.u64); + } + } +}