test/json.c

Wed, 25 Mar 2026 20:07:38 +0100

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Wed, 25 Mar 2026 20:07:38 +0100
changeset 53
82adacc27b5b
parent 46
96e139ab57f2
permissions
-rw-r--r--

fix null obj is not translated to a json null literal in dbuObjectToJson2

26
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
1 /*
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
3 *
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
4 * Copyright 2025 Olaf Wintermann. All rights reserved.
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
5 *
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
6 * Redistribution and use in source and binary forms, with or without
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
7 * modification, are permitted provided that the following conditions are met:
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
8 *
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
9 * 1. Redistributions of source code must retain the above copyright
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
10 * notice, this list of conditions and the following disclaimer.
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
11 *
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
12 * 2. Redistributions in binary form must reproduce the above copyright
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
13 * notice, this list of conditions and the following disclaimer in the
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
14 * documentation and/or other materials provided with the distribution.
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
15 *
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
26 * POSSIBLIITY OF SUCH DAMAGE.
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
27 */
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
28
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
29 #include "json.h"
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
30
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
31 #include <stdbool.h>
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
32 #include <cx/buffer.h>
29
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
33 #include <cx/linked_list.h>
26
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
34
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
35 typedef struct Test1 {
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
36 char *str;
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
37 cxmutstr str2;
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
38 int8_t i8;
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
39 uint8_t u8;
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
40 int64_t i64;
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
41 int16_t i16;
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
42 int32_t i32;
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
43 uint32_t u32;
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
44 uint16_t u16;
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
45 uint64_t u64;
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
46 bool bt;
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
47 bool bf;
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
48 double d;
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
49 } Test1;
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
50
28
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
51 typedef struct Test2 {
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
52 char *name;
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
53 int i;
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
54 } Test2;
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
55
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
56 typedef struct Test3 {
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
57 char *test3;
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
58 Test2 *test2;
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
59 } Test3;
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
60
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
61 typedef struct Test4 {
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
62 int id;
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
63 Test3 *test3;
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
64 Test2 *test2;
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
65 } Test4;
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
66
29
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
67 typedef struct Test5 {
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
68 char *test;
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
69 CxList *test2List;
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
70 } Test5;
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
71
26
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
72 static DBUContext *ctx;
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
73 static DBUClass *test1_class;
28
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
74 static DBUClass *test2_class;
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
75 static DBUClass *test3_class;
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
76 static DBUClass *test4_class;
29
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
77 static DBUClass *test5_class;
26
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
78
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
79 int init_json_tests(void) {
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
80 ctx = dbuContextCreate();
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
81
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
82 test1_class = dbuRegisterClassWithoutPK(ctx, "test1", sizeof(Test1));
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
83 dbuClassAdd(test1_class, Test1, str);
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
84 dbuClassAdd(test1_class, Test1, str2);
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
85 dbuClassAdd(test1_class, Test1, i8);
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
86 dbuClassAdd(test1_class, Test1, u8);
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
87 dbuClassAdd(test1_class, Test1, i16);
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
88 dbuClassAdd(test1_class, Test1, u16);
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
89 dbuClassAdd(test1_class, Test1, i32);
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
90 dbuClassAdd(test1_class, Test1, u32);
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
91 dbuClassAdd(test1_class, Test1, i64);
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
92 dbuClassAdd(test1_class, Test1, u64);
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
93 dbuClassAdd(test1_class, Test1, bt);
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
94 dbuClassAdd(test1_class, Test1, bf);
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
95 dbuClassAdd(test1_class, Test1, d);
28
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
96
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
97 test2_class = dbuRegisterClassWithoutPK(ctx, "test2", sizeof(Test2));
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
98 dbuClassAdd(test2_class, Test2, name);
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
99 dbuClassAdd(test2_class, Test2, i);
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
100
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
101 test3_class = dbuRegisterClassWithoutPK(ctx, "test3", sizeof(Test3));
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
102 dbuClassAdd(test3_class, Test3, test3);
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
103 dbuClassAddObj(test3_class, "test2", offsetof(Test3, test2), test2_class);
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
104
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
105 test4_class = dbuRegisterClassWithoutPK(ctx, "test4", sizeof(Test4));
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
106 dbuClassAdd(test4_class, Test4, id);
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
107 dbuClassAddObj(test4_class, "test2", offsetof(Test4, test2), test2_class);
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
108 dbuClassAddObj(test4_class, "test3", offsetof(Test4, test3), test3_class);
29
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
109
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
110 test5_class = dbuRegisterClassWithoutPK(ctx, "test5", sizeof(Test5));
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
111 dbuClassAdd(test5_class, Test5, test);
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
112 dbuClassAddCxLinkedList(test5_class, "test2List", offsetof(Test5, test2List), test2_class);
53
82adacc27b5b fix null obj is not translated to a json null literal in dbuObjectToJson2
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 46
diff changeset
113
82adacc27b5b fix null obj is not translated to a json null literal in dbuObjectToJson2
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 46
diff changeset
114 return 0;
26
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
115 }
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
116
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
117 void cleanup_json_tests(void) {
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
118 dbuContextFree(ctx);
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
119 }
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
120
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
121 CX_TEST(testObjectToJsonSimple) {
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
122 Test1 test;
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
123 test.str = "hello str";
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
124 test.str2 = cx_mutstr("hello cx str");
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
125 test.i8 = 32;
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
126 test.u8 = 250;
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
127 test.i16 = -5533;
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
128 test.u16 = 8000;
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
129 test.i32 = -123456;
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
130 test.u32 = 4000000000;
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
131 test.i64 = -999999999999L;
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
132 test.u64 = 2501;
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
133 test.bt = true;
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
134 test.bf = false;
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
135 test.d = 431.15;
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
136
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
137 CX_TEST_DO {
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
138 CxJsonValue *value = dbuObjectToJson(test1_class, &test, NULL);
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
139
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
140 CX_TEST_ASSERT(value);
28
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
141 CX_TEST_ASSERT(cxJsonIsObject(value));
26
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
142
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
143 CxJsonValue *str = cxJsonObjGet(value, "str");
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
144 CxJsonValue *str2 = cxJsonObjGet(value, "str2");
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
145 CxJsonValue *i8 = cxJsonObjGet(value, "i8");
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
146 CxJsonValue *u8 = cxJsonObjGet(value, "u8");
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
147 CxJsonValue *i16 = cxJsonObjGet(value, "i16");
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
148 CxJsonValue *u16 = cxJsonObjGet(value, "u16");
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
149 CxJsonValue *i32 = cxJsonObjGet(value, "i32");
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
150 CxJsonValue *u32 = cxJsonObjGet(value, "u32");
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
151 CxJsonValue *i64 = cxJsonObjGet(value, "i64");
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
152 CxJsonValue *u64 = cxJsonObjGet(value, "u64");
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
153 CxJsonValue *bt = cxJsonObjGet(value, "bt");
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
154 CxJsonValue *bf = cxJsonObjGet(value, "bf");
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
155 CxJsonValue *d = cxJsonObjGet(value, "d");
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
156
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
157 CX_TEST_ASSERT(str && str->type == CX_JSON_STRING);
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
158 CX_TEST_ASSERT(str2 && str2->type == CX_JSON_STRING);
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
159 CX_TEST_ASSERT(i8 && i8->type == CX_JSON_INTEGER);
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
160 CX_TEST_ASSERT(u8 && u8->type == CX_JSON_INTEGER);
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
161 CX_TEST_ASSERT(i16 && i16->type == CX_JSON_INTEGER);
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
162 CX_TEST_ASSERT(u16 && u16->type == CX_JSON_INTEGER);
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
163 CX_TEST_ASSERT(i32 && i32->type == CX_JSON_INTEGER);
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
164 CX_TEST_ASSERT(u32 && u32->type == CX_JSON_INTEGER);
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
165 CX_TEST_ASSERT(i64 && i64->type == CX_JSON_INTEGER);
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
166 CX_TEST_ASSERT(u64 && u64->type == CX_JSON_INTEGER);
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
167 CX_TEST_ASSERT(d && d->type == CX_JSON_NUMBER);
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
168
30
d33eaaec15da update ucx
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 29
diff changeset
169 CX_TEST_ASSERT(!cx_strcmp(str->string, test.str));
d33eaaec15da update ucx
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 29
diff changeset
170 CX_TEST_ASSERT(!cx_strcmp(str2->string, test.str2));
d33eaaec15da update ucx
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 29
diff changeset
171 CX_TEST_ASSERT(i8->integer == test.i8);
d33eaaec15da update ucx
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 29
diff changeset
172 CX_TEST_ASSERT(u8->integer == test.u8);
d33eaaec15da update ucx
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 29
diff changeset
173 CX_TEST_ASSERT(i16->integer == test.i16);
d33eaaec15da update ucx
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 29
diff changeset
174 CX_TEST_ASSERT(u16->integer == test.u16);
d33eaaec15da update ucx
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 29
diff changeset
175 CX_TEST_ASSERT(i32->integer == test.i32);
d33eaaec15da update ucx
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 29
diff changeset
176 CX_TEST_ASSERT(u32->integer == test.u32);
d33eaaec15da update ucx
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 29
diff changeset
177 CX_TEST_ASSERT(i64->integer == test.i64);
d33eaaec15da update ucx
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 29
diff changeset
178 CX_TEST_ASSERT(u64->integer == test.u64);
d33eaaec15da update ucx
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 29
diff changeset
179 CX_TEST_ASSERT(d->number < test.d + 0.1 && d->number > test.d - 0.1);
28
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
180
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
181 cxJsonValueFree(value);
26
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
182 }
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
183 }
dc36aa437249 implement json primitives serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
184
28
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
185 CX_TEST(testObjectToJsonChildObj) {
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
186 Test2 t2_1;
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
187 t2_1.i = 12;
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
188 t2_1.name = "t2_1";
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
189
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
190 Test2 t2_2;
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
191 t2_2.i = 45;
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
192 t2_2.name = "t2_2";
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
193
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
194 Test3 t3;
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
195 t3.test3 = "t3";
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
196 t3.test2 = &t2_1;
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
197
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
198 Test4 t4;
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
199 t4.id = 15;
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
200 t4.test2 = &t2_2;
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
201 t4.test3 = &t3;
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
202
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
203 CX_TEST_DO {
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
204 CxJsonValue *value = dbuObjectToJson(test4_class, &t4, NULL);
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
205
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
206 CX_TEST_ASSERT(value);
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
207 CX_TEST_ASSERT(cxJsonIsObject(value));
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
208
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
209 CxJsonValue *v = cxJsonObjGet(value, "id");
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
210 CX_TEST_ASSERT(v);
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
211 CX_TEST_ASSERT(cxJsonIsInteger(v));
30
d33eaaec15da update ucx
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 29
diff changeset
212 CX_TEST_ASSERT(v->integer == t4.id);
28
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
213
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
214 v = cxJsonObjGet(value, "test2");
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
215 CX_TEST_ASSERT(v);
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
216 CX_TEST_ASSERT(cxJsonIsObject(v));
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
217
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
218 CxJsonValue *s = cxJsonObjGet(v, "i");
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
219 CX_TEST_ASSERT(s);
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
220 CX_TEST_ASSERT(cxJsonIsInteger(s));
30
d33eaaec15da update ucx
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 29
diff changeset
221 CX_TEST_ASSERT(s->integer == t2_2.i);
28
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
222
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
223 s = cxJsonObjGet(v, "name");
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
224 CX_TEST_ASSERT(s);
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
225 CX_TEST_ASSERT(cxJsonIsString(s));
30
d33eaaec15da update ucx
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 29
diff changeset
226 CX_TEST_ASSERT(!cx_strcmp(s->string, t2_2.name));
28
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
227
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
228 v = cxJsonObjGet(value, "test3");
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
229 CX_TEST_ASSERT(v);
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
230 CX_TEST_ASSERT(cxJsonIsObject(v));
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
231
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
232 s = cxJsonObjGet(v, "test3");
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
233 CX_TEST_ASSERT(s);
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
234 CX_TEST_ASSERT(cxJsonIsString(s));
30
d33eaaec15da update ucx
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 29
diff changeset
235 CX_TEST_ASSERT(!cx_strcmp(s->string, t3.test3));
28
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
236
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
237 s = cxJsonObjGet(v, "test2");
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
238 CX_TEST_ASSERT(s);
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
239 CX_TEST_ASSERT(cxJsonIsObject(s));
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
240
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
241 CxJsonValue *x = cxJsonObjGet(s, "i");
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
242 CX_TEST_ASSERT(x);
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
243 CX_TEST_ASSERT(cxJsonIsInteger(x));
30
d33eaaec15da update ucx
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 29
diff changeset
244 CX_TEST_ASSERT(x->integer == t2_1.i);
28
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
245
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
246 x = cxJsonObjGet(s, "name");
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
247 CX_TEST_ASSERT(x);
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
248 CX_TEST_ASSERT(cxJsonIsString(x));
30
d33eaaec15da update ucx
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 29
diff changeset
249 CX_TEST_ASSERT(!cx_strcmp(x->string, t2_1.name));
28
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
250
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
251 cxJsonValueFree(value);
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
252 }
e46f9f254fcd implement json child object serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 26
diff changeset
253 }
29
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
254
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
255 CX_TEST(testObjectToJsonChildList) {
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
256 Test5 test5;
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
257 test5.test = "hello";
31
287484519844 update ucx
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 30
diff changeset
258 test5.test2List = cxLinkedListCreate(NULL, CX_STORE_POINTERS);
29
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
259
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
260 Test2 c1;
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
261 c1.i = 1;
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
262 c1.name = "c1";
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
263
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
264 Test2 c2;
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
265 c2.i = 2;
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
266 c2.name = "c2";
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
267
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
268 Test2 c3;
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
269 c3.i = 3;
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
270 c3.name = "c3";
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
271
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
272 cxListAdd(test5.test2List, &c1);
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
273 cxListAdd(test5.test2List, &c2);
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
274 cxListAdd(test5.test2List, &c3);
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
275
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
276 CX_TEST_DO {
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
277 CxJsonValue *value = dbuObjectToJson(test5_class, &test5, NULL);
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
278 CX_TEST_ASSERT(value);
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
279 CX_TEST_ASSERT(cxJsonIsObject(value));
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
280
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
281 CxJsonValue *v = cxJsonObjGet(value, "test");
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
282 CX_TEST_ASSERT(v);
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
283 CX_TEST_ASSERT(cxJsonIsString(v));
30
d33eaaec15da update ucx
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 29
diff changeset
284 CX_TEST_ASSERT(!cx_strcmp(v->string, test5.test));
29
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
285
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
286 v = cxJsonObjGet(value, "test2List");
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
287 CX_TEST_ASSERT(v);
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
288 CX_TEST_ASSERT(cxJsonIsArray(v));
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
289
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
290 CxJsonValue *x = cxJsonArrGet(v, 0);
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
291 CX_TEST_ASSERT(cxJsonIsObject(x));
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
292 CxJsonValue *z = cxJsonObjGet(x, "i");
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
293 CX_TEST_ASSERT(cxJsonIsInteger(z));
30
d33eaaec15da update ucx
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 29
diff changeset
294 CX_TEST_ASSERT(z->integer == c1.i);
29
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
295 z = cxJsonObjGet(x, "name");
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
296 CX_TEST_ASSERT(cxJsonIsString(z));
30
d33eaaec15da update ucx
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 29
diff changeset
297 CX_TEST_ASSERT(!cx_strcmp(z->string, c1.name));
29
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
298
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
299 x = cxJsonArrGet(v, 1);
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
300 CX_TEST_ASSERT(cxJsonIsObject(x));
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
301 z = cxJsonObjGet(x, "i");
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
302 CX_TEST_ASSERT(cxJsonIsInteger(z));
30
d33eaaec15da update ucx
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 29
diff changeset
303 CX_TEST_ASSERT(z->integer == c2.i);
29
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
304 z = cxJsonObjGet(x, "name");
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
305 CX_TEST_ASSERT(cxJsonIsString(z));
30
d33eaaec15da update ucx
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 29
diff changeset
306 CX_TEST_ASSERT(!cx_strcmp(z->string, c2.name));
29
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
307
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
308 x = cxJsonArrGet(v, 2);
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
309 CX_TEST_ASSERT(cxJsonIsObject(x));
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
310 z = cxJsonObjGet(x, "i");
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
311 CX_TEST_ASSERT(cxJsonIsInteger(z));
30
d33eaaec15da update ucx
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 29
diff changeset
312 CX_TEST_ASSERT(z->integer == c3.i);
29
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
313 z = cxJsonObjGet(x, "name");
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
314 CX_TEST_ASSERT(cxJsonIsString(z));
30
d33eaaec15da update ucx
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 29
diff changeset
315 CX_TEST_ASSERT(!cx_strcmp(z->string, c3.name));
29
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
316
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
317 cxJsonValueFree(value);
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
318 }
b8c826c720f3 implement list to json serialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 28
diff changeset
319 }
41
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
320
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
321 CX_TEST(testJsonToSimpleObject) {
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
322 const char *jsonStr =
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
323 "{"
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
324 "\"str\":\"hello\","
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
325 "\"str2\":\"world\","
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
326 "\"i8\":-12,"
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
327 "\"u8\":250,"
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
328 "\"i64\":-1234567890123,"
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
329 "\"i16\":-32000,"
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
330 "\"i32\":-2000000000,"
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
331 "\"u32\":4000000000,"
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
332 "\"u16\":65000,"
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
333 "\"u64\":123456789123456789,"
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
334 "\"bt\":true,"
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
335 "\"bf\":false,"
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
336 "\"d\":3.141592653589793"
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
337 "}";
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
338
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
339 CxJsonValue *json;
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
340 cxJsonFromString(NULL, jsonStr, &json);
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
341
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
342 CX_TEST_DO {
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
343 Test1 *obj = dbuJsonToObject(test1_class, NULL, json);
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
344
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
345 CX_TEST_ASSERT(obj);
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
346 CX_TEST_ASSERT(!cx_strcmp(obj->str, "hello"));
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
347 CX_TEST_ASSERT(!cx_strcmp(obj->str2, "world"));
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
348 CX_TEST_ASSERT(obj->i8 == -12);
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
349 CX_TEST_ASSERT(obj->u8 == 250);
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
350 CX_TEST_ASSERT(obj->i64 == -1234567890123);
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
351 CX_TEST_ASSERT(obj->i16 == -32000);
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
352 CX_TEST_ASSERT(obj->i32 == -2000000000);
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
353 CX_TEST_ASSERT(obj->u32 == 4000000000);
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
354 CX_TEST_ASSERT(obj->u16 == 65000);
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
355 CX_TEST_ASSERT(obj->u64 == 123456789123456789);
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
356 CX_TEST_ASSERT(obj->bt);
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
357 CX_TEST_ASSERT(!obj->bf);
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
358 CX_TEST_ASSERT(obj->d < 3.1416 && obj->d > 3.1415);
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
359
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
360 free(obj);
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
361 }
daabc9bb5445 implement primitive json to obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 31
diff changeset
362 }
42
3c989bc611c6 implement json child obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 41
diff changeset
363
3c989bc611c6 implement json child obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 41
diff changeset
364 CX_TEST(testJsonToObjectWithObjChild) {
3c989bc611c6 implement json child obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 41
diff changeset
365 const char *jsonStr =
3c989bc611c6 implement json child obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 41
diff changeset
366 "{"
3c989bc611c6 implement json child obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 41
diff changeset
367 "\"test3\":\"testJsonToObjectWithObjChild\","
3c989bc611c6 implement json child obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 41
diff changeset
368 "\"test2\":{ \"name\":\"Test2 Object\", \"i\":-1234567 }"
3c989bc611c6 implement json child obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 41
diff changeset
369 "}";
3c989bc611c6 implement json child obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 41
diff changeset
370
3c989bc611c6 implement json child obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 41
diff changeset
371 CxJsonValue *json;
3c989bc611c6 implement json child obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 41
diff changeset
372 cxJsonFromString(NULL, jsonStr, &json);
3c989bc611c6 implement json child obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 41
diff changeset
373
3c989bc611c6 implement json child obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 41
diff changeset
374 CX_TEST_DO {
3c989bc611c6 implement json child obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 41
diff changeset
375 Test3 *obj = dbuJsonToObject(test3_class, NULL, json);
3c989bc611c6 implement json child obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 41
diff changeset
376
3c989bc611c6 implement json child obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 41
diff changeset
377 CX_TEST_ASSERT(obj);
3c989bc611c6 implement json child obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 41
diff changeset
378 CX_TEST_ASSERT(!cx_strcmp(obj->test3, "testJsonToObjectWithObjChild"));
3c989bc611c6 implement json child obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 41
diff changeset
379 CX_TEST_ASSERT(obj->test2 != NULL);
3c989bc611c6 implement json child obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 41
diff changeset
380 CX_TEST_ASSERT(!cx_strcmp(obj->test2->name, "Test2 Object"));
3c989bc611c6 implement json child obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 41
diff changeset
381 CX_TEST_ASSERT(obj->test2->i == -1234567);
3c989bc611c6 implement json child obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 41
diff changeset
382
3c989bc611c6 implement json child obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 41
diff changeset
383 free(obj);
3c989bc611c6 implement json child obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 41
diff changeset
384 }
3c989bc611c6 implement json child obj deserialization
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 41
diff changeset
385 }
43
73c1ced3a620 implement deserialization of json objects that contain arrays
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 42
diff changeset
386
73c1ced3a620 implement deserialization of json objects that contain arrays
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 42
diff changeset
387 CX_TEST(testJsonToObjectWithArray) {
73c1ced3a620 implement deserialization of json objects that contain arrays
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 42
diff changeset
388 const char *jsonStr =
73c1ced3a620 implement deserialization of json objects that contain arrays
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 42
diff changeset
389 "{"
73c1ced3a620 implement deserialization of json objects that contain arrays
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 42
diff changeset
390 "\"test\":\"hello world\","
73c1ced3a620 implement deserialization of json objects that contain arrays
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 42
diff changeset
391 "\"test2List\":[ {\"name\":\"elm0\", \"i\":0}, {\"name\":\"elm1\", \"i\":1} ]"
73c1ced3a620 implement deserialization of json objects that contain arrays
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 42
diff changeset
392 "}";
73c1ced3a620 implement deserialization of json objects that contain arrays
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 42
diff changeset
393
73c1ced3a620 implement deserialization of json objects that contain arrays
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 42
diff changeset
394 CxJsonValue *json;
73c1ced3a620 implement deserialization of json objects that contain arrays
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 42
diff changeset
395 cxJsonFromString(NULL, jsonStr, &json);
73c1ced3a620 implement deserialization of json objects that contain arrays
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 42
diff changeset
396
73c1ced3a620 implement deserialization of json objects that contain arrays
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 42
diff changeset
397 CX_TEST_DO {
73c1ced3a620 implement deserialization of json objects that contain arrays
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 42
diff changeset
398 Test5 *obj = dbuJsonToObject(test5_class, NULL, json);
73c1ced3a620 implement deserialization of json objects that contain arrays
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 42
diff changeset
399
73c1ced3a620 implement deserialization of json objects that contain arrays
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 42
diff changeset
400 CX_TEST_ASSERT(obj);
73c1ced3a620 implement deserialization of json objects that contain arrays
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 42
diff changeset
401 CX_TEST_ASSERT(!cx_strcmp(obj->test, "hello world"));
44
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
402 CX_TEST_ASSERT(obj->test2List != NULL);
43
73c1ced3a620 implement deserialization of json objects that contain arrays
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 42
diff changeset
403 CX_TEST_ASSERT(cxListSize(obj->test2List) == 2);
73c1ced3a620 implement deserialization of json objects that contain arrays
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 42
diff changeset
404
73c1ced3a620 implement deserialization of json objects that contain arrays
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 42
diff changeset
405 Test2 *elm0 = cxListAt(obj->test2List, 0);
73c1ced3a620 implement deserialization of json objects that contain arrays
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 42
diff changeset
406 Test2 *elm1 = cxListAt(obj->test2List, 1);
73c1ced3a620 implement deserialization of json objects that contain arrays
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 42
diff changeset
407
73c1ced3a620 implement deserialization of json objects that contain arrays
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 42
diff changeset
408 CX_TEST_ASSERT(elm0);
73c1ced3a620 implement deserialization of json objects that contain arrays
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 42
diff changeset
409 CX_TEST_ASSERT(elm1);
73c1ced3a620 implement deserialization of json objects that contain arrays
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 42
diff changeset
410
73c1ced3a620 implement deserialization of json objects that contain arrays
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 42
diff changeset
411 CX_TEST_ASSERT(!cx_strcmp(elm0->name, "elm0"));
73c1ced3a620 implement deserialization of json objects that contain arrays
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 42
diff changeset
412 CX_TEST_ASSERT(elm0->i == 0);
73c1ced3a620 implement deserialization of json objects that contain arrays
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 42
diff changeset
413
73c1ced3a620 implement deserialization of json objects that contain arrays
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 42
diff changeset
414 CX_TEST_ASSERT(!cx_strcmp(elm1->name, "elm1"));
73c1ced3a620 implement deserialization of json objects that contain arrays
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 42
diff changeset
415 CX_TEST_ASSERT(elm1->i == 1);
73c1ced3a620 implement deserialization of json objects that contain arrays
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 42
diff changeset
416
73c1ced3a620 implement deserialization of json objects that contain arrays
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 42
diff changeset
417 free(obj);
73c1ced3a620 implement deserialization of json objects that contain arrays
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 42
diff changeset
418 }
73c1ced3a620 implement deserialization of json objects that contain arrays
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 42
diff changeset
419 }
44
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
420
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
421 CX_TEST(testJsonToObjectWithEmptyArray) {
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
422 const char *jsonStr =
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
423 "{"
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
424 "\"test\":\"hello world 2\","
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
425 "\"test2List\":[ ]"
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
426 "}";
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
427
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
428 CxJsonValue *json;
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
429 cxJsonFromString(NULL, jsonStr, &json);
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
430
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
431 CX_TEST_DO {
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
432 Test5 *obj = dbuJsonToObject(test5_class, NULL, json);
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
433
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
434 CX_TEST_ASSERT(obj);
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
435 CX_TEST_ASSERT(!cx_strcmp(obj->test, "hello world 2"));
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
436 CX_TEST_ASSERT(obj->test2List == NULL || cxListSize(obj->test2List) == 0);
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
437
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
438 free(obj);
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
439 }
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
440 }
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
441
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
442 CX_TEST(testJsonToObjectWithNullArray) {
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
443 const char *jsonStr =
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
444 "{"
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
445 "\"test\":\"hello world 3\","
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
446 "\"test2List\":[ null, null, null ]"
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
447 "}";
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
448
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
449 CxJsonValue *json;
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
450 cxJsonFromString(NULL, jsonStr, &json);
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
451
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
452 CX_TEST_DO {
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
453 Test5 *obj = dbuJsonToObject(test5_class, NULL, json);
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
454
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
455 CX_TEST_ASSERT(obj);
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
456 CX_TEST_ASSERT(!cx_strcmp(obj->test, "hello world 3"));
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
457 CX_TEST_ASSERT(obj->test2List != NULL);
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
458 CX_TEST_ASSERT(cxListSize(obj->test2List) == 3);
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
459
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
460 Test2 *elm0 = cxListAt(obj->test2List, 0);
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
461 Test2 *elm1 = cxListAt(obj->test2List, 1);
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
462 Test2 *elm2 = cxListAt(obj->test2List, 2);
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
463
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
464 CX_TEST_ASSERT(elm0 == NULL);
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
465 CX_TEST_ASSERT(elm1 == NULL);
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
466 CX_TEST_ASSERT(elm2 == NULL);
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
467
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
468 free(obj);
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
469 }
3bac2715ccb9 add more json deserialization tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 43
diff changeset
470 }
46
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
471
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
472 CX_TEST(testJsonToListEmpty) {
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
473 const char *jsonStr = "[]";
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
474
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
475 CxJsonValue *json;
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
476 cxJsonFromString(NULL, jsonStr, &json);
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
477
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
478 CX_TEST_DO {
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
479 CxList *list = dbuJsonToList(test2_class, NULL, json);
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
480
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
481 CX_TEST_ASSERT(list != NULL);
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
482 CX_TEST_ASSERT(cxListSize(list) == 0);
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
483 }
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
484 }
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
485
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
486 CX_TEST(testJsonToListNull) {
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
487 const char *jsonStr = "[ null, null, null ]";
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
488
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
489 CxJsonValue *json;
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
490 cxJsonFromString(NULL, jsonStr, &json);
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
491
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
492 CX_TEST_DO {
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
493 CxList *list = dbuJsonToList(test2_class, NULL, json);
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
494
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
495 CX_TEST_ASSERT(list != NULL);
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
496 CX_TEST_ASSERT(cxListSize(list) == 3);
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
497
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
498 CX_TEST_ASSERT(cxListAt(list, 0) == NULL);
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
499 CX_TEST_ASSERT(cxListAt(list, 1) == NULL);
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
500 CX_TEST_ASSERT(cxListAt(list, 2) == NULL);
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
501 }
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
502 }
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
503
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
504 CX_TEST(testJsonToList) {
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
505 const char *jsonStr = "[ { \"name\":\"list test\", \"i\": 12 }, { \"name\":\"hello world\", \"i\": 14 } ]";
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
506
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
507 CxJsonValue *json;
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
508 cxJsonFromString(NULL, jsonStr, &json);
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
509
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
510 CX_TEST_DO {
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
511 CxList *list = dbuJsonToList(test2_class, NULL, json);
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
512
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
513 CX_TEST_ASSERT(list != NULL);
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
514 CX_TEST_ASSERT(cxListSize(list) == 2);
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
515
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
516 Test2 *elm0 = cxListAt(list, 0);
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
517 Test2 *elm1 = cxListAt(list, 1);
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
518
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
519 CX_TEST_ASSERT(elm0 != NULL);
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
520 CX_TEST_ASSERT(elm1 != NULL);
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
521
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
522 CX_TEST_ASSERT(!cx_strcmp(elm0->name, "list test"));
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
523 CX_TEST_ASSERT(elm0->i == 12);
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
524
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
525 CX_TEST_ASSERT(!cx_strcmp(elm1->name, "hello world"));
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
526 CX_TEST_ASSERT(elm1->i == 14);
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
527 }
96e139ab57f2 add dbuJsonToList tests
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 44
diff changeset
528 }

mercurial