tests/test_json.c

changeset 1149
df5665de7344
parent 1139
7dfa5bcf39ee
child 1152
e4af44b488bc
equal deleted inserted replaced
1139:7dfa5bcf39ee 1149:df5665de7344
136 CX_TEST_ASSERT(cxJsonIsString(object)); 136 CX_TEST_ASSERT(cxJsonIsString(object));
137 CX_TEST_ASSERT(0 == cx_strcmp( 137 CX_TEST_ASSERT(0 == cx_strcmp(
138 cxJsonAsCxString(object), 138 cxJsonAsCxString(object),
139 CX_STR("{\n\t\"object\":null\n}")) 139 CX_STR("{\n\t\"object\":null\n}"))
140 ); 140 );
141 cxJsonValueFree(obj);
142 }
143 cxJsonDestroy(&json);
144 }
145
146 CX_TEST(test_json_escaped_unicode_strings) {
147 cxstring text = cx_str(
148 "{\n"
149 "\"ascii\":\"\\u0041\\u0053\\u0043\\u0049\\u0049\",\n"
150 "\"unicode\":\"\\u00df\\u00DF\",\n"
151 "\"mixed\":\"mixed ä ö \\u00e4 \\u00f6\",\n"
152 "\"wide\":\"\\u03a3\\u29b0\""
153 "}"
154 );
155
156 CxJson json;
157 cxJsonInit(&json, NULL);
158 CX_TEST_DO {
159 cxJsonFill(&json, text);
160 CxJsonValue *obj;
161 CxJsonStatus result = cxJsonNext(&json, &obj);
162 CX_TEST_ASSERT(result == CX_JSON_NO_ERROR);
163 CX_TEST_ASSERT(cxJsonIsObject(obj));
164
165 CxJsonValue *ascii = cxJsonObjGet(obj, "ascii");
166 CX_TEST_ASSERT(cxJsonIsString(ascii));
167 CX_TEST_ASSERT(0 == cx_strcmp(
168 cxJsonAsCxString(ascii),
169 CX_STR("ASCII"))
170 );
171
172 CxJsonValue *unicode = cxJsonObjGet(obj, "unicode");
173 CX_TEST_ASSERT(cxJsonIsString(unicode));
174 CX_TEST_ASSERT(0 == cx_strcmp(
175 cxJsonAsCxString(unicode),
176 CX_STR("ßß"))
177 );
178
179 CxJsonValue *mixed = cxJsonObjGet(obj, "mixed");
180 CX_TEST_ASSERT(cxJsonIsString(mixed));
181 CX_TEST_ASSERT(0 == cx_strcmp(
182 cxJsonAsCxString(mixed),
183 CX_STR("mixed ä ö ä ö"))
184 );
185
186 CxJsonValue *wide = cxJsonObjGet(obj, "wide");
187 CX_TEST_ASSERT(cxJsonIsString(wide));
188 CX_TEST_ASSERT(0 == cx_strcmp(
189 cxJsonAsCxString(wide),
190 CX_STR("\u03a3\u29b0"))
191 );
192
141 cxJsonValueFree(obj); 193 cxJsonValueFree(obj);
142 } 194 }
143 cxJsonDestroy(&json); 195 cxJsonDestroy(&json);
144 } 196 }
145 197
1040 CxTestSuite *suite = cx_test_suite_new("json"); 1092 CxTestSuite *suite = cx_test_suite_new("json");
1041 1093
1042 cx_test_register(suite, test_json_init_default); 1094 cx_test_register(suite, test_json_init_default);
1043 cx_test_register(suite, test_json_simple_object); 1095 cx_test_register(suite, test_json_simple_object);
1044 cx_test_register(suite, test_json_escaped_strings); 1096 cx_test_register(suite, test_json_escaped_strings);
1097 cx_test_register(suite, test_json_escaped_unicode_strings);
1045 cx_test_register(suite, test_json_escaped_end_of_string); 1098 cx_test_register(suite, test_json_escaped_end_of_string);
1046 cx_test_register(suite, test_json_object_incomplete_token); 1099 cx_test_register(suite, test_json_object_incomplete_token);
1047 cx_test_register(suite, test_json_token_wrongly_completed); 1100 cx_test_register(suite, test_json_token_wrongly_completed);
1048 cx_test_register(suite, test_json_object_error); 1101 cx_test_register(suite, test_json_object_error);
1049 cx_test_register(suite, test_json_subsequent_fill); 1102 cx_test_register(suite, test_json_subsequent_fill);

mercurial