--- a/test/json.c Tue Jan 06 20:50:10 2026 +0100 +++ b/test/json.c Tue Jan 06 20:59:06 2026 +0100 @@ -466,3 +466,61 @@ free(obj); } } + +CX_TEST(testJsonToListEmpty) { + const char *jsonStr = "[]"; + + CxJsonValue *json; + cxJsonFromString(NULL, jsonStr, &json); + + CX_TEST_DO { + CxList *list = dbuJsonToList(test2_class, NULL, json); + + CX_TEST_ASSERT(list != NULL); + CX_TEST_ASSERT(cxListSize(list) == 0); + } +} + +CX_TEST(testJsonToListNull) { + const char *jsonStr = "[ null, null, null ]"; + + CxJsonValue *json; + cxJsonFromString(NULL, jsonStr, &json); + + CX_TEST_DO { + CxList *list = dbuJsonToList(test2_class, NULL, json); + + CX_TEST_ASSERT(list != NULL); + CX_TEST_ASSERT(cxListSize(list) == 3); + + CX_TEST_ASSERT(cxListAt(list, 0) == NULL); + CX_TEST_ASSERT(cxListAt(list, 1) == NULL); + CX_TEST_ASSERT(cxListAt(list, 2) == NULL); + } +} + +CX_TEST(testJsonToList) { + const char *jsonStr = "[ { \"name\":\"list test\", \"i\": 12 }, { \"name\":\"hello world\", \"i\": 14 } ]"; + + CxJsonValue *json; + cxJsonFromString(NULL, jsonStr, &json); + + CX_TEST_DO { + CxList *list = dbuJsonToList(test2_class, NULL, json); + + CX_TEST_ASSERT(list != NULL); + CX_TEST_ASSERT(cxListSize(list) == 2); + + Test2 *elm0 = cxListAt(list, 0); + Test2 *elm1 = cxListAt(list, 1); + + CX_TEST_ASSERT(elm0 != NULL); + CX_TEST_ASSERT(elm1 != NULL); + + CX_TEST_ASSERT(!cx_strcmp(elm0->name, "list test")); + CX_TEST_ASSERT(elm0->i == 12); + + CX_TEST_ASSERT(!cx_strcmp(elm1->name, "hello world")); + CX_TEST_ASSERT(elm1->i == 14); + } +}