static void test_merge_array(void) { JsonElement *a = JsonArrayCreate(2); JsonArrayAppendString(a, "a"); JsonArrayAppendString(a, "b"); JsonElement *b = JsonArrayCreate(2); JsonArrayAppendString(b, "c"); JsonArrayAppendString(b, "d"); JsonElement *c = JsonMerge(a, b); assert_int_equal(2, JsonLength(a)); assert_int_equal(2, JsonLength(b)); assert_int_equal(4, JsonLength(c)); assert_string_equal("a", JsonArrayGetAsString(c, 0)); assert_string_equal("b", JsonArrayGetAsString(c, 1)); assert_string_equal("c", JsonArrayGetAsString(c, 2)); assert_string_equal("d", JsonArrayGetAsString(c, 3)); JsonDestroy(a); JsonDestroy(b); JsonDestroy(c); }
static void test_parse_array_simple(void **state) { const char *data = ARRAY_SIMPLE; JsonElement *arr = JsonParse(&data); assert_string_equal(JsonArrayGetAsString(arr, 1), "two"); assert_string_equal(JsonArrayGetAsString(arr, 0), "one"); JsonElementDestroy(arr); }
static void test_parse_array_simple(void) { const char *data = ARRAY_SIMPLE; JsonElement *arr = NULL; assert_int_equal(JSON_PARSE_OK, JsonParse(&data, &arr)); assert_string_equal(JsonArrayGetAsString(arr, 1), "two"); assert_string_equal(JsonArrayGetAsString(arr, 0), "one"); JsonDestroy(arr); }
static void test_array_get_string(void) { JsonElement *arr = JsonArrayCreate(10); JsonArrayAppendString(arr, "first"); JsonArrayAppendString(arr, "second"); assert_string_equal(JsonArrayGetAsString(arr, 1), "second"); assert_string_equal(JsonArrayGetAsString(arr, 0), "first"); JsonDestroy(arr); }
static void test_parse_tzz_evil_key(void) { const char *data = "{ \"third key! can? be$ anything&\": [ \"a\", \"b\", \"c\" ]}"; JsonElement *obj = NULL; assert_int_equal(JSON_PARSE_OK, JsonParse(&data, &obj)); assert_string_equal("b", JsonArrayGetAsString(JsonObjectGetAsArray(obj, "third key! can? be$ anything&"), 1)); JsonDestroy(obj); }
static void test_object_get_array(void) { JsonElement *arr = JsonArrayCreate(10); JsonArrayAppendString(arr, "one"); JsonArrayAppendString(arr, "two"); JsonElement *obj = JsonObjectCreate(10); JsonObjectAppendArray(obj, "array", arr); JsonElement *arr2 = JsonObjectGetAsArray(obj, "array"); assert_string_equal(JsonArrayGetAsString(arr2, 1), "two"); JsonDestroy(obj); }
static void test_array_remove_range(void) { { // remove whole JsonElement *arr = JsonArrayCreate(5); JsonArrayAppendString(arr, "one"); JsonArrayAppendString(arr, "two"); JsonArrayAppendString(arr, "three"); JsonArrayRemoveRange(arr, 0, 2); assert_int_equal(JsonLength(arr), 0); JsonDestroy(arr); } { // remove middle JsonElement *arr = JsonArrayCreate(5); JsonArrayAppendString(arr, "one"); JsonArrayAppendString(arr, "two"); JsonArrayAppendString(arr, "three"); JsonArrayRemoveRange(arr, 1, 1); assert_int_equal(JsonLength(arr), 2); assert_string_equal(JsonArrayGetAsString(arr, 0), "one"); assert_string_equal(JsonArrayGetAsString(arr, 1), "three"); JsonDestroy(arr); } { // remove rest JsonElement *arr = JsonArrayCreate(5); JsonArrayAppendString(arr, "one"); JsonArrayAppendString(arr, "two"); JsonArrayAppendString(arr, "three"); JsonArrayRemoveRange(arr, 1, 2); assert_int_equal(JsonLength(arr), 1); assert_string_equal(JsonArrayGetAsString(arr, 0), "one"); JsonDestroy(arr); } { // remove but last JsonElement *arr = JsonArrayCreate(5); JsonArrayAppendString(arr, "one"); JsonArrayAppendString(arr, "two"); JsonArrayAppendString(arr, "three"); JsonArrayRemoveRange(arr, 0, 1); assert_int_equal(JsonLength(arr), 1); assert_string_equal(JsonArrayGetAsString(arr, 0), "three"); JsonDestroy(arr); } }