diff options
author | Graham Leggett <minfrin@apache.org> | 2018-07-08 15:14:25 +0000 |
---|---|---|
committer | Graham Leggett <minfrin@apache.org> | 2018-07-08 15:14:25 +0000 |
commit | d2e4e91024268494c8346f12a3e5959e44020fe6 (patch) | |
tree | 3ed4f3788f03d3cee7720e0d662b1bcac0f7ed35 /test | |
parent | 624aef9cef65fb242ea2ecde7006a79b5d3106cc (diff) | |
download | apr-d2e4e91024268494c8346f12a3e5959e44020fe6.tar.gz |
Fix the string unescape logic for multiple escaped characters. Add
a unit test.
git-svn-id: https://svn.apache.org/repos/asf/apr/apr/trunk@1835360 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'test')
-rw-r--r-- | test/testjson.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/test/testjson.c b/test/testjson.c index 338149d4f..8ce9b148c 100644 --- a/test/testjson.c +++ b/test/testjson.c @@ -127,6 +127,28 @@ static void test_json_eof(abts_case * tc, void *data) } +static void test_json_string(abts_case * tc, void *data) +{ + apr_json_value_t *json = NULL; + apr_status_t status; + const char *src; + apr_off_t offset = 0; + + /* "턞\"\t/\b\f\n\r\t"; */ + const unsigned char expected[] = {237, 132, 158, 34, 9, 47, 8, 12, 10, 13, 9, 0}; + + src = "\"\\uD834\\uDD1E\\\"\\t\\/\\b\\f\\n\\r\\t\""; + + status = apr_json_decode(&json, src, APR_JSON_VALUE_STRING, &offset, + APR_JSON_FLAGS_WHITESPACE, 10, p); + + ABTS_INT_EQUAL(tc, APR_SUCCESS, status); + ABTS_INT_EQUAL(tc, APR_JSON_STRING, json->type); + + ABTS_ASSERT(tc, "check for string unescape match", + (memcmp(expected, json->value.string.p, json->value.string.len) == 0)); +} + abts_suite *testjson(abts_suite * suite) { suite = ADD_SUITE(suite); @@ -134,6 +156,7 @@ abts_suite *testjson(abts_suite * suite) abts_run_test(suite, test_json_identity, NULL); abts_run_test(suite, test_json_level, NULL); abts_run_test(suite, test_json_eof, NULL); + abts_run_test(suite, test_json_string, NULL); return suite; } |