From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45176) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b3FmM-0002kR-4C for qemu-devel@nongnu.org; Thu, 19 May 2016 00:41:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1b3FmL-0005AQ-0q for qemu-devel@nongnu.org; Thu, 19 May 2016 00:41:46 -0400 Received: from mx1.redhat.com ([209.132.183.28]:48918) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b3FmK-0005AC-PB for qemu-devel@nongnu.org; Thu, 19 May 2016 00:41:44 -0400 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 58D793750FB for ; Thu, 19 May 2016 04:41:44 +0000 (UTC) From: Eric Blake Date: Wed, 18 May 2016 22:41:09 -0600 Message-Id: <1463632874-28559-24-git-send-email-eblake@redhat.com> In-Reply-To: <1463632874-28559-1-git-send-email-eblake@redhat.com> References: <1463632874-28559-1-git-send-email-eblake@redhat.com> Subject: [Qemu-devel] [PATCH v4 23/28] tests: Test qobject_to_json() pretty formatting List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: armbru@redhat.com, Luiz Capitulino It's risky to refactor qobject_to_json() without at least testing that pretty output remains unchanged :) Note that the new simple_pretty() test is a bit sensitive to our current notion of prettiness, as well as to the hash ordering in QDict (most of the tests in check-qobject-json intentionally do not compare the original string to the round-trip string, because we liberally accept more input forms than the canonical form that we output). Signed-off-by: Eric Blake --- v4: new patch, split from v3 12/18 --- tests/check-qobject-json.c | 66 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/tests/check-qobject-json.c b/tests/check-qobject-json.c index 9814282..267fc67 100644 --- a/tests/check-qobject-json.c +++ b/tests/check-qobject-json.c @@ -1,6 +1,6 @@ /* * Copyright IBM, Corp. 2009 - * Copyright (c) 2013, 2015 Red Hat Inc. + * Copyright (c) 2013-2016 Red Hat Inc. * * Authors: * Anthony Liguori @@ -1383,6 +1383,69 @@ static void simple_whitespace(void) } } +static void simple_pretty(void) +{ + int i; + struct { + const char *encoded; + LiteralQObject decoded; + } test_cases[] = { + { + .encoded = + "[\n" + " 43,\n" + " 42\n" + "]", + .decoded = QLIT_QLIST(((LiteralQObject[]){ + QLIT_QINT(43), + QLIT_QINT(42), + { } + })), + }, + { + .encoded = + "[\n" + " 43,\n" + " {\n" + " \"a\": 32,\n" + " \"h\": \"b\"\n" + " },\n" + " [\n" + " ],\n" + " 42\n" + "]", + .decoded = QLIT_QLIST(((LiteralQObject[]){ + QLIT_QINT(43), + QLIT_QDICT(((LiteralQDictEntry[]){ + { "a", QLIT_QINT(32) }, + { "h", QLIT_QSTR("b") }, + { } })), + QLIT_QLIST(((LiteralQObject[]){ + { } })), + QLIT_QINT(42), + { } + })), + }, + { } + }; + + for (i = 0; test_cases[i].encoded; i++) { + QObject *obj; + QString *str; + + obj = qobject_from_json(test_cases[i].encoded); + g_assert(obj != NULL); + g_assert(qobject_type(obj) == QTYPE_QLIST); + + g_assert(compare_litqobj_to_qobj(&test_cases[i].decoded, obj) == 1); + + str = qobject_to_json(obj, true); + qobject_decref(obj); + g_assert_cmpstr(qstring_get_str(str), ==, test_cases[i].encoded); + QDECREF(str); + } +} + static void simple_varargs(void) { QObject *embedded_obj; @@ -1520,6 +1583,7 @@ int main(int argc, char **argv) g_test_add_func("/lists/simple_list", simple_list); g_test_add_func("/whitespace/simple_whitespace", simple_whitespace); + g_test_add_func("/whitespace/simple_pretty", simple_pretty); g_test_add_func("/varargs/simple_varargs", simple_varargs); -- 2.5.5