Moar JSON/prefs tests including new array tests

This commit is contained in:
Aaron Culliney 2016-03-28 23:06:31 -07:00
parent b065da9f4b
commit a03c074a52

View File

@ -90,23 +90,29 @@ TEST test_json_map_0(JSON_ref parsedData) {
long lVal;
float fVal;
char *val;
bool ok = false;
json_mapParseLongValue(parsedData, "intKey2", &lVal, 10);
ok = json_mapParseLongValue(parsedData, "intKey2", &lVal, 10);
ASSERT(ok);
ASSERT(lVal == 0);
json_mapCopyStringValue(parsedData, "key0", &val);
ok = json_mapCopyStringValue(parsedData, "key0", &val);
ASSERT(ok);
ASSERT(strcmp(val, "a value zero") == 0);
FREE(val);
json_mapCopyStringValue(parsedData, "key1", &val);
ok = json_mapCopyStringValue(parsedData, "key1", &val);
ASSERT(ok);
ASSERT(strcmp(val, " \t ") == 0);
FREE(val);
json_mapCopyStringValue(parsedData, "key2", &val);
ok = json_mapCopyStringValue(parsedData, "key2", &val);
ASSERT(ok);
ASSERT(strcmp(val, "{ \t \n}") == 0);
FREE(val);
json_mapCopyStringValue(parsedData, "key3", &val);
ok = json_mapCopyStringValue(parsedData, "key3", &val);
ASSERT(ok);
ASSERT(strcmp(val, "{ \t \n \"subkey0\" : \"subval0\", \"subkey1\" : { \"moar\" : \"recursion\" } , \"subkey2\" : \"line0 \n \tline1 \tline2\" \n}") == 0);
do {
JSON_ref parsedSubData = NULL;
@ -114,15 +120,18 @@ TEST test_json_map_0(JSON_ref parsedData) {
ASSERT(tokSubCount > 0);
char *subval;
json_mapCopyStringValue(parsedSubData, "subkey0", &subval);
ok = json_mapCopyStringValue(parsedSubData, "subkey0", &subval);
ASSERT(ok);
ASSERT(strcmp(subval, "subval0") == 0);
FREE(subval);
json_mapCopyStringValue(parsedSubData, "subkey1", &subval);
ok = json_mapCopyStringValue(parsedSubData, "subkey1", &subval);
ASSERT(ok);
ASSERT(strcmp(subval, "{ \"moar\" : \"recursion\" }") == 0);
FREE(subval);
json_mapCopyStringValue(parsedSubData, "subkey2", &subval);
ok = json_mapCopyStringValue(parsedSubData, "subkey2", &subval);
ASSERT(ok);
ASSERT(strcmp(subval, "line0 \n \tline1 \tline2") == 0);
FREE(subval);
@ -130,40 +139,110 @@ TEST test_json_map_0(JSON_ref parsedData) {
} while (0);
FREE(val);
json_mapCopyStringValue(parsedData, "key4", &val);
ok = json_mapCopyStringValue(parsedData, "key4", &val);
ASSERT(ok);
ASSERT(strcmp(val, "[ \"Q\", \"W\", \"E\", \"R\", \"T\", \"Y\", \"U\", \"I\", \"O\", \"P\", { \"x\" : [ 22, 4, \"ab\" ] } ]") == 0);
// TODO : subarray checks
FREE(val);
json_mapCopyStringValue(parsedData, "key5", &val);
JSON_ref array = NULL;
int errCount = json_mapCopyJSON(parsedData, "key4", &array);
ASSERT(errCount > 0);
ASSERT(array);
ASSERT(!json_isMap(array));
ASSERT(json_isArray(array));
ASSERT(json_isMap(parsedData));
ASSERT(!json_isArray(parsedData));
ok = json_arrayCount(array, &lVal);
ASSERT(lVal == 11);
ok = json_arrayCopyStringValueAtIndex(array, 3, &val);
ASSERT(ok);
ASSERT(strcmp(val, "R") == 0);
FREE(val);
do {
JSON_ref submap = NULL;
errCount = json_arrayCopyJSONAtIndex(array, 42, &submap);
ASSERT(errCount < 0);
ASSERT(!submap);
errCount = json_arrayCopyJSONAtIndex(array, -1, &submap);
ASSERT(errCount < 0);
ASSERT(!submap);
errCount = json_arrayCopyJSONAtIndex(array, 10, &submap);
ASSERT(errCount > 0);
ASSERT(submap);
ASSERT(json_isMap(submap));
do {
JSON_ref subary = NULL;
errCount = json_mapCopyJSON(submap, "x", &subary);
ASSERT(errCount > 1);
ASSERT(subary);
ASSERT(json_isArray(subary));
ok = json_arrayCount(subary, &lVal);
ASSERT(ok);
ASSERT(lVal == 3);
ok = json_arrayParseLongValueAtIndex(subary, 0, &lVal, /*base:*/10);
ASSERT(ok);
ASSERT(lVal == 22);
ok = json_arrayParseFloatValueAtIndex(subary, 1, &fVal);
ASSERT(ok);
ASSERT(fVal == 4.f);
json_destroy(&subary);
} while (0);
json_destroy(&submap);
} while (0);
json_destroy(&array);
ok = json_mapCopyStringValue(parsedData, "key5", &val);
ASSERT(ok);
ASSERT(strcmp(val, "") == 0);
FREE(val);
json_mapParseLongValue(parsedData, "intKey0", &lVal, 10);
ok = json_mapParseLongValue(parsedData, "intKey0", &lVal, 10);
ASSERT(ok);
ASSERT(lVal == 42);
json_mapParseLongValue(parsedData, "intKey1", &lVal, 10);
ok = json_mapParseLongValue(parsedData, "intKey1", &lVal, 10);
ASSERT(ok);
ASSERT(lVal == -101);
json_mapParseLongValue(parsedData, "intKey3", &lVal, 16);
ok = json_mapParseLongValue(parsedData, "intKey3", &lVal, 16);
ASSERT(ok);
ASSERT(lVal == 0x2400);
json_mapParseLongValue(parsedData, "intKey4", &lVal, 2);
ok = json_mapParseLongValue(parsedData, "intKey4", &lVal, 2);
ASSERT(ok);
ASSERT(lVal == 191);
json_mapParseLongValue(parsedData, "intKey4", &lVal, 10);
ok = json_mapParseLongValue(parsedData, "intKey4", &lVal, 10);
ASSERT(ok);
ASSERT(lVal == 10111111);
json_mapParseFloatValue(parsedData, "floatKey0", &fVal);
ok = json_mapParseFloatValue(parsedData, "floatKey0", &fVal);
ASSERT(ok);
ASSERT(fVal == 0.f);
json_mapParseFloatValue(parsedData, "floatKey1", &fVal);
ok = json_mapParseFloatValue(parsedData, "floatKey1", &fVal);
ASSERT(ok);
ASSERT(fVal == -.0001220703125);
json_mapParseFloatValue(parsedData, "floatKey2", &fVal);
ok = json_mapParseFloatValue(parsedData, "floatKey2", &fVal);
ASSERT(ok);
ASSERT((long)(fVal*10000000) == 31415928);
json_mapParseFloatValue(parsedData, "floatKey3", &fVal);
ok = json_mapParseFloatValue(parsedData, "floatKey3", &fVal);
ASSERT(ok);
ASSERT((long)fVal == -310);
PASS();
@ -212,68 +291,101 @@ TEST test_json_serialization() {
TEST test_json_serialization_pretty() {
bool ok = false;
const char *testMapStr0 = get_sample_json_0();
JSON_ref parsedData = NULL;
int tokCount = json_createFromString(testMapStr0, &parsedData);
ASSERT(tokCount > 0);
ASSERT(parsedData);
char *str = STRDUP("/tmp/json-pretty-XXXXXX");
int fd = mkstemp(str);
ASSERT(fd > 0);
FREE(str);
json_serialize(parsedData, fd, /*pretty:*/true);
ok = json_serialize(parsedData, fd, /*pretty:*/true);
ASSERT(ok);
json_destroy(&parsedData);
ASSERT(!parsedData);
lseek(fd, 0, SEEK_SET);
tokCount = json_createFromFD(fd, &parsedData);
ASSERT(tokCount > 0);
ASSERT(parsedData);
close(fd);
do {
long lVal;
float fVal;
char *val;
long lVal = 42;
float fVal = -1.f;
char *val = (char *)0xdeadc0de;
json_mapParseLongValue(parsedData, "intKey2", &lVal, 10);
ok = json_mapParseLongValue(parsedData, "nonexistentKey0", &lVal, 10);
ASSERT(!ok);
ASSERT(lVal == 42);
ok = json_mapParseFloatValue(parsedData, "nonexistentKey1", &fVal);
ASSERT(!ok);
ASSERT(fVal == -1.f);
ok = json_mapCopyStringValue(parsedData, "nonexistentKey2", &val);
ASSERT(!ok);
ASSERT(val == (char *)0xdeadc0de);
ok = json_mapParseLongValue(parsedData, "intKey2", &lVal, 10);
ASSERT(ok);
ASSERT(lVal == 0);
json_mapCopyStringValue(parsedData, "key0", &val);
ok = json_mapCopyStringValue(parsedData, "key0", &val);
ASSERT(ok);
ASSERT(strcmp(val, "a value zero") == 0);
FREE(val);
json_mapCopyStringValue(parsedData, "key1", &val);
ok = json_mapCopyStringValue(parsedData, "key1", &val);
ASSERT(ok);
ASSERT(strcmp(val, " \t ") == 0);
FREE(val);
json_mapCopyStringValue(parsedData, "key2", &val);
ok = json_mapCopyStringValue(parsedData, "key2", &val);
ASSERT(ok);
do {
JSON_ref parsedSubData = NULL;
int tokSubCount = json_createFromString(val, &parsedSubData);
ASSERT(tokSubCount == 1);
ASSERT(parsedSubData);
ASSERT(((JSON_s *)parsedSubData)->jsonTokens[0].type == JSMN_OBJECT);
ASSERT(json_isMap(parsedSubData));
json_destroy(&parsedSubData);
} while (0);
FREE(val);
json_mapCopyStringValue(parsedData, "key3", &val);
ok = json_mapCopyStringValue(parsedData, "key3", &val);
ASSERT(ok);
do {
JSON_ref parsedSubData = NULL;
int tokSubCount = json_createFromString(val, &parsedSubData);
ASSERT(tokSubCount == 9);
ASSERT(parsedSubData);
char *subval;
json_mapCopyStringValue(parsedSubData, "subkey0", &subval);
char *subval = NULL;
ok = json_mapCopyStringValue(parsedSubData, "subkey0", &subval);
ASSERT(ok);
ASSERT(strcmp(subval, "subval0") == 0);
FREE(subval);
json_mapCopyStringValue(parsedSubData, "subkey1", &subval);
ok = json_mapCopyStringValue(parsedSubData, "subkey1", &subval);
ASSERT(ok);
do {
JSON_ref parsedSubSubData = NULL;
int tokSubSubCount = json_createFromString(subval, &parsedSubSubData);
ASSERT(tokSubSubCount == 3);
ASSERT(parsedSubSubData);
char *subsubval;
json_mapCopyStringValue(parsedSubSubData, "moar", &subsubval);
ok = json_mapCopyStringValue(parsedSubSubData, "moar", &subsubval);
ASSERT(ok);
ASSERT(strcmp(subsubval, "recursion") == 0);
FREE(subsubval);
@ -281,7 +393,8 @@ TEST test_json_serialization_pretty() {
} while (0);
FREE(subval);
json_mapCopyStringValue(parsedSubData, "subkey2", &subval);
ok = json_mapCopyStringValue(parsedSubData, "subkey2", &subval);
ASSERT(ok);
ASSERT(strcmp(subval, "line0 \n \tline1 \tline2") == 0);
FREE(subval);
@ -289,45 +402,59 @@ TEST test_json_serialization_pretty() {
} while (0);
FREE(val);
json_mapCopyStringValue(parsedData, "key4", &val);
ok = json_mapCopyStringValue(parsedData, "key4", &val);
ASSERT(ok);
do {
JSON_ref parsedSubData = NULL;
int tokSubCount = json_createFromString(val, &parsedSubData);
ASSERT(tokSubCount == 17);
// TODO : subarray checks
ASSERT(parsedSubData);
ASSERT(json_isArray(parsedSubData));
ok = json_arrayCount(parsedSubData, &lVal);
ASSERT(ok);
ASSERT(lVal == 11);
json_destroy(&parsedSubData);
} while (0);
FREE(val);
json_mapCopyStringValue(parsedData, "key5", &val);
ok = json_mapCopyStringValue(parsedData, "key5", &val);
ASSERT(strcmp(val, "") == 0);
FREE(val);
json_mapParseLongValue(parsedData, "intKey0", &lVal, 10);
ok = json_mapParseLongValue(parsedData, "intKey0", &lVal, 10);
ASSERT(ok);
ASSERT(lVal == 42);
json_mapParseLongValue(parsedData, "intKey1", &lVal, 10);
ok = json_mapParseLongValue(parsedData, "intKey1", &lVal, 10);
ASSERT(ok);
ASSERT(lVal == -101);
json_mapParseLongValue(parsedData, "intKey3", &lVal, 16);
ok = json_mapParseLongValue(parsedData, "intKey3", &lVal, 16);
ASSERT(ok);
ASSERT(lVal == 0x2400);
json_mapParseLongValue(parsedData, "intKey4", &lVal, 2);
ok = json_mapParseLongValue(parsedData, "intKey4", &lVal, 2);
ASSERT(ok);
ASSERT(lVal == 191);
json_mapParseLongValue(parsedData, "intKey4", &lVal, 10);
ok = json_mapParseLongValue(parsedData, "intKey4", &lVal, 10);
ASSERT(ok);
ASSERT(lVal == 10111111);
json_mapParseFloatValue(parsedData, "floatKey0", &fVal);
ok = json_mapParseFloatValue(parsedData, "floatKey0", &fVal);
ASSERT(ok);
ASSERT(fVal == 0.f);
json_mapParseFloatValue(parsedData, "floatKey1", &fVal);
ok = json_mapParseFloatValue(parsedData, "floatKey1", &fVal);
ASSERT(ok);
ASSERT(fVal == -.0001220703125);
json_mapParseFloatValue(parsedData, "floatKey2", &fVal);
ok = json_mapParseFloatValue(parsedData, "floatKey2", &fVal);
ASSERT(ok);
ASSERT((long)(fVal*10000000) == 31415928);
json_mapParseFloatValue(parsedData, "floatKey3", &fVal);
ok = json_mapParseFloatValue(parsedData, "floatKey3", &fVal);
ASSERT(ok);
ASSERT((long)fVal == -310);
} while (0);
@ -337,6 +464,240 @@ TEST test_json_serialization_pretty() {
PASS();
}
TEST test_json_resilient_api() {
JSON_ref map = NULL;
JSON_ref array = NULL;
bool ok = true;
bool bVal = false;
long lVal = 0;
float fVal = 0.f;
char *val = NULL;
JSON_ref jsonRef = NULL;
int errCount = json_createFromString("{ \"aKey\" : \"42\", \"aKey2\" : true }", &map);
ASSERT(errCount == 5);
ASSERT(map);
ASSERT(json_isMap(map));
errCount = json_createFromString("[ \"item0\", \"item1\" ]", &array);
ASSERT(errCount == 3);
ASSERT(array);
ASSERT(json_isArray(array));
// ...
ASSERT(!json_isMap((JSON_ref)NULL));
ASSERT(!json_isArray((JSON_ref)NULL));
// ...
errCount = json_mapCopyJSON((JSON_ref)NULL, "aKey", &jsonRef);
ASSERT(errCount < 0);
ASSERT(!jsonRef);
errCount = json_mapCopyJSON(map, NULL, &jsonRef);
ASSERT(errCount < 0);
ASSERT(!jsonRef);
errCount = json_mapCopyJSON(map, "aKey", (JSON_ref *)NULL);
ASSERT(errCount < 0);
// ...
ok = json_mapCopyStringValue((JSON_ref)NULL, "aKey", &val);
ASSERT(!ok);
ASSERT(!val);
ok = json_mapCopyStringValue(map, NULL, &val);
ASSERT(!ok);
ASSERT(!val);
ok = json_mapCopyStringValue(map, "aKey", (char **)NULL);
ASSERT(!ok);
// ...
ok = json_mapParseLongValue((JSON_ref)NULL, "aKey", &lVal, /*base:*/10);
ASSERT(!ok);
ASSERT(lVal == 0);
ok = json_mapParseLongValue(map, NULL, &lVal, /*base:*/10);
ASSERT(!ok);
ASSERT(lVal == 0);
ok = json_mapParseLongValue(map, "aKey", (long *)NULL, /*base:*/10);
ASSERT(!ok);
// ...
ok = json_mapParseFloatValue((JSON_ref)NULL, "aKey", &fVal);
ASSERT(!ok);
ASSERT(fVal == 0.f);
ok = json_mapParseFloatValue(map, NULL, &fVal);
ASSERT(!ok);
ASSERT(fVal == 0.f);
ok = json_mapParseFloatValue(map, "aKey", (float *)NULL);
ASSERT(!ok);
// ...
ok = json_mapParseBoolValue((JSON_ref)NULL, "aKey2", &bVal);
ASSERT(!ok);
ASSERT(bVal == 0.f);
ok = json_mapParseBoolValue(map, NULL, &bVal);
ASSERT(!ok);
ASSERT(bVal == 0.f);
ok = json_mapParseBoolValue(map, "aKey2", (bool *)NULL);
ASSERT(!ok);
// ...
ok = json_mapSetStringValue((JSON_ref)NULL, "aKey", "aVal");
ASSERT(!ok);
ok = json_mapSetStringValue(map, NULL, "aVal");
ASSERT(!ok);
ok = json_mapSetStringValue((JSON_ref)map, "aKey", NULL);
ASSERT(!ok);
// ...
ok = json_mapSetRawStringValue((JSON_ref)NULL, "aKey", "\"aVal\"");
ASSERT(!ok);
ok = json_mapSetRawStringValue(map, NULL, "\"aVal\"");
ASSERT(!ok);
ok = json_mapSetRawStringValue((JSON_ref)map, "aKey", NULL);
ASSERT(!ok);
// ...
ok = json_mapSetJSONValue((JSON_ref)NULL, "aKey", array);
ASSERT(!ok);
ok = json_mapSetJSONValue(map, NULL, array);
ASSERT(!ok);
ok = json_mapSetJSONValue((JSON_ref)map, "aKey", NULL);
ASSERT(!ok);
// ...
ok = json_mapSetLongValue((JSON_ref)NULL, "aKey", 22);
ASSERT(!ok);
ok = json_mapSetLongValue(map, NULL, 22);
ASSERT(!ok);
// ...
ok = json_mapSetBoolValue((JSON_ref)NULL, "aKey", true);
ASSERT(!ok);
ok = json_mapSetBoolValue(map, NULL, true);
ASSERT(!ok);
// ...
ok = json_mapSetFloatValue((JSON_ref)NULL, "aKey", -1.25);
ASSERT(!ok);
ok = json_mapSetFloatValue(map, NULL, -1.25);
ASSERT(!ok);
// ...
ok = json_mapParseLongValue(map, "aKey", &lVal, /*base:*/10);
ASSERT(ok);
ASSERT(lVal == 42);
ok = json_mapParseBoolValue(map, "aKey2", &bVal);
ASSERT(ok);
ASSERT(bVal == true);
// ...
errCount = json_arrayCopyJSONAtIndex((JSON_ref)NULL, 0, &jsonRef);
ASSERT(errCount < 0);
ASSERT(!jsonRef);
errCount = json_arrayCopyJSONAtIndex(array, 100, &jsonRef);
ASSERT(errCount < 0);
ASSERT(!jsonRef);
errCount = json_arrayCopyJSONAtIndex(array, 0, (JSON_ref *)NULL);
ASSERT(errCount < 0);
// ...
ok = json_arrayCopyStringValueAtIndex((JSON_ref)NULL, 0, &val);
ASSERT(!ok);
ASSERT(!val);
ok = json_arrayCopyStringValueAtIndex(array, 100, &val);
ASSERT(!ok);
ASSERT(!val);
ok = json_arrayCopyStringValueAtIndex(array, 0, (char **)NULL);
ASSERT(!ok);
// ...
lVal = 0;
ok = json_arrayParseLongValueAtIndex((JSON_ref)NULL, 0, &lVal, /*base:*/10);
ASSERT(!ok);
ASSERT(lVal == 0);
ok = json_arrayParseLongValueAtIndex(array, 100, &lVal, /*base:*/10);
ASSERT(!ok);
ASSERT(lVal == 0);
ok = json_arrayParseLongValueAtIndex(array, 0, (long *)NULL, /*base:*/10);
ASSERT(!ok);
// ...
fVal = 0.0;
ok = json_arrayParseFloatValueAtIndex((JSON_ref)NULL, 0, &fVal);
ASSERT(!ok);
ASSERT(fVal == 0.f);
ok = json_arrayParseFloatValueAtIndex(array, 100, &fVal);
ASSERT(!ok);
ASSERT(fVal == 0.f);
ok = json_arrayParseFloatValueAtIndex(array, 0, (float *)NULL);
ASSERT(!ok);
// ...
bVal = false;
ok = json_arrayParseBoolValueAtIndex((JSON_ref)NULL, 0, &bVal);
ASSERT(!ok);
ASSERT(bVal == 0.f);
ok = json_arrayParseBoolValueAtIndex(array, 100, &bVal);
ASSERT(!ok);
ASSERT(bVal == 0.f);
ok = json_arrayParseBoolValueAtIndex(array, 0, (bool *)NULL);
ASSERT(!ok);
// ...
json_destroy(&array);
json_destroy(&map);
PASS();
}
TEST test_json_raw_bool() {
JSON_ref parsedData = NULL;
@ -1241,8 +1602,8 @@ TEST test_json_map_mutation_1() {
do {
JSON_ref parsedSubData = NULL;
ok = json_mapCopyJSON(parsedData, "key2", &parsedSubData);
ASSERT(ok);
int errCount = json_mapCopyJSON(parsedData, "key2", &parsedSubData);
ASSERT(errCount > 0);
ASSERT(parsedSubData);
ok = json_mapCopyStringValue(parsedSubData, "foo", &val);
@ -1256,8 +1617,8 @@ TEST test_json_map_mutation_1() {
FREE(val);
do {
JSON_ref parsedSubSubData = NULL;
ok = json_mapCopyJSON(parsedSubData, "subKey0", &parsedSubSubData);
ASSERT(ok);
errCount = json_mapCopyJSON(parsedSubData, "subKey0", &parsedSubSubData);
ASSERT(errCount > 0);
ASSERT(parsedSubSubData);
ok = json_mapCopyStringValue(parsedSubSubData, "subFoo", &val);
@ -1292,6 +1653,82 @@ TEST test_json_map_mutation_1() {
PASS();
}
TEST test_json_array() {
long lVal = 0;
float fVal = 0.f;
bool bVal = false;
char *val = NULL;
JSON_ref array = NULL;
int errCount = json_createFromString("[ [ \"bar\" ], \"foo\", -21, 123.125e2, true, { \"aKey\" : \"aVal\" } ]", &array);
ASSERT(errCount == 10);
ASSERT(array);
ASSERT(json_isArray(array));
bool ok = json_arrayCount(array, &lVal);
ASSERT(ok);
ASSERT(lVal == 6);
int index = 0;
do {
JSON_ref subary = NULL;
errCount = json_arrayCopyJSONAtIndex(array, index++, &subary);
ASSERT(errCount == 2);
ASSERT(subary);
ASSERT(json_isArray(subary));
ok = json_arrayCopyStringValueAtIndex(subary, 0, &val);
ASSERT(ok);
ASSERT(strcmp(val, "bar") == 0);
FREE(val);
json_destroy(&subary);
} while (0);
ok = json_arrayCopyStringValueAtIndex(array, index++, &val);
ASSERT(ok);
ASSERT(strcmp(val, "foo") == 0);
FREE(val);
ok = json_arrayParseLongValueAtIndex(array, index++, &lVal, /*base:*/10);
ASSERT(ok);
ASSERT(lVal == -21);
ok = json_arrayParseFloatValueAtIndex(array, index++, &fVal);
ASSERT(ok);
ASSERT(fVal == 12312.5);
ok = json_arrayParseBoolValueAtIndex(array, index++, &bVal);
ASSERT(ok);
ASSERT(bVal == true);
do {
JSON_ref submap = NULL;
errCount = json_arrayCopyJSONAtIndex(array, index++, &submap);
ASSERT(errCount == 3);
ASSERT(submap);
ASSERT(json_isMap(submap));
ok = json_mapCopyStringValue(submap, "aKey", &val);
ASSERT(ok);
ASSERT(val);
ASSERT(strcmp(val, "aVal") == 0);
FREE(val);
json_destroy(&submap);
} while (0);
ok = json_arrayCopyStringValueAtIndex(array, index++, &val);
ASSERT(!ok);
ASSERT(!val);
FREE(val);
json_destroy(&array);
PASS();
}
TEST test_prefs_loadString_1() {
const char *prefsJSON = get_default_preferences();
prefs_loadString(prefsJSON);
@ -1486,6 +1923,8 @@ GREATEST_SUITE(test_suite_prefs) {
RUN_TESTp(test_json_serialization);
RUN_TESTp(test_json_serialization_pretty);
RUN_TESTp(test_json_resilient_api);
RUN_TESTp(test_json_raw_bool);
RUN_TESTp(test_json_invalid_raw_bool);
RUN_TESTp(test_json_raw_null);
@ -1517,6 +1956,7 @@ GREATEST_SUITE(test_suite_prefs) {
RUN_TESTp(test_json_map_invalid_arrayKey);
RUN_TESTp(test_json_map_mutation_1);
RUN_TESTp(test_json_array);
RUN_TESTp(test_prefs_loadString_1);
RUN_TESTp(test_prefs_set_props);