pack_unpack_c.cpp 2.5 KB

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