From nobody Wed Nov 5 10:43:13 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1533730170555401.5188226372745; Wed, 8 Aug 2018 05:09:30 -0700 (PDT) Received: from localhost ([::1]:43147 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fnNHN-0002vY-5O for importer@patchew.org; Wed, 08 Aug 2018 08:09:29 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52411) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fnNBm-0006fh-6X for qemu-devel@nongnu.org; Wed, 08 Aug 2018 08:03:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fnNBi-0008Sj-VP for qemu-devel@nongnu.org; Wed, 08 Aug 2018 08:03:42 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:51746 helo=mx1.redhat.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fnNBi-0008RM-Nh for qemu-devel@nongnu.org; Wed, 08 Aug 2018 08:03:38 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 3975D40241CB; Wed, 8 Aug 2018 12:03:38 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-117-62.ams2.redhat.com [10.36.117.62]) by smtp.corp.redhat.com (Postfix) with ESMTPS id DE86A2166BA8; Wed, 8 Aug 2018 12:03:37 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 44EC911386AB; Wed, 8 Aug 2018 14:03:34 +0200 (CEST) From: Markus Armbruster To: qemu-devel@nongnu.org Date: Wed, 8 Aug 2018 14:02:53 +0200 Message-Id: <20180808120334.10970-16-armbru@redhat.com> In-Reply-To: <20180808120334.10970-1-armbru@redhat.com> References: <20180808120334.10970-1-armbru@redhat.com> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.7]); Wed, 08 Aug 2018 12:03:38 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.7]); Wed, 08 Aug 2018 12:03:38 +0000 (UTC) for IP:'10.11.54.6' DOMAIN:'int-mx06.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'armbru@redhat.com' RCPT:'' X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 66.187.233.73 Subject: [Qemu-devel] [PATCH 15/56] check-qjson: Cover interpolation more thoroughly X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: marcandre.lureau@redhat.com, mdroth@linux.vnet.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RDMRC_1 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Markus Armbruster Reviewed-by: Eric Blake --- tests/check-qjson.c | 141 ++++++++++++++++++++++++-------------------- 1 file changed, 77 insertions(+), 64 deletions(-) diff --git a/tests/check-qjson.c b/tests/check-qjson.c index 33bd5854fc..fda2b014a3 100644 --- a/tests/check-qjson.c +++ b/tests/check-qjson.c @@ -845,30 +845,6 @@ static void utf8_string(void) } } =20 -static void vararg_string(void) -{ - int i; - struct { - const char *decoded; - } test_cases[] =3D { - { "hello world" }, - { "the quick brown fox jumped over the fence" }, - {} - }; - - for (i =3D 0; test_cases[i].decoded; i++) { - QString *str; - - str =3D qobject_to(QString, - qobject_from_jsonf_nofail("%s", - test_cases[i].decoded)); - g_assert(str); - g_assert(strcmp(qstring_get_str(str), test_cases[i].decoded) =3D= =3D 0); - - qobject_unref(str); - } -} - static void simple_number(void) { int i; @@ -986,29 +962,6 @@ static void float_number(void) } } =20 -static void vararg_number(void) -{ - QNum *qnum; - int value =3D 0x2342; - long long value_ll =3D 0x2342342343LL; - double valuef =3D 2.323423423; - int64_t val; - - qnum =3D qobject_to(QNum, qobject_from_jsonf_nofail("%d", value)); - g_assert(qnum_get_try_int(qnum, &val)); - g_assert_cmpint(val, =3D=3D, value); - qobject_unref(qnum); - - qnum =3D qobject_to(QNum, qobject_from_jsonf_nofail("%lld", value_ll)); - g_assert(qnum_get_try_int(qnum, &val)); - g_assert_cmpint(val, =3D=3D, value_ll); - qobject_unref(qnum); - - qnum =3D qobject_to(QNum, qobject_from_jsonf_nofail("%f", valuef)); - g_assert(qnum_get_double(qnum) =3D=3D valuef); - qobject_unref(qnum); -} - static void keyword_literal(void) { QObject *obj; @@ -1038,17 +991,6 @@ static void keyword_literal(void) =20 qobject_unref(qbool); =20 - qbool =3D qobject_to(QBool, qobject_from_jsonf_nofail("%i", false)); - g_assert(qbool); - g_assert(qbool_get_bool(qbool) =3D=3D false); - qobject_unref(qbool); - - /* Test that non-zero values other than 1 get collapsed to true */ - qbool =3D qobject_to(QBool, qobject_from_jsonf_nofail("%i", 2)); - g_assert(qbool); - g_assert(qbool_get_bool(qbool) =3D=3D true); - qobject_unref(qbool); - obj =3D qobject_from_json("null", &error_abort); g_assert(obj !=3D NULL); g_assert(qobject_type(obj) =3D=3D QTYPE_QNULL); @@ -1060,6 +1002,78 @@ static void keyword_literal(void) qobject_unref(null); } =20 +static void interpolation(void) +{ + long long value_lld =3D 0x123456789abcdefLL; + long value_ld =3D (long)value_lld; + int value_d =3D (int)value_lld; + unsigned long long value_llu =3D 0xfedcba9876543210ULL; + unsigned long value_lu =3D (unsigned long)value_llu; + unsigned value_u =3D (unsigned)value_llu; + double value_f =3D 2.323423423; + const char *value_s =3D "hello world"; + QObject *value_p =3D QOBJECT(qnull()); + QBool *qbool; + QNum *qnum; + QString *qstr; + QObject *qobj; + + /* bool */ + + qbool =3D qobject_to(QBool, qobject_from_jsonf_nofail("%i", false)); + g_assert(qbool); + g_assert(qbool_get_bool(qbool) =3D=3D false); + qobject_unref(qbool); + + /* Test that non-zero values other than 1 get collapsed to true */ + qbool =3D qobject_to(QBool, qobject_from_jsonf_nofail("%i", 2)); + g_assert(qbool); + g_assert(qbool_get_bool(qbool) =3D=3D true); + qobject_unref(qbool); + + /* number */ + + qnum =3D qobject_to(QNum, qobject_from_jsonf_nofail("%d", value_d)); + g_assert_cmpint(qnum_get_int(qnum), =3D=3D, value_d); + qobject_unref(qnum); + + qnum =3D qobject_to(QNum, qobject_from_jsonf_nofail("%ld", value_ld)); + g_assert_cmpint(qnum_get_int(qnum), =3D=3D, value_ld); + qobject_unref(qnum); + + qnum =3D qobject_to(QNum, qobject_from_jsonf_nofail("%lld", value_lld)= ); + g_assert_cmpint(qnum_get_int(qnum), =3D=3D, value_lld); + qobject_unref(qnum); + + qnum =3D qobject_to(QNum, qobject_from_jsonf_nofail("%u", value_u)); + g_assert_cmpuint(qnum_get_uint(qnum), =3D=3D, value_u); + qobject_unref(qnum); + + qnum =3D qobject_to(QNum, qobject_from_jsonf_nofail("%lu", value_lu)); + g_assert_cmpuint(qnum_get_uint(qnum), =3D=3D, value_lu); + qobject_unref(qnum); + + qnum =3D qobject_to(QNum, qobject_from_jsonf_nofail("%llu", value_llu)= ); + g_assert_cmpuint(qnum_get_uint(qnum), =3D=3D, value_llu); + qobject_unref(qnum); + + qnum =3D qobject_to(QNum, qobject_from_jsonf_nofail("%f", value_f)); + g_assert(qnum_get_double(qnum) =3D=3D value_f); + qobject_unref(qnum); + + /* string */ + + qstr =3D qobject_to(QString, + qobject_from_jsonf_nofail("%s", value_s)); + g_assert_cmpstr(qstring_get_try_str(qstr), =3D=3D, value_s); + qobject_unref(qstr); + + /* object */ + + qobj =3D qobject_from_jsonf_nofail("%p", value_p); + g_assert(qobj =3D=3D value_p); +} + static void simple_dict(void) { int i; @@ -1278,7 +1292,7 @@ static void simple_whitespace(void) } } =20 -static void simple_varargs(void) +static void simple_interpolation(void) { QObject *embedded_obj; QObject *obj; @@ -1470,22 +1484,21 @@ int main(int argc, char **argv) =20 g_test_add_func("/literals/string/escaped", escaped_string); g_test_add_func("/literals/string/utf8", utf8_string); - g_test_add_func("/literals/string/vararg", vararg_string); =20 g_test_add_func("/literals/number/simple", simple_number); g_test_add_func("/literals/number/large", large_number); g_test_add_func("/literals/number/float", float_number); - g_test_add_func("/literals/number/vararg", vararg_number); =20 g_test_add_func("/literals/keyword", keyword_literal); =20 + g_test_add_func("/literals/interpolation", interpolation); + g_test_add_func("/dicts/simple_dict", simple_dict); g_test_add_func("/dicts/large_dict", large_dict); g_test_add_func("/lists/simple_list", simple_list); =20 - g_test_add_func("/whitespace/simple_whitespace", simple_whitespace); - - g_test_add_func("/varargs/simple_varargs", simple_varargs); + g_test_add_func("/mixed/simple_whitespace", simple_whitespace); + g_test_add_func("/mixed/interpolation", simple_interpolation); =20 g_test_add_func("/errors/empty", empty_input); g_test_add_func("/errors/blank", blank_input); --=20 2.17.1