1#include <msgpack.h> 2#include <gtest/gtest.h> 3#include <stdio.h> 4 5TEST(pack, num) 6{ 7 msgpack_sbuffer* sbuf = msgpack_sbuffer_new(); 8 msgpack_packer* pk = msgpack_packer_new(sbuf, msgpack_sbuffer_write); 9 10 EXPECT_EQ(0, msgpack_pack_int(pk, 1)); 11 12 msgpack_sbuffer_free(sbuf); 13 msgpack_packer_free(pk); 14} 15 16 17TEST(pack, array) 18{ 19 msgpack_sbuffer* sbuf = msgpack_sbuffer_new(); 20 msgpack_packer* pk = msgpack_packer_new(sbuf, msgpack_sbuffer_write); 21 22 EXPECT_EQ(0, msgpack_pack_array(pk, 3)); 23 EXPECT_EQ(0, msgpack_pack_int(pk, 1)); 24 EXPECT_EQ(0, msgpack_pack_int(pk, 2)); 25 EXPECT_EQ(0, msgpack_pack_int(pk, 3)); 26 27 msgpack_sbuffer_free(sbuf); 28 msgpack_packer_free(pk); 29} 30 31 32TEST(unpack, sequence) 33{ 34 msgpack_sbuffer* sbuf = msgpack_sbuffer_new(); 35 msgpack_packer* pk = msgpack_packer_new(sbuf, msgpack_sbuffer_write); 36 37 EXPECT_EQ(0, msgpack_pack_int(pk, 1)); 38 EXPECT_EQ(0, msgpack_pack_int(pk, 2)); 39 EXPECT_EQ(0, msgpack_pack_int(pk, 3)); 40 41 msgpack_packer_free(pk); 42 43 msgpack_unpack_return success; 44 size_t offset = 0; 45 46 msgpack_unpacked msg; 47 msgpack_unpacked_init(&msg); 48 49 success = msgpack_unpack_next(&msg, sbuf->data, sbuf->size, &offset); 50 EXPECT_EQ(MSGPACK_UNPACK_SUCCESS, success); 51 EXPECT_EQ(MSGPACK_OBJECT_POSITIVE_INTEGER, msg.data.type); 52 EXPECT_EQ(1u, msg.data.via.u64); 53 54 success = msgpack_unpack_next(&msg, sbuf->data, sbuf->size, &offset); 55 EXPECT_EQ(MSGPACK_UNPACK_SUCCESS, success); 56 EXPECT_EQ(MSGPACK_OBJECT_POSITIVE_INTEGER, msg.data.type); 57 EXPECT_EQ(2u, msg.data.via.u64); 58 59 success = msgpack_unpack_next(&msg, sbuf->data, sbuf->size, &offset); 60 EXPECT_EQ(MSGPACK_UNPACK_SUCCESS, success); 61 EXPECT_EQ(MSGPACK_OBJECT_POSITIVE_INTEGER, msg.data.type); 62 EXPECT_EQ(3u, msg.data.via.u64); 63 64 success = msgpack_unpack_next(&msg, sbuf->data, sbuf->size, &offset); 65 EXPECT_EQ(MSGPACK_UNPACK_CONTINUE, success); 66 67 msgpack_sbuffer_free(sbuf); 68 msgpack_unpacked_destroy(&msg); 69} 70 71TEST(pack, insufficient) 72{ 73 msgpack_sbuffer* sbuf = msgpack_sbuffer_new(); 74 msgpack_packer* pk = msgpack_packer_new(sbuf, msgpack_sbuffer_write); 75 76 EXPECT_EQ(0, msgpack_pack_int(pk, 255)); // uint8 (2bytes) 77 78 msgpack_unpack_return success; 79 size_t offset = 0; 80 81 msgpack_unpacked msg; 82 msgpack_unpacked_init(&msg); 83 84 success = msgpack_unpack_next(&msg, sbuf->data, 1, &offset); 85 EXPECT_EQ(MSGPACK_UNPACK_CONTINUE, success); 86 EXPECT_EQ(0u, offset); 87 88 msgpack_unpacked_destroy(&msg); 89 90 msgpack_sbuffer_free(sbuf); 91 msgpack_packer_free(pk); 92} 93