test/json.c

changeset 46
96e139ab57f2
parent 44
3bac2715ccb9
--- 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);
+    }
+}

mercurial