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 <arm...@redhat.com>
---
  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

Reply via email to