Skip to content

Commit bf7fece

Browse files
committed
Merge pull request #43 from redboltz/add_test_and_example_for_37
Added a test and speed test examples for #37.
2 parents c04ef9e + 229467c commit bf7fece

File tree

3 files changed

+91
-0
lines changed

3 files changed

+91
-0
lines changed

example/speed_test_uint32_array.c

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#include <msgpack.h>
2+
#include <assert.h>
3+
4+
void test()
5+
{
6+
size_t size = 10000000;
7+
msgpack_sbuffer buf;
8+
msgpack_sbuffer_init(&buf);
9+
10+
msgpack_packer * pk = msgpack_packer_new(&buf, msgpack_sbuffer_write);
11+
12+
msgpack_pack_array(pk, size);
13+
{
14+
int idx = 0;
15+
for (; idx < size; ++idx)
16+
msgpack_pack_uint32(pk, 1);
17+
}
18+
msgpack_packer_free(pk);
19+
20+
21+
size_t upk_pos = 0;
22+
msgpack_unpacked msg;
23+
msgpack_unpacked_init(&msg);
24+
25+
while (msgpack_unpack_next(&msg, buf.data, buf.size, &upk_pos)) {
26+
}
27+
28+
msgpack_sbuffer_destroy(&buf);
29+
}
30+
31+
int main(int argc, char **argv)
32+
{
33+
int i = 0;
34+
for (; i < 10; ++i) test();
35+
return 0;
36+
}

example/speed_test_uint64_array.c

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#include <msgpack.h>
2+
#include <assert.h>
3+
4+
void test()
5+
{
6+
uint64_t test_u64 = 0xFFF0000000000001LL;
7+
size_t size = 10000000;
8+
msgpack_sbuffer buf;
9+
msgpack_sbuffer_init(&buf);
10+
11+
msgpack_packer * pk = msgpack_packer_new(&buf, msgpack_sbuffer_write);
12+
13+
msgpack_pack_array(pk, size);
14+
{
15+
int idx = 0;
16+
for (; idx < size; ++idx)
17+
msgpack_pack_uint64(pk, test_u64);
18+
}
19+
msgpack_packer_free(pk);
20+
21+
22+
size_t upk_pos = 0;
23+
msgpack_unpacked msg;
24+
msgpack_unpacked_init(&msg);
25+
26+
while (msgpack_unpack_next(&msg, buf.data, buf.size, &upk_pos)) {
27+
}
28+
29+
msgpack_sbuffer_destroy(&buf);
30+
}
31+
32+
int main(int argc, char **argv)
33+
{
34+
int i = 0;
35+
for (; i < 10; ++i) test();
36+
return 0;
37+
}

test/msgpackc_test.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -502,3 +502,21 @@ TEST(MSGPACKC, unpack_bin32)
502502

503503
msgpack_zone_destroy(&z);
504504
}
505+
506+
TEST(MSGPACKC, unpack_array_uint64)
507+
{
508+
const char buf[] = {
509+
(char)0x91, (char)0xcf, (char)0xff, (char)0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01
510+
};
511+
msgpack_zone z;
512+
msgpack_zone_init(&z, 2048);
513+
msgpack_object obj;
514+
msgpack_unpack_return ret;
515+
ret = msgpack_unpack(buf, sizeof(buf), NULL, &z, &obj);
516+
EXPECT_EQ(MSGPACK_UNPACK_SUCCESS, ret);
517+
EXPECT_EQ(MSGPACK_OBJECT_ARRAY, obj.type);
518+
EXPECT_EQ(1, obj.via.array.size);
519+
EXPECT_EQ(MSGPACK_OBJECT_POSITIVE_INTEGER, obj.via.array.ptr[0].type);
520+
EXPECT_EQ(0xFFF0000000000001LL, obj.via.array.ptr[0].via.u64);
521+
msgpack_zone_destroy(&z);
522+
}

0 commit comments

Comments
 (0)