From 607591d78c68ab3fe3ffa6c134fd213871c3e27d Mon Sep 17 00:00:00 2001 From: pikastech Date: Mon, 6 Jun 2022 14:20:04 +0800 Subject: [PATCH] construct cjson is test ok --- package/pika_cjson/pika_cjson_cJSON.c | 2 + port/linux/package/pikascript/PikaObj.pyi | 3 ++ .../pika_cjson/pika_cjson_cJSON.c | 2 + port/linux/test/cJSON-test.cpp | 38 +++++++++++++++++++ port/linux/test/pika_config_gtest.h | 2 +- 5 files changed, 46 insertions(+), 1 deletion(-) diff --git a/package/pika_cjson/pika_cjson_cJSON.c b/package/pika_cjson/pika_cjson_cJSON.c index efc0dd737..d40ce14e3 100644 --- a/package/pika_cjson/pika_cjson_cJSON.c +++ b/package/pika_cjson/pika_cjson_cJSON.c @@ -218,6 +218,7 @@ void pika_cjson_cJSON_addItemToArray(PikaObj* self, PikaObj* item) { cJSON* self_item = obj_getPtr(self, "item"); cJSON* item_item = obj_getPtr(item, "item"); cJSON_AddItemToArray(self_item, item_item); + obj_setInt(item, "needfree", 0); } void pika_cjson_cJSON_addItemToObject(PikaObj* self, @@ -226,4 +227,5 @@ void pika_cjson_cJSON_addItemToObject(PikaObj* self, cJSON* self_item = obj_getPtr(self, "item"); cJSON* item_item = obj_getPtr(item, "item"); cJSON_AddItemToObject(self_item, string, item_item); + obj_setInt(item, "needfree", 0); } diff --git a/port/linux/package/pikascript/PikaObj.pyi b/port/linux/package/pikascript/PikaObj.pyi index 3dba31fec..a38de3a12 100644 --- a/port/linux/package/pikascript/PikaObj.pyi +++ b/port/linux/package/pikascript/PikaObj.pyi @@ -9,6 +9,9 @@ class BaseObj(TinyObj): class pointer: pass +class any: + pass + def print(val: any): pass diff --git a/port/linux/package/pikascript/pikascript-lib/pika_cjson/pika_cjson_cJSON.c b/port/linux/package/pikascript/pikascript-lib/pika_cjson/pika_cjson_cJSON.c index efc0dd737..d40ce14e3 100644 --- a/port/linux/package/pikascript/pikascript-lib/pika_cjson/pika_cjson_cJSON.c +++ b/port/linux/package/pikascript/pikascript-lib/pika_cjson/pika_cjson_cJSON.c @@ -218,6 +218,7 @@ void pika_cjson_cJSON_addItemToArray(PikaObj* self, PikaObj* item) { cJSON* self_item = obj_getPtr(self, "item"); cJSON* item_item = obj_getPtr(item, "item"); cJSON_AddItemToArray(self_item, item_item); + obj_setInt(item, "needfree", 0); } void pika_cjson_cJSON_addItemToObject(PikaObj* self, @@ -226,4 +227,5 @@ void pika_cjson_cJSON_addItemToObject(PikaObj* self, cJSON* self_item = obj_getPtr(self, "item"); cJSON* item_item = obj_getPtr(item, "item"); cJSON_AddItemToObject(self_item, string, item_item); + obj_setInt(item, "needfree", 0); } diff --git a/port/linux/test/cJSON-test.cpp b/port/linux/test/cJSON-test.cpp index 8f0692482..e999c58b3 100644 --- a/port/linux/test/cJSON-test.cpp +++ b/port/linux/test/cJSON-test.cpp @@ -204,3 +204,41 @@ TEST(cJSON, item) { obj_deinit(pikaMain); EXPECT_EQ(pikaMemNow(), 0); } + +TEST(cJSON, construct) { + /* init */ + pikaMemInfo.heapUsedMax = 0; + PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain); + /* run */ + __platform_printf("BEGIN\r\n"); + obj_run(pikaMain, + "import pika_cjson as cjson\n" + "root = cjson.Object()\n" + "root.addItemToObject('name', cjson.String('mculover666'))\n" + "root.addItemToObject('age', cjson.Number(22))\n" + "root.addItemToObject('weight', cjson.Number(55.5))\n" + "address = cjson.Object()\n" + "address.addItemToObject('country', cjson.String('China'))\n" + "address.addItemToObject('zip-code', cjson.String('111111'))\n" + "root.addItemToObject('address', address)\n" + "skill = cjson.Array()\n" + "skill.addItemToArray(cjson.String('c'))\n" + "skill.addItemToArray(cjson.String('Java'))\n" + "skill.addItemToArray(cjson.String('Python'))\n" + "root.addItemToObject('skill', skill)\n" + "root.addItemToObject('student', cjson.False_())\n" + "root.print()\n"); + /* collect */ + /* assert */ + EXPECT_STREQ( + log_buff[0], + "{\n\t\"name\":\t\"mculover666\",\n\t\"age\":\t22,\n\t\"weight\":\t55." + "5,\n\t\"address\":\t{\n\t\t\"country\":\t\"China\",\n\t\t\"zip-code\":" + "\t\"111111\"\n\t},\n\t\"skill\":\t[\"c\", \"Java\", " + "\"Python\"],\n\t\"student\":\tfalse\n}\r\n"); + EXPECT_STREQ(log_buff[1], "BEGIN\r\n"); + /* deinit */ + obj_deinit(pikaMain); + + EXPECT_EQ(pikaMemNow(), 0); +} diff --git a/port/linux/test/pika_config_gtest.h b/port/linux/test/pika_config_gtest.h index bd28cf6dd..7daa910ff 100644 --- a/port/linux/test/pika_config_gtest.h +++ b/port/linux/test/pika_config_gtest.h @@ -1,5 +1,5 @@ #define LOG_BUFF_MAX 100 -#define LOG_SIZE 128 +#define LOG_SIZE 512 void mem_pool_init(void); void mem_pool_deinit(void); \ No newline at end of file