mirror of
https://gitee.com/zlgopen/awtk.git
synced 2024-12-05 05:27:58 +08:00
305 lines
8.1 KiB
C++
305 lines
8.1 KiB
C++
#include "gtest/gtest.h"
|
|
#include "tkc/buffer.h"
|
|
#include "ubjson/ubjson_writer.h"
|
|
|
|
TEST(UBJsonWriter, null) {
|
|
uint8_t buff[256];
|
|
wbuffer_t wb;
|
|
ubjson_writer_t ub;
|
|
wbuffer_init(&wb, buff, sizeof(buff));
|
|
ubjson_writer_init(&ub, (ubjson_write_callback_t)wbuffer_write_binary, &wb);
|
|
|
|
ASSERT_EQ(ubjson_writer_write_null(&ub), RET_OK);
|
|
|
|
ASSERT_EQ(buff[0], UBJSON_MARKER_NULL);
|
|
ASSERT_EQ(wb.cursor, 1u);
|
|
}
|
|
|
|
TEST(UBJsonWriter, noop) {
|
|
uint8_t buff[256];
|
|
wbuffer_t wb;
|
|
ubjson_writer_t ub;
|
|
wbuffer_init(&wb, buff, sizeof(buff));
|
|
ubjson_writer_init(&ub, (ubjson_write_callback_t)wbuffer_write_binary, &wb);
|
|
|
|
ASSERT_EQ(ubjson_writer_write_noop(&ub), RET_OK);
|
|
|
|
ASSERT_EQ(buff[0], UBJSON_MARKER_NOOP);
|
|
ASSERT_EQ(wb.cursor, 1u);
|
|
}
|
|
|
|
TEST(UBJsonWriter, true) {
|
|
uint8_t buff[256];
|
|
wbuffer_t wb;
|
|
ubjson_writer_t ub;
|
|
wbuffer_init(&wb, buff, sizeof(buff));
|
|
ubjson_writer_init(&ub, (ubjson_write_callback_t)wbuffer_write_binary, &wb);
|
|
|
|
ASSERT_EQ(ubjson_writer_write_true(&ub), RET_OK);
|
|
|
|
ASSERT_EQ(buff[0], UBJSON_MARKER_TRUE);
|
|
ASSERT_EQ(wb.cursor, 1u);
|
|
}
|
|
|
|
TEST(UBJsonWriter, false) {
|
|
uint8_t buff[256];
|
|
wbuffer_t wb;
|
|
ubjson_writer_t ub;
|
|
wbuffer_init(&wb, buff, sizeof(buff));
|
|
ubjson_writer_init(&ub, (ubjson_write_callback_t)wbuffer_write_binary, &wb);
|
|
|
|
ASSERT_EQ(ubjson_writer_write_false(&ub), RET_OK);
|
|
|
|
ASSERT_EQ(buff[0], UBJSON_MARKER_FALSE);
|
|
ASSERT_EQ(wb.cursor, 1u);
|
|
}
|
|
|
|
TEST(UBJsonWriter, array) {
|
|
uint8_t buff[256];
|
|
wbuffer_t wb;
|
|
ubjson_writer_t ub;
|
|
wbuffer_init(&wb, buff, sizeof(buff));
|
|
ubjson_writer_init(&ub, (ubjson_write_callback_t)wbuffer_write_binary, &wb);
|
|
|
|
ASSERT_EQ(ubjson_writer_write_array_begin(&ub), RET_OK);
|
|
ASSERT_EQ(ubjson_writer_write_array_end(&ub), RET_OK);
|
|
|
|
ASSERT_EQ(buff[0], UBJSON_MARKER_ARRAY_BEGIN);
|
|
ASSERT_EQ(buff[1], UBJSON_MARKER_ARRAY_END);
|
|
ASSERT_EQ(wb.cursor, 2u);
|
|
}
|
|
|
|
TEST(UBJsonWriter, object) {
|
|
uint8_t buff[256];
|
|
wbuffer_t wb;
|
|
ubjson_writer_t ub;
|
|
wbuffer_init(&wb, buff, sizeof(buff));
|
|
ubjson_writer_init(&ub, (ubjson_write_callback_t)wbuffer_write_binary, &wb);
|
|
|
|
ASSERT_EQ(ubjson_writer_write_object_begin(&ub), RET_OK);
|
|
ASSERT_EQ(ubjson_writer_write_object_end(&ub), RET_OK);
|
|
|
|
ASSERT_EQ(buff[0], UBJSON_MARKER_OBJECT_BEGIN);
|
|
ASSERT_EQ(buff[1], UBJSON_MARKER_OBJECT_END);
|
|
ASSERT_EQ(wb.cursor, 2u);
|
|
}
|
|
|
|
TEST(UBJsonWriter, int8) {
|
|
uint8_t buff[256];
|
|
wbuffer_t wb;
|
|
ubjson_writer_t ub;
|
|
wbuffer_init(&wb, buff, sizeof(buff));
|
|
ubjson_writer_init(&ub, (ubjson_write_callback_t)wbuffer_write_binary, &wb);
|
|
|
|
ASSERT_EQ(ubjson_writer_write_int8(&ub, 0x12), RET_OK);
|
|
|
|
ASSERT_EQ(buff[0], UBJSON_MARKER_INT8);
|
|
ASSERT_EQ(buff[1], 0x12);
|
|
ASSERT_EQ(wb.cursor, 2u);
|
|
}
|
|
|
|
TEST(UBJsonWriter, char) {
|
|
uint8_t buff[256];
|
|
wbuffer_t wb;
|
|
ubjson_writer_t ub;
|
|
wbuffer_init(&wb, buff, sizeof(buff));
|
|
ubjson_writer_init(&ub, (ubjson_write_callback_t)wbuffer_write_binary, &wb);
|
|
|
|
ASSERT_EQ(ubjson_writer_write_char(&ub, 'a'), RET_OK);
|
|
|
|
ASSERT_EQ(buff[0], UBJSON_MARKER_CHAR);
|
|
ASSERT_EQ(buff[1], 'a');
|
|
ASSERT_EQ(wb.cursor, 2u);
|
|
}
|
|
|
|
TEST(UBJsonWriter, int16) {
|
|
uint8_t buff[256];
|
|
wbuffer_t wb;
|
|
ubjson_writer_t ub;
|
|
wbuffer_init(&wb, buff, sizeof(buff));
|
|
ubjson_writer_init(&ub, (ubjson_write_callback_t)wbuffer_write_binary, &wb);
|
|
|
|
ASSERT_EQ(ubjson_writer_write_int16(&ub, 0x1122), RET_OK);
|
|
|
|
ASSERT_EQ(buff[0], UBJSON_MARKER_INT16);
|
|
ASSERT_EQ(buff[1], 0x11);
|
|
ASSERT_EQ(buff[2], 0x22);
|
|
ASSERT_EQ(wb.cursor, 3u);
|
|
}
|
|
|
|
TEST(UBJsonWriter, int32) {
|
|
uint8_t buff[256];
|
|
wbuffer_t wb;
|
|
ubjson_writer_t ub;
|
|
wbuffer_init(&wb, buff, sizeof(buff));
|
|
ubjson_writer_init(&ub, (ubjson_write_callback_t)wbuffer_write_binary, &wb);
|
|
|
|
ASSERT_EQ(ubjson_writer_write_int32(&ub, 0x11223344), RET_OK);
|
|
|
|
ASSERT_EQ(buff[0], UBJSON_MARKER_INT32);
|
|
ASSERT_EQ(buff[1], 0x11);
|
|
ASSERT_EQ(buff[2], 0x22);
|
|
ASSERT_EQ(buff[3], 0x33);
|
|
ASSERT_EQ(buff[4], 0x44);
|
|
ASSERT_EQ(wb.cursor, 5u);
|
|
}
|
|
|
|
TEST(UBJsonWriter, int64) {
|
|
uint8_t buff[256];
|
|
wbuffer_t wb;
|
|
ubjson_writer_t ub;
|
|
wbuffer_init(&wb, buff, sizeof(buff));
|
|
ubjson_writer_init(&ub, (ubjson_write_callback_t)wbuffer_write_binary, &wb);
|
|
|
|
ASSERT_EQ(ubjson_writer_write_int64(&ub, 0x1122334455667788), RET_OK);
|
|
|
|
ASSERT_EQ(buff[0], UBJSON_MARKER_INT64);
|
|
ASSERT_EQ(buff[1], 0x11);
|
|
ASSERT_EQ(buff[2], 0x22);
|
|
ASSERT_EQ(buff[3], 0x33);
|
|
ASSERT_EQ(buff[4], 0x44);
|
|
ASSERT_EQ(buff[5], 0x55);
|
|
ASSERT_EQ(buff[6], 0x66);
|
|
ASSERT_EQ(buff[7], 0x77);
|
|
ASSERT_EQ(buff[8], 0x88);
|
|
ASSERT_EQ(wb.cursor, 9u);
|
|
}
|
|
|
|
TEST(UBJsonWriter, float) {
|
|
uint8_t buff[256];
|
|
wbuffer_t wb;
|
|
ubjson_writer_t ub;
|
|
wbuffer_init(&wb, buff, sizeof(buff));
|
|
ubjson_writer_init(&ub, (ubjson_write_callback_t)wbuffer_write_binary, &wb);
|
|
|
|
ASSERT_EQ(ubjson_writer_write_float32(&ub, 1.2), RET_OK);
|
|
|
|
ASSERT_EQ(buff[0], UBJSON_MARKER_FLOAT32);
|
|
ASSERT_EQ(wb.cursor, 5u);
|
|
}
|
|
|
|
TEST(UBJsonWriter, double) {
|
|
uint8_t buff[256];
|
|
wbuffer_t wb;
|
|
ubjson_writer_t ub;
|
|
wbuffer_init(&wb, buff, sizeof(buff));
|
|
ubjson_writer_init(&ub, (ubjson_write_callback_t)wbuffer_write_binary, &wb);
|
|
|
|
ASSERT_EQ(ubjson_writer_write_float64(&ub, 1.2), RET_OK);
|
|
|
|
ASSERT_EQ(buff[0], UBJSON_MARKER_FLOAT64);
|
|
ASSERT_EQ(wb.cursor, 9u);
|
|
}
|
|
|
|
TEST(UBJsonWriter, string) {
|
|
uint8_t buff[256];
|
|
wbuffer_t wb;
|
|
ubjson_writer_t ub;
|
|
wbuffer_init(&wb, buff, sizeof(buff));
|
|
ubjson_writer_init(&ub, (ubjson_write_callback_t)wbuffer_write_binary, &wb);
|
|
|
|
ASSERT_EQ(ubjson_writer_write_str(&ub, "a"), RET_OK);
|
|
|
|
ASSERT_EQ(buff[0], UBJSON_MARKER_STRING);
|
|
ASSERT_EQ(buff[1], UBJSON_MARKER_INT8);
|
|
ASSERT_EQ(buff[2], 0x1);
|
|
ASSERT_EQ(buff[3], 'a');
|
|
ASSERT_EQ(wb.cursor, 4u);
|
|
}
|
|
|
|
TEST(UBJsonWriter, binary) {
|
|
uint8_t buff[256];
|
|
wbuffer_t wb;
|
|
ubjson_writer_t ub;
|
|
wbuffer_init(&wb, buff, sizeof(buff));
|
|
ubjson_writer_init(&ub, (ubjson_write_callback_t)wbuffer_write_binary, &wb);
|
|
|
|
ASSERT_EQ(ubjson_writer_write_str_len(&ub, "aasdf", 1), RET_OK);
|
|
|
|
ASSERT_EQ(buff[0], UBJSON_MARKER_STRING);
|
|
ASSERT_EQ(buff[1], UBJSON_MARKER_INT8);
|
|
ASSERT_EQ(buff[2], 0x1);
|
|
ASSERT_EQ(buff[3], 'a');
|
|
ASSERT_EQ(wb.cursor, 4u);
|
|
}
|
|
|
|
TEST(UBJsonWriter, kv_string) {
|
|
uint8_t buff[256];
|
|
wbuffer_t wb;
|
|
ubjson_writer_t ub;
|
|
wbuffer_init(&wb, buff, sizeof(buff));
|
|
ubjson_writer_init(&ub, (ubjson_write_callback_t)wbuffer_write_binary, &wb);
|
|
|
|
ASSERT_EQ(ubjson_writer_write_kv_str(&ub, "a", "b"), RET_OK);
|
|
|
|
ASSERT_EQ(buff[0], UBJSON_MARKER_INT8);
|
|
ASSERT_EQ(buff[1], 0x1);
|
|
ASSERT_EQ(buff[2], 'a');
|
|
|
|
ASSERT_EQ(buff[3], UBJSON_MARKER_STRING);
|
|
ASSERT_EQ(buff[4], UBJSON_MARKER_INT8);
|
|
ASSERT_EQ(buff[5], 0x1);
|
|
ASSERT_EQ(buff[6], 'b');
|
|
ASSERT_EQ(wb.cursor, 7u);
|
|
}
|
|
|
|
TEST(UBJsonWriter, kv_wstring) {
|
|
uint8_t buff[256];
|
|
wbuffer_t wb;
|
|
ubjson_writer_t ub;
|
|
wbuffer_init(&wb, buff, sizeof(buff));
|
|
ubjson_writer_init(&ub, (ubjson_write_callback_t)wbuffer_write_binary, &wb);
|
|
|
|
ASSERT_EQ(ubjson_writer_write_kv_wstr(&ub, "a", L"b"), RET_OK);
|
|
|
|
ASSERT_EQ(buff[0], UBJSON_MARKER_INT8);
|
|
ASSERT_EQ(buff[1], 0x1);
|
|
ASSERT_EQ(buff[2], 'a');
|
|
|
|
ASSERT_EQ(buff[3], UBJSON_MARKER_WSTRING);
|
|
ASSERT_EQ(buff[4], UBJSON_MARKER_INT8);
|
|
ASSERT_EQ(buff[5], 0x1);
|
|
ASSERT_EQ(buff[6], 'b');
|
|
ASSERT_EQ(wb.cursor, 7u);
|
|
}
|
|
|
|
TEST(UBJsonWriter, kv_string_len) {
|
|
uint8_t buff[256];
|
|
wbuffer_t wb;
|
|
ubjson_writer_t ub;
|
|
wbuffer_init(&wb, buff, sizeof(buff));
|
|
ubjson_writer_init(&ub, (ubjson_write_callback_t)wbuffer_write_binary, &wb);
|
|
|
|
ASSERT_EQ(ubjson_writer_write_kv_str_len(&ub, "a", "b1231", 1), RET_OK);
|
|
|
|
ASSERT_EQ(buff[0], UBJSON_MARKER_INT8);
|
|
ASSERT_EQ(buff[1], 0x1);
|
|
ASSERT_EQ(buff[2], 'a');
|
|
|
|
ASSERT_EQ(buff[3], UBJSON_MARKER_STRING);
|
|
ASSERT_EQ(buff[4], UBJSON_MARKER_INT8);
|
|
ASSERT_EQ(buff[5], 0x1);
|
|
ASSERT_EQ(buff[6], 'b');
|
|
ASSERT_EQ(wb.cursor, 7u);
|
|
}
|
|
|
|
TEST(UBJsonWriter, kv_wstring_len) {
|
|
uint8_t buff[256];
|
|
wbuffer_t wb;
|
|
ubjson_writer_t ub;
|
|
wbuffer_init(&wb, buff, sizeof(buff));
|
|
ubjson_writer_init(&ub, (ubjson_write_callback_t)wbuffer_write_binary, &wb);
|
|
|
|
ASSERT_EQ(ubjson_writer_write_kv_wstr_len(&ub, "a", L"b1231", 1), RET_OK);
|
|
|
|
ASSERT_EQ(buff[0], UBJSON_MARKER_INT8);
|
|
ASSERT_EQ(buff[1], 0x1);
|
|
ASSERT_EQ(buff[2], 'a');
|
|
|
|
ASSERT_EQ(buff[3], UBJSON_MARKER_WSTRING);
|
|
ASSERT_EQ(buff[4], UBJSON_MARKER_INT8);
|
|
ASSERT_EQ(buff[5], 0x1);
|
|
ASSERT_EQ(buff[6], 'b');
|
|
ASSERT_EQ(wb.cursor, 7u);
|
|
}
|