diff options
Diffstat (limited to 'test/testjson.c')
-rw-r--r-- | test/testjson.c | 68 |
1 files changed, 61 insertions, 7 deletions
diff --git a/test/testjson.c b/test/testjson.c index 0777eb14a..f1c3e9f3c 100644 --- a/test/testjson.c +++ b/test/testjson.c @@ -151,15 +151,15 @@ static void test_json_string(abts_case * tc, void *data) static void test_json_overlay(abts_case * tc, void *data) { - const char *o = "{\"o1\":\"foo\",\"common\":\"bar\",\"o2\":\"baz\"}"; - const char *b = "{\"b1\":\"foo\",\"common\":\"bar\",\"b2\":\"baz\"}"; + const char *o = "{\"o1\":\"foo\",\"common\":\"bar\",\"o2\":\"baz\"}"; + const char *b = "{\"b1\":\"foo\",\"common\":\"bar\",\"b2\":\"baz\"}"; - apr_json_value_t *res; - apr_json_value_t *base; - apr_json_value_t *overlay; + apr_json_value_t *res; + apr_json_value_t *base; + apr_json_value_t *overlay; - apr_off_t offset; - apr_status_t status; + apr_off_t offset; + apr_status_t status; status = apr_json_decode(&base, b, APR_JSON_VALUE_STRING, &offset, APR_JSON_FLAGS_WHITESPACE, 10, p); @@ -178,6 +178,58 @@ static void test_json_overlay(abts_case * tc, void *data) } +static void test_json_object_iterate(abts_case * tc, void *data) +{ + const char *o = "{\"o1\":\"foo\",\"o2\":\"bar\"}"; + + apr_json_value_t *val; + apr_json_kv_t *kv; + + apr_off_t offset; + apr_status_t status; + + status = apr_json_decode(&val, o, APR_JSON_VALUE_STRING, &offset, + APR_JSON_FLAGS_WHITESPACE, 10, p); + ABTS_INT_EQUAL(tc, APR_SUCCESS, status); + + kv = apr_json_object_first(val); + ABTS_PTR_NOTNULL(tc, kv); + + kv = apr_json_object_next(val, kv); + ABTS_PTR_NOTNULL(tc, kv); + + kv = apr_json_object_next(val, kv); + ABTS_ASSERT(tc, "object next should return NULL", + (kv == NULL)); + +} + +static void test_json_array_iterate(abts_case * tc, void *data) +{ + const char *o = "[\"a1\",\"a2\"]"; + + apr_json_value_t *arr; + apr_json_value_t *val; + + apr_off_t offset; + apr_status_t status; + + status = apr_json_decode(&arr, o, APR_JSON_VALUE_STRING, &offset, + APR_JSON_FLAGS_WHITESPACE, 10, p); + ABTS_INT_EQUAL(tc, APR_SUCCESS, status); + + val = apr_json_array_first(arr); + ABTS_PTR_NOTNULL(tc, val); + + val = apr_json_array_next(arr, val); + ABTS_PTR_NOTNULL(tc, val); + + val = apr_json_array_next(arr, val); + ABTS_ASSERT(tc, "array next should return NULL", + (val == NULL)); + +} + abts_suite *testjson(abts_suite * suite) { suite = ADD_SUITE(suite); @@ -187,6 +239,8 @@ abts_suite *testjson(abts_suite * suite) abts_run_test(suite, test_json_eof, NULL); abts_run_test(suite, test_json_string, NULL); abts_run_test(suite, test_json_overlay, NULL); + abts_run_test(suite, test_json_object_iterate, NULL); + abts_run_test(suite, test_json_array_iterate, NULL); return suite; } |