improve fscript_json_save_to_string

This commit is contained in:
lixianjing 2022-05-19 11:40:22 +08:00
parent b94b90d73e
commit f05f57ddf2
5 changed files with 28 additions and 2 deletions

View File

@ -1,4 +1,6 @@
# 最新动态
2022/05/19
* 完善func\_json\_save\_ex感谢国文提供补丁
2022/05/18
* 完善Windows下utf8转换。按照utf16的规则对大于0x10000的字符值进行正确的编码 (感谢俊圣提供补丁)

View File

@ -79,6 +79,7 @@ static ret_t func_json_save_ex(fscript_t* fscript, fscript_args_t* args, value_t
if (result_type == VALUE_TYPE_BINARY) {
value_set_binary_data(result, wb.data, wb.cursor);
} else if (result_type == VALUE_TYPE_STRING) {
wbuffer_write_uint8(&wb, 0);
value_set_str(result, (const char*)wb.data);
}
result->free_handle = TRUE;

View File

@ -55,6 +55,7 @@ ret_t wbuffer_extend_capacity(wbuffer_t* wbuffer, uint32_t capacity) {
if (data != NULL) {
wbuffer->data = data;
wbuffer->capacity = capacity;
memset(data + wbuffer->cursor, 0x00, capacity - wbuffer->cursor);
return RET_OK;
}

View File

@ -6,6 +6,17 @@
using std::string;
TEST(Buffer, binary0) {
wbuffer_t wbuffer;
wbuffer_init_extendable(&wbuffer);
wbuffer_write_binary(&wbuffer, "hello", 5);
ASSERT_STREQ((char*)(wbuffer.data), "hello");
ASSERT_EQ(wbuffer.data[5], 0);
wbuffer_deinit(&wbuffer);
}
TEST(Buffer, demo1) {
wbuffer_t wbuffer;
wbuffer_init_extendable(&wbuffer);

View File

@ -2,7 +2,7 @@
#include "tkc/object_default.h"
#include "gtest/gtest.h"
TEST(FExr, json1) {
TEST(FExr, json_load1) {
value_t v;
tk_object_t* obj = object_default_create();
@ -13,7 +13,7 @@ TEST(FExr, json1) {
TK_OBJECT_UNREF(obj);
}
TEST(FExr, json2) {
TEST(FExr, json_load2) {
value_t v;
tk_object_t* obj = object_default_create();
@ -24,3 +24,14 @@ TEST(FExr, json2) {
TK_OBJECT_UNREF(obj);
}
TEST(FExr, json_save) {
value_t v;
tk_object_t* obj = object_default_create();
fscript_eval(obj, "a=json_load('{\"value\":123}');b=json_save_to_string(a);b", &v);
ASSERT_STREQ(value_str(&v), "{\n \"value\" : 123\n}");
value_reset(&v);
TK_OBJECT_UNREF(obj);
}