Skip to content

Commit

Permalink
Added tests for the Init functionality
Browse files Browse the repository at this point in the history
Signed-off-by: Athish Pranav D <[email protected]>
  • Loading branch information
Athishpranav2003 committed Aug 16, 2024
1 parent 96493f5 commit 1cae9ed
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 0 deletions.
2 changes: 2 additions & 0 deletions include/msgpack/object.h
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,8 @@ typedef struct msgpack_object_kv {
msgpack_object val;
} msgpack_object_kv;

int msgpack_object_init(msgpack_object* d, void* data, size_t size, int type);

#if !defined(_KERNEL_MODE)
MSGPACK_DLLEXPORT
void msgpack_object_print(FILE* out, msgpack_object o);
Expand Down
46 changes: 46 additions & 0 deletions test/msgpack_c.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#include "msgpack.h"

#include <math.h>
#include <msgpack/object.h>
#include <vector>
#include <limits>

Expand Down Expand Up @@ -1612,6 +1613,51 @@ TEST(MSGPACKC, object_bin_print_buffer_overflow) {
EXPECT_STREQ("\"test\"", buffer);
}

TEST(MSGPACKC, init_msgpack_obj_string) {
msgpack_object obj;
char buffer[] = "test";
msgpack_object_init(&obj, (void *)buffer, strlen(buffer), MSGPACK_OBJECT_STR);
EXPECT_EQ(MSGPACK_OBJECT_STR, obj.type);
EXPECT_STREQ(buffer, obj.via.str.ptr);
}

TEST(MSGPACKC, init_msgpack_obj_bin) {
msgpack_object obj;
char buffer[] = "test";
msgpack_object_init(&obj, (void *)buffer, strlen(buffer), MSGPACK_OBJECT_BIN);
EXPECT_EQ(MSGPACK_OBJECT_BIN, obj.type);
EXPECT_STREQ(buffer, obj.via.bin.ptr);
}

TEST(MSGPACKC, init_msgpack_obj_array) {
msgpack_object obj;
char buffer[][7] = {"test_1", "test_2", "test_3", "test_4"};
int buffer_size = 4;
msgpack_object array[buffer_size];
for(int i = 0; i < buffer_size; i++) {
msgpack_object_init(&array[i], (void *)buffer[i], strlen(buffer[i]), MSGPACK_OBJECT_STR);
}
msgpack_object_init(&obj, (void *)array, buffer_size, MSGPACK_OBJECT_ARRAY);
EXPECT_EQ(MSGPACK_OBJECT_ARRAY, obj.type);
for(int i = 0; i < buffer_size; i++) {
EXPECT_STREQ(buffer[i], obj.via.array.ptr[i].via.str.ptr);
}
}

TEST(MSGPACKC, init_msgpack_obj_map) {
msgpack_object obj;
char key_str[] = "test_key";
char value_str[] = "test_value";
msgpack_object key,value;
msgpack_object_init(&key, (void *)key_str, strlen(key_str), MSGPACK_OBJECT_STR);
msgpack_object_init(&value, (void *)value_str, strlen(value_str), MSGPACK_OBJECT_STR);
msgpack_object_kv map = { key, value };
msgpack_object_init(&obj, (void *)&map, 1, MSGPACK_OBJECT_MAP);
EXPECT_EQ(MSGPACK_OBJECT_MAP, obj.type);
EXPECT_STREQ(key_str, obj.via.map.ptr->key.via.str.ptr);
EXPECT_STREQ(value_str, obj.via.map.ptr->val.via.str.ptr);
}

/* test for vrefbuffer */
#define GEN_TEST_VREFBUFFER_PREPARE(...) \
msgpack_vrefbuffer vbuf; \
Expand Down

0 comments on commit 1cae9ed

Please sign in to comment.