|
From: | Eric Blake |
Subject: | Re: [Qemu-devel] [PATCH 07/56] check-qjson: Cover escaped characters more thoroughly, part 1 |
Date: | Thu, 9 Aug 2018 09:00:12 -0500 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 |
On 08/08/2018 07:02 AM, Markus Armbruster wrote:
escaped_string() first tests double quoted strings, then repeats a few tests with single quotes. Repeat all of them: store the strings to test without quotes, and wrap them in either kind of quote for testing. Signed-off-by: Markus Armbruster <address@hidden> --- tests/check-qjson.c | 94 ++++++++++++++++++++++++++------------------- 1 file changed, 55 insertions(+), 39 deletions(-)
struct { - const char *encoded; - const char *decoded; + /* Content of JSON string to parse with qobject_from_json() */ + const char *json_in; + /* Expected parse output; to unparse with qobject_to_json() */ + const char *utf8_out; int skip;
Instead of int skip (and why is that not a bool?), would it be better to have an optional const char *json_out?
+ for (i = 0; test_cases[i].json_in; i++) { + for (j = 0; j < 2; j++) { + cstr = from_json_str(test_cases[i].json_in, &error_abort, j); + g_assert_cmpstr(qstring_get_try_str(cstr), + ==, test_cases[i].utf8_out); + if (test_cases[i].skip == 0) { + jstr = to_json_str(cstr); + g_assert_cmpstr(jstr, ==, test_cases[i].json_in); + g_free(jstr);
and here, write g_assert_cmpstr(jstr, ==, test_cases[i].json_out ?: test_cases[i].json_in)? After all, the reason we're skipping is because there are some cases of multiple inputs that get canonicalized to constant output, such as " " vs. "\u0020", or "\\'" vs. "'".
-- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org
[Prev in Thread] | Current Thread | [Next in Thread] |