From 229467cb2995bb43030e79f4dc2f013646f239a6 Mon Sep 17 00:00:00 2001 From: Takatoshi Kondo Date: Sun, 8 Dec 2013 10:39:13 +0000 Subject: [PATCH] Added a test and speed test examples for #37. --- example/speed_test_uint32_array.c | 36 ++++++++++++++++++++++++++++++ example/speed_test_uint64_array.c | 37 +++++++++++++++++++++++++++++++ test/msgpackc_test.cpp | 18 +++++++++++++++ 3 files changed, 91 insertions(+) create mode 100644 example/speed_test_uint32_array.c create mode 100644 example/speed_test_uint64_array.c diff --git a/example/speed_test_uint32_array.c b/example/speed_test_uint32_array.c new file mode 100644 index 00000000..9f259082 --- /dev/null +++ b/example/speed_test_uint32_array.c @@ -0,0 +1,36 @@ +#include +#include + +void test() +{ + size_t size = 10000000; + msgpack_sbuffer buf; + msgpack_sbuffer_init(&buf); + + msgpack_packer * pk = msgpack_packer_new(&buf, msgpack_sbuffer_write); + + msgpack_pack_array(pk, size); + { + int idx = 0; + for (; idx < size; ++idx) + msgpack_pack_uint32(pk, 1); + } + msgpack_packer_free(pk); + + + size_t upk_pos = 0; + msgpack_unpacked msg; + msgpack_unpacked_init(&msg); + + while (msgpack_unpack_next(&msg, buf.data, buf.size, &upk_pos)) { + } + + msgpack_sbuffer_destroy(&buf); +} + +int main(int argc, char **argv) +{ + int i = 0; + for (; i < 10; ++i) test(); + return 0; +} diff --git a/example/speed_test_uint64_array.c b/example/speed_test_uint64_array.c new file mode 100644 index 00000000..e8378dc3 --- /dev/null +++ b/example/speed_test_uint64_array.c @@ -0,0 +1,37 @@ +#include +#include + +void test() +{ + uint64_t test_u64 = 0xFFF0000000000001LL; + size_t size = 10000000; + msgpack_sbuffer buf; + msgpack_sbuffer_init(&buf); + + msgpack_packer * pk = msgpack_packer_new(&buf, msgpack_sbuffer_write); + + msgpack_pack_array(pk, size); + { + int idx = 0; + for (; idx < size; ++idx) + msgpack_pack_uint64(pk, test_u64); + } + msgpack_packer_free(pk); + + + size_t upk_pos = 0; + msgpack_unpacked msg; + msgpack_unpacked_init(&msg); + + while (msgpack_unpack_next(&msg, buf.data, buf.size, &upk_pos)) { + } + + msgpack_sbuffer_destroy(&buf); +} + +int main(int argc, char **argv) +{ + int i = 0; + for (; i < 10; ++i) test(); + return 0; +} diff --git a/test/msgpackc_test.cpp b/test/msgpackc_test.cpp index 13999e3b..08c21d70 100644 --- a/test/msgpackc_test.cpp +++ b/test/msgpackc_test.cpp @@ -502,3 +502,21 @@ TEST(MSGPACKC, unpack_bin32) msgpack_zone_destroy(&z); } + +TEST(MSGPACKC, unpack_array_uint64) +{ + const char buf[] = { + (char)0x91, (char)0xcf, (char)0xff, (char)0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 + }; + msgpack_zone z; + msgpack_zone_init(&z, 2048); + msgpack_object obj; + msgpack_unpack_return ret; + ret = msgpack_unpack(buf, sizeof(buf), NULL, &z, &obj); + EXPECT_EQ(MSGPACK_UNPACK_SUCCESS, ret); + EXPECT_EQ(MSGPACK_OBJECT_ARRAY, obj.type); + EXPECT_EQ(1, obj.via.array.size); + EXPECT_EQ(MSGPACK_OBJECT_POSITIVE_INTEGER, obj.via.array.ptr[0].type); + EXPECT_EQ(0xFFF0000000000001LL, obj.via.array.ptr[0].via.u64); + msgpack_zone_destroy(&z); +}