From nobody Fri May 17 11:28:36 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1607622729; cv=none; d=zohomail.com; s=zohoarc; b=JIkMi0R/sTiiTF0ojQD9TJ+0UMcViwBN+KNdjkg4YbXANKviZMyD12YAc9fkWApIul24BvqA4fDBdBDV9nlKXU+zk1jvDg+guOhtEuGVMJdIkaRZKSeBHA68AD5bPcUoOJ43tGwFzfKsM1fo7rzZMAdAsUEWuP21LwSYMttdEWc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1607622729; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=4KGWYscJgwuIhBkXTcDJqfmAdI0WMdPYisvHONjsAG8=; b=PKzQvuucshSidTIiWP/84w8OWGSjfml3BfebuqH0NYHhcDbZFwpa+gucpLlzN0+A7Mlv89v00Rp6p6mehgHen02FDgPxTeBc2kMHj2jNIrtjD3phz3BGiR+Z/WuHaLPF4KAlwUdxfr9uU3tIbK5flvMwu3u6iLO5mxyX8qJvcKQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1607622729614229.9843014810872; Thu, 10 Dec 2020 09:52:09 -0800 (PST) Received: from localhost ([::1]:53110 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1knOlA-0003NZ-1M for importer@patchew.org; Thu, 10 Dec 2020 11:25:40 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:34536) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1knObE-000535-VY for qemu-devel@nongnu.org; Thu, 10 Dec 2020 11:15:25 -0500 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:46167) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1knOar-00015v-1d for qemu-devel@nongnu.org; Thu, 10 Dec 2020 11:15:24 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-583-8QKf4rFJPXCKcy2Qg8MyAg-1; Thu, 10 Dec 2020 11:14:55 -0500 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 3789E100C674; Thu, 10 Dec 2020 16:14:54 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-112-103.ams2.redhat.com [10.36.112.103]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 06FF85D9CC; Thu, 10 Dec 2020 16:14:54 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 74B5D1132B52; Thu, 10 Dec 2020 17:14:52 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1607616899; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=4KGWYscJgwuIhBkXTcDJqfmAdI0WMdPYisvHONjsAG8=; b=AGjJct7cR/Vqyfua2iVDikUi68faOMaAU0C4rSQYKtw98GX5BZxpNIR6BWfkyofaU27MAQ gFJAGbHdA8/nEiMvnNSV8SiFKnXRGMWuh5OSv/uYrUr2GVe9gc3ALdUmXnIGY+PepwqMyT JSabjMpl7CpB+/8fhJxbDwec0MRwk/s= X-MC-Unique: 8QKf4rFJPXCKcy2Qg8MyAg-1 From: Markus Armbruster To: qemu-devel@nongnu.org Subject: [PATCH 01/10] tests/check-qjson: Don't skip funny QNumber to JSON conversions Date: Thu, 10 Dec 2020 17:14:43 +0100 Message-Id: <20201210161452.2813491-2-armbru@redhat.com> In-Reply-To: <20201210161452.2813491-1-armbru@redhat.com> References: <20201210161452.2813491-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=armbru@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mdroth@linux.vnet.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" simple_number() and float_number() convert from JSON to QNumber and back. simple_number() tests "-0", but skips the conversion back to JSON, because it yields "0", not "-0". Works as intended, so better cover it: don't skip, but expect the funny result. float_number() tests "-32.20e-10", but skips the conversion back to JSON, because it yields "-0". This is a known bug in qnum_to_string(), marked FIXME there. Cover the bug: don't skip, but expect the funny result. While there, switch from g_assert() to g_assert_cmpstr() & friends for friendlier test failures. Signed-off-by: Markus Armbruster --- tests/check-qjson.c | 55 +++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 30 deletions(-) diff --git a/tests/check-qjson.c b/tests/check-qjson.c index 9a02079099..2a5852904a 100644 --- a/tests/check-qjson.c +++ b/tests/check-qjson.c @@ -793,37 +793,35 @@ static void utf8_string(void) =20 static void simple_number(void) { - int i; struct { const char *encoded; int64_t decoded; - int skip; + const char *reencoded; } test_cases[] =3D { { "0", 0 }, { "1234", 1234 }, { "1", 1 }, { "-32", -32 }, - { "-0", 0, .skip =3D 1 }, - { }, + { "-0", 0, "0" }, + {}, }; + int i; + QNum *qnum; + int64_t val; + QString *str; =20 for (i =3D 0; test_cases[i].encoded; i++) { - QNum *qnum; - int64_t val; - qnum =3D qobject_to(QNum, qobject_from_json(test_cases[i].encoded, &error_abort)); g_assert(qnum); g_assert(qnum_get_try_int(qnum, &val)); g_assert_cmpint(val, =3D=3D, test_cases[i].decoded); - if (test_cases[i].skip =3D=3D 0) { - QString *str; =20 - str =3D qobject_to_json(QOBJECT(qnum)); - g_assert(strcmp(qstring_get_str(str), test_cases[i].encoded) = =3D=3D 0); - qobject_unref(str); - } + str =3D qobject_to_json(QOBJECT(qnum)); + g_assert_cmpstr(qstring_get_str(str), =3D=3D, + test_cases[i].reencoded ?: test_cases[i].encoded); + qobject_unref(str); =20 qobject_unref(qnum); } @@ -874,35 +872,32 @@ static void large_number(void) =20 static void float_number(void) { - int i; struct { const char *encoded; double decoded; - int skip; + const char *reencoded; } test_cases[] =3D { { "32.43", 32.43 }, { "0.222", 0.222 }, { "-32.12313", -32.12313 }, - { "-32.20e-10", -32.20e-10, .skip =3D 1 }, - { }, + { "-32.20e-10", -32.20e-10, "-0" /* BUG */ }, + {}, }; + int i; + QNum *qnum; + QString *str; =20 for (i =3D 0; test_cases[i].encoded; i++) { - QObject *obj; - QNum *qnum; - - obj =3D qobject_from_json(test_cases[i].encoded, &error_abort); - qnum =3D qobject_to(QNum, obj); + qnum =3D qobject_to(QNum, + qobject_from_json(test_cases[i].encoded, + &error_abort)); g_assert(qnum); - g_assert(qnum_get_double(qnum) =3D=3D test_cases[i].decoded); + g_assert_cmpfloat(qnum_get_double(qnum), =3D=3D, test_cases[i].dec= oded); =20 - if (test_cases[i].skip =3D=3D 0) { - QString *str; - - str =3D qobject_to_json(obj); - g_assert(strcmp(qstring_get_str(str), test_cases[i].encoded) = =3D=3D 0); - qobject_unref(str); - } + str =3D qobject_to_json(QOBJECT(qnum)); + g_assert_cmpstr(qstring_get_str(str), =3D=3D, + test_cases[i].reencoded ?: test_cases[i].encoded); + qobject_unref(str); =20 qobject_unref(qnum); } --=20 2.26.2 From nobody Fri May 17 11:28:36 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1607629777; cv=none; d=zohomail.com; s=zohoarc; b=ET2uB3WukYXRb+GP8hjjD+4wYyEuTJZEo2mHRjVW/iHzW0OsrputPEzPtb+rirFG1eRGxQ6DSdSBr1KYFuH4W6xYdC1TvP1efx/Rt6oc1tmlr3pn0cEISMIIMFvPNGgF+F9kU7keDp406OtA2OO6e2bjbzscSvieghBKDaWXQVc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1607629777; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=twabEsAWEQ/S8p60KkjtoEoQ7N9nzISOyrzIWt+zFbQ=; b=mHMLld1rCNKRrSA6a96AqUeg0TxBCeGj9vCqPociiDo5NJYdOgZATsC5DSBWBg/ibKg4xWz6n9vmYDEo9WtQu5ZywpzzgFKj1Glue4dZXuTapnEWfEYu8cLUy3oz5l/vY0i7RpzQqbF/2xUVVv8+gil0kybm0fRApjFR9oT+9GE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1607629777002513.8698387778456; Thu, 10 Dec 2020 11:49:37 -0800 (PST) Received: from localhost ([::1]:53198 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1knOlH-0003Pz-0d for importer@patchew.org; Thu, 10 Dec 2020 11:25:47 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:34408) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1knOb7-0004wi-Qh for qemu-devel@nongnu.org; Thu, 10 Dec 2020 11:15:18 -0500 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:23602) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1knOao-00015O-Tl for qemu-devel@nongnu.org; Thu, 10 Dec 2020 11:15:15 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-60-HLnCHeOwNjukjbL9fe0zZA-1; Thu, 10 Dec 2020 11:14:55 -0500 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 3D786C73A5; Thu, 10 Dec 2020 16:14:54 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-112-103.ams2.redhat.com [10.36.112.103]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 0C3BA5C260; Thu, 10 Dec 2020 16:14:54 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 7864611329A6; Thu, 10 Dec 2020 17:14:52 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1607616898; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=twabEsAWEQ/S8p60KkjtoEoQ7N9nzISOyrzIWt+zFbQ=; b=M8AAMO6vInzRdcf/8olNozEjZiwAPQJ7+yp/1RyN0dAFp+KxeDm8HomgMhhRtVzZqEHjxH cjI6B/AIcQsdZ6eyLyUXrUVM6UnBIpQ10NQODTSGI1bRxCG2KIFg7Tg84f48nux1znU2xo 5/9mFEg09tvGd8OwTc1HSwjXH20YWOc= X-MC-Unique: HLnCHeOwNjukjbL9fe0zZA-1 From: Markus Armbruster To: qemu-devel@nongnu.org Subject: [PATCH 02/10] tests/check-qjson: Examine QNum more thoroughly Date: Thu, 10 Dec 2020 17:14:44 +0100 Message-Id: <20201210161452.2813491-3-armbru@redhat.com> In-Reply-To: <20201210161452.2813491-1-armbru@redhat.com> References: <20201210161452.2813491-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=armbru@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=63.128.21.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mdroth@linux.vnet.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" simple_number() checks only qnum_get_try_int(). Also check qnum_get_try_uint() and qnum_get_double(). float_number() checks only qnum_get_double(). Also check qnum_get_try_int() and qnum_get_try_uint(). Signed-off-by: Markus Armbruster --- tests/check-qjson.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/tests/check-qjson.c b/tests/check-qjson.c index 2a5852904a..6ab6b111b0 100644 --- a/tests/check-qjson.c +++ b/tests/check-qjson.c @@ -807,7 +807,8 @@ static void simple_number(void) }; int i; QNum *qnum; - int64_t val; + int64_t ival; + uint64_t uval; QString *str; =20 for (i =3D 0; test_cases[i].encoded; i++) { @@ -815,8 +816,16 @@ static void simple_number(void) qobject_from_json(test_cases[i].encoded, &error_abort)); g_assert(qnum); - g_assert(qnum_get_try_int(qnum, &val)); - g_assert_cmpint(val, =3D=3D, test_cases[i].decoded); + g_assert(qnum_get_try_int(qnum, &ival)); + g_assert_cmpint(ival, =3D=3D, test_cases[i].decoded); + if (test_cases[i].decoded >=3D 0) { + g_assert(qnum_get_try_uint(qnum, &uval)); + g_assert_cmpuint(uval, =3D=3D, (uint64_t)test_cases[i].decoded= ); + } else { + g_assert(!qnum_get_try_uint(qnum, &uval)); + } + g_assert_cmpfloat(qnum_get_double(qnum), =3D=3D, + (double)test_cases[i].decoded); =20 str =3D qobject_to_json(QOBJECT(qnum)); g_assert_cmpstr(qstring_get_str(str), =3D=3D, @@ -885,6 +894,8 @@ static void float_number(void) }; int i; QNum *qnum; + int64_t ival; + uint64_t uval; QString *str; =20 for (i =3D 0; test_cases[i].encoded; i++) { @@ -893,6 +904,8 @@ static void float_number(void) &error_abort)); g_assert(qnum); g_assert_cmpfloat(qnum_get_double(qnum), =3D=3D, test_cases[i].dec= oded); + g_assert(!qnum_get_try_int(qnum, &ival)); + g_assert(!qnum_get_try_uint(qnum, &uval)); =20 str =3D qobject_to_json(QOBJECT(qnum)); g_assert_cmpstr(qstring_get_str(str), =3D=3D, --=20 2.26.2 From nobody Fri May 17 11:28:36 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1607632266; cv=none; d=zohomail.com; s=zohoarc; b=NInRgwf8Vb7cu5RaiyCQjBFCZjkIddzJSZRiq6nTbAM6iQqvspQG2oy+Aoi7BJ4ogncvEMW99+qfpUu6vTmQ/d9Z+D5lNH4YbKMzmz5OoII8yN0SQdrhcS2kL6dMYeKTV0is32852pxqubZ8iomuLUWaSPcG1UqEH2FriERK5UI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1607632266; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=ZLEms2GqBROgiIpDcBpSjRe9sUa+1hzo+enplD4dsZk=; b=I9V0UmiQdF7/r/nWwgGzv8vpVb3DYw0uOYOpeEy7z2e4YZJLOnoPQQX6IA7k5QrjUZAjwBfoinKd0UDQO6Ap/DVCD3qZt3x7qo+u9OO1NxDySOidTy+aI45ffxLUOpzbZ2VGnTjz2I5qa1eC4Om9W7qm+ZP5HSR56fDFrZZrraI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1607632266539942.561916045914; Thu, 10 Dec 2020 12:31:06 -0800 (PST) Received: from localhost ([::1]:42194 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1knOeb-00072u-OT for importer@patchew.org; Thu, 10 Dec 2020 11:18:57 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:34346) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1knOar-0004vU-A4 for qemu-devel@nongnu.org; Thu, 10 Dec 2020 11:15:14 -0500 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:32847) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1knOao-00014q-70 for qemu-devel@nongnu.org; Thu, 10 Dec 2020 11:15:00 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-484-EtZH9vC7OP6r1wIGklBTPw-1; Thu, 10 Dec 2020 11:14:55 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 3FCA7180A0A9; Thu, 10 Dec 2020 16:14:54 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-112-103.ams2.redhat.com [10.36.112.103]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 0F8305D6D3; Thu, 10 Dec 2020 16:14:54 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 7B9E511328AA; Thu, 10 Dec 2020 17:14:52 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1607616897; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ZLEms2GqBROgiIpDcBpSjRe9sUa+1hzo+enplD4dsZk=; b=aSqWG9Oa2fzgtCKapLsIcHL3r0sIF9+6vqrsXNlDiLI1pHoF+/O1J9OWI2RFwIynkZv0Io TyNc/IgD2gF0nCeaUxi9rtomGMGmwu9yMuH+JQR63itml8xP3W4ORIaa2cVakIr/jQwNMU idbqWQM8ivHVQnAIxCjD4RVDY3sSuXU= X-MC-Unique: EtZH9vC7OP6r1wIGklBTPw-1 From: Markus Armbruster To: qemu-devel@nongnu.org Subject: [PATCH 03/10] tests/check-qjson: Cover number 2^63 Date: Thu, 10 Dec 2020 17:14:45 +0100 Message-Id: <20201210161452.2813491-4-armbru@redhat.com> In-Reply-To: <20201210161452.2813491-1-armbru@redhat.com> References: <20201210161452.2813491-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=armbru@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=63.128.21.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mdroth@linux.vnet.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" Signed-off-by: Markus Armbruster --- tests/check-qjson.c | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/tests/check-qjson.c b/tests/check-qjson.c index 6ab6b111b0..8cb8a40524 100644 --- a/tests/check-qjson.c +++ b/tests/check-qjson.c @@ -791,7 +791,7 @@ static void utf8_string(void) } } =20 -static void simple_number(void) +static void int_number(void) { struct { const char *encoded; @@ -836,6 +836,42 @@ static void simple_number(void) } } =20 +static void uint_number(void) +{ + struct { + const char *encoded; + uint64_t decoded; + const char *reencoded; + } test_cases[] =3D { + { "9223372036854775808", (uint64_t)1 << 63 }, + {}, + }; + int i; + QNum *qnum; + int64_t ival; + uint64_t uval; + QString *str; + + for (i =3D 0; test_cases[i].encoded; i++) { + qnum =3D qobject_to(QNum, + qobject_from_json(test_cases[i].encoded, + &error_abort)); + g_assert(qnum); + g_assert(qnum_get_try_uint(qnum, &uval)); + g_assert_cmpuint(uval, =3D=3D, test_cases[i].decoded); + g_assert(!qnum_get_try_int(qnum, &ival)); + g_assert_cmpfloat(qnum_get_double(qnum), =3D=3D, + (double)test_cases[i].decoded); + + str =3D qobject_to_json(QOBJECT(qnum)); + g_assert_cmpstr(qstring_get_str(str), =3D=3D, + test_cases[i].reencoded ?: test_cases[i].encoded); + qobject_unref(str); + + qobject_unref(qnum); + } +} + static void large_number(void) { const char *maxu64 =3D "18446744073709551615"; /* 2^64-1 */ @@ -1487,7 +1523,8 @@ int main(int argc, char **argv) g_test_add_func("/literals/string/quotes", string_with_quotes); g_test_add_func("/literals/string/utf8", utf8_string); =20 - g_test_add_func("/literals/number/simple", simple_number); + g_test_add_func("/literals/number/int", int_number); + g_test_add_func("/literals/number/uint", uint_number); g_test_add_func("/literals/number/large", large_number); g_test_add_func("/literals/number/float", float_number); =20 --=20 2.26.2 From nobody Fri May 17 11:28:36 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1607619067; cv=none; d=zohomail.com; s=zohoarc; b=PNewZiAHZDWr0HgknfCgp8qeeCD6XsygRB6FidvMbKDGTsVqXBkvUyj/Q2FJDUao2ws5sXiIjCl4jBfi9cgfYzNFj7ramks/zV1TZCXIji9r9yvI32X5yhX/1U1FxNUGE8tA1TJ2e7GDT0ZaTBuMYeYr3C0ZXHFrT4pFpwXd3Vg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1607619067; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=NewHVqVbzKce8NMNH9W6D0kApzTdbfYQrQ/XUCuJf0Q=; b=CKB5SMiia2S2sp1D2lJAnl1DoPwYjqqmFUv6dOiLnLEsHP0aoPc4CTxlLq1sl3hrGCQXD7A3GqtDIve7kspx1O6WNTbkTwyJgFQMmk+HPRdOiuweWEV/4GCaUkkgF32gvtaBpimXRTicZxT2A28C+QRO2FEiwfsKPhyUZFLAWJg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1607619067881913.8734463723198; Thu, 10 Dec 2020 08:51:07 -0800 (PST) Received: from localhost ([::1]:44800 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1knOgV-0008Bc-Pi for importer@patchew.org; Thu, 10 Dec 2020 11:20:51 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:34398) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1knOb7-0004wR-CP for qemu-devel@nongnu.org; Thu, 10 Dec 2020 11:15:18 -0500 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:57667) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1knOap-000155-0C for qemu-devel@nongnu.org; Thu, 10 Dec 2020 11:15:08 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-583-V_b9D-s-PdeW1nU5raQ_cg-1; Thu, 10 Dec 2020 11:14:55 -0500 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 42B24802B40; Thu, 10 Dec 2020 16:14:54 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-112-103.ams2.redhat.com [10.36.112.103]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 120BC6F97E; Thu, 10 Dec 2020 16:14:54 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 7E9AF1129953; Thu, 10 Dec 2020 17:14:52 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1607616897; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=NewHVqVbzKce8NMNH9W6D0kApzTdbfYQrQ/XUCuJf0Q=; b=QjsEe85M17RNaI5hkL2RFeklQXFgzrxc10pldxxoVSkhpzjAlGChbDSnpO95Mo3T4y0b8G 6QJAP5YXtLRL/Cf2B5shFzzuGtbhQqD2nQ0+NmNp0dwRAqO6R2IbgsG7Y8CjmS68av/fjM jhQ57RbyTxWTQZelrY6La+4yXRFbDlg= X-MC-Unique: V_b9D-s-PdeW1nU5raQ_cg-1 From: Markus Armbruster To: qemu-devel@nongnu.org Subject: [PATCH 04/10] tests/check-qjson: Replace redundant large_number() Date: Thu, 10 Dec 2020 17:14:46 +0100 Message-Id: <20201210161452.2813491-5-armbru@redhat.com> In-Reply-To: <20201210161452.2813491-1-armbru@redhat.com> References: <20201210161452.2813491-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=armbru@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mdroth@linux.vnet.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" Move one of large_number()'s three checks to uint_number(), and the other two to float_number(). Signed-off-by: Markus Armbruster --- tests/check-qjson.c | 47 +++------------------------------------------ 1 file changed, 3 insertions(+), 44 deletions(-) diff --git a/tests/check-qjson.c b/tests/check-qjson.c index 8cb8a40524..98515b1fd6 100644 --- a/tests/check-qjson.c +++ b/tests/check-qjson.c @@ -844,6 +844,7 @@ static void uint_number(void) const char *reencoded; } test_cases[] =3D { { "9223372036854775808", (uint64_t)1 << 63 }, + { "18446744073709551615", UINT64_MAX }, {}, }; int i; @@ -872,49 +873,6 @@ static void uint_number(void) } } =20 -static void large_number(void) -{ - const char *maxu64 =3D "18446744073709551615"; /* 2^64-1 */ - const char *gtu64 =3D "18446744073709551616"; /* 2^64 */ - const char *lti64 =3D "-9223372036854775809"; /* -2^63 - 1 */ - QNum *qnum; - QString *str; - uint64_t val; - int64_t ival; - - qnum =3D qobject_to(QNum, qobject_from_json(maxu64, &error_abort)); - g_assert(qnum); - g_assert_cmpuint(qnum_get_uint(qnum), =3D=3D, 18446744073709551615U); - g_assert(!qnum_get_try_int(qnum, &ival)); - - str =3D qobject_to_json(QOBJECT(qnum)); - g_assert_cmpstr(qstring_get_str(str), =3D=3D, maxu64); - qobject_unref(str); - qobject_unref(qnum); - - qnum =3D qobject_to(QNum, qobject_from_json(gtu64, &error_abort)); - g_assert(qnum); - g_assert_cmpfloat(qnum_get_double(qnum), =3D=3D, 18446744073709552e3); - g_assert(!qnum_get_try_uint(qnum, &val)); - g_assert(!qnum_get_try_int(qnum, &ival)); - - str =3D qobject_to_json(QOBJECT(qnum)); - g_assert_cmpstr(qstring_get_str(str), =3D=3D, gtu64); - qobject_unref(str); - qobject_unref(qnum); - - qnum =3D qobject_to(QNum, qobject_from_json(lti64, &error_abort)); - g_assert(qnum); - g_assert_cmpfloat(qnum_get_double(qnum), =3D=3D, -92233720368547758e2); - g_assert(!qnum_get_try_uint(qnum, &val)); - g_assert(!qnum_get_try_int(qnum, &ival)); - - str =3D qobject_to_json(QOBJECT(qnum)); - g_assert_cmpstr(qstring_get_str(str), =3D=3D, "-9223372036854775808"); - qobject_unref(str); - qobject_unref(qnum); -} - static void float_number(void) { struct { @@ -926,6 +884,8 @@ static void float_number(void) { "0.222", 0.222 }, { "-32.12313", -32.12313 }, { "-32.20e-10", -32.20e-10, "-0" /* BUG */ }, + { "18446744073709551616", 0x1p64 }, + { "-9223372036854775809", -0x1p63, "-9223372036854775808" }, {}, }; int i; @@ -1525,7 +1485,6 @@ int main(int argc, char **argv) =20 g_test_add_func("/literals/number/int", int_number); g_test_add_func("/literals/number/uint", uint_number); - g_test_add_func("/literals/number/large", large_number); g_test_add_func("/literals/number/float", float_number); =20 g_test_add_func("/literals/keyword", keyword_literal); --=20 2.26.2 From nobody Fri May 17 11:28:36 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1607632280; cv=none; d=zohomail.com; s=zohoarc; b=GEtOBPMwcvK1kMvQZO2WJQSMN/G0Gk0os/1S+0FkxP0eXz1sVzOw2Hef/ezYlphULhjbqId6pk6dkhKbsWb/wsOcbmdxjG/QLQFQ3ME+MuYZzqN3eY0u5LTDCwQRhS+F7g5OHVHZs4uUttEhpoSzlOPLL5XPxcXJcP4o6pQOWYA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1607632280; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=T1eQNMQIdNN5bzE208jYoemEsZ10JBeNTxKm962RAgE=; b=GTc5a1UP1OvVnIWEUoBXYOKnt9QhOeVATTFjsr7vMG3fa3zixGFL3frPS5WTzpyetAskpNWwNLgrjkYJMIhBhu82E+QEJmljW1157nACogBAXYuk8EJT84R7fBVeyRRdmotKWCOBTq1K95jL0HeP1zHagLomdpUHWwQfyu1PGH0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1607632280043442.29289475918927; Thu, 10 Dec 2020 12:31:20 -0800 (PST) Received: from localhost ([::1]:50526 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1knOk3-0002HM-8S for importer@patchew.org; Thu, 10 Dec 2020 11:24:31 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:34436) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1knOb8-0004wn-9S for qemu-devel@nongnu.org; Thu, 10 Dec 2020 11:15:20 -0500 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:39840) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1knOaq-00015U-TI for qemu-devel@nongnu.org; Thu, 10 Dec 2020 11:15:18 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-324-eL7DjK7VN7msli7EatUP8Q-1; Thu, 10 Dec 2020 11:14:56 -0500 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id BD7581005513; Thu, 10 Dec 2020 16:14:55 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-112-103.ams2.redhat.com [10.36.112.103]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 8D8441002388; Thu, 10 Dec 2020 16:14:55 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 81F5F10FA0A7; Thu, 10 Dec 2020 17:14:52 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1607616898; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=T1eQNMQIdNN5bzE208jYoemEsZ10JBeNTxKm962RAgE=; b=gWqVcI/oq2kebtpCHnxWCc2lnyA/yz7jV1KV3iUCv0CEQ5IQjBnlY/RuucdLEojSgv+RaO nDCU70qWEa5iyjEiIvVPkuzzbSxb0I0HAJWa7lWbIabYG10peLcVQXKERKvxibEqkDM/j/ PPpvFzkgrqBjEZzWnR+EJgsKVkdjQL8= X-MC-Unique: eL7DjK7VN7msli7EatUP8Q-1 From: Markus Armbruster To: qemu-devel@nongnu.org Subject: [PATCH 05/10] tests/check-qnum: Cover qnum_to_string() for "unround" argument Date: Thu, 10 Dec 2020 17:14:47 +0100 Message-Id: <20201210161452.2813491-6-armbru@redhat.com> In-Reply-To: <20201210161452.2813491-1-armbru@redhat.com> References: <20201210161452.2813491-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=armbru@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=63.128.21.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mdroth@linux.vnet.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" qnum_to_string() has a FIXME comment about rounding errors due to insufficient precision. Cover it: 2.718281828459045 gets converted to "2.718282". The next commit will fix it. Signed-off-by: Markus Armbruster --- tests/check-qnum.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/check-qnum.c b/tests/check-qnum.c index 4105015872..a73809d021 100644 --- a/tests/check-qnum.c +++ b/tests/check-qnum.c @@ -150,6 +150,12 @@ static void qnum_to_string_test(void) g_assert_cmpstr(tmp, =3D=3D, "0.42"); g_free(tmp); qobject_unref(qn); + + qn =3D qnum_from_double(2.718281828459045); + tmp =3D qnum_to_string(qn); + g_assert_cmpstr(tmp, =3D=3D, "2.718282"); /* BUG */ + g_free(tmp); + qobject_unref(qn); } =20 int main(int argc, char **argv) --=20 2.26.2 From nobody Fri May 17 11:28:36 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1607629859; cv=none; d=zohomail.com; s=zohoarc; b=CpqrD0ixjVNoM2w/BtWM/PgE+UasHeVCjGiqFfRrWamsaGSKUYMixHxiAqD5t1tW8s3ogZ9pXqnqCTiZjAiA2U8PPU3LIDRtazIszver1IOXYCxpJLf3Rkmv6q0plK8gqAKtooJpAiXUSnL0LCAgJdLuZa5JAXW6REOVgGMFxDU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1607629859; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=J2o0w0aIACMWgMPfaX2AiTlOmuV4LM2dcZPSF/9Hans=; b=c3hOww1xZE76kCHvg2U2BmaKQJjGPumbxzZzUEBSFdJyd8HEga9hYKSdxiFUTeCYHWebmVrxb7Ckbq5rGpjaC007UEsBpbd2MwJe7I/d/EIfaIxCTHtvt/2BbsMu25pwSOxKfBYf5Bi2UguFUR8PjXYtXDGKPptghXUZT/5AgZA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1607629859571117.56862509317682; Thu, 10 Dec 2020 11:50:59 -0800 (PST) Received: from localhost ([::1]:59760 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1knOpd-0006ea-Id for importer@patchew.org; Thu, 10 Dec 2020 11:30:17 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:34486) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1knObA-0004zx-S5 for qemu-devel@nongnu.org; Thu, 10 Dec 2020 11:15:24 -0500 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:43922) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1knOaw-00016F-CQ for qemu-devel@nongnu.org; Thu, 10 Dec 2020 11:15:20 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-311-LA-6dZpEP2u8WZ_ir4z8bg-1; Thu, 10 Dec 2020 11:14:57 -0500 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id E5E78801817; Thu, 10 Dec 2020 16:14:55 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-112-103.ams2.redhat.com [10.36.112.103]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 8D8655D9CC; Thu, 10 Dec 2020 16:14:55 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 851A510FA0A8; Thu, 10 Dec 2020 17:14:52 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1607616901; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=J2o0w0aIACMWgMPfaX2AiTlOmuV4LM2dcZPSF/9Hans=; b=P/6OXFo75Sbvzaq+t+BA9ZPfwFOzrbencbL7I+84/wHYKd/TrT4Tup+d6gOc7Zh/eSfcjJ k9vPvDRpZfRhHOYQ/jOHE8P2yp9q3neH1lHqesdOAUzVYhwI2+cWq4zTsQOqSAJ1Gg4UDp hkXrk0qjdrphPpIFmh0z3/AS/pzWoaU= X-MC-Unique: LA-6dZpEP2u8WZ_ir4z8bg-1 From: Markus Armbruster To: qemu-devel@nongnu.org Subject: [PATCH 06/10] qobject: Fix qnum_to_string() to use sufficient precision Date: Thu, 10 Dec 2020 17:14:48 +0100 Message-Id: <20201210161452.2813491-7-armbru@redhat.com> In-Reply-To: <20201210161452.2813491-1-armbru@redhat.com> References: <20201210161452.2813491-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=armbru@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mdroth@linux.vnet.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" We should serialize numbers to JSON so that they deserialize back to the same number. We fail to do so. The culprit is qnum_to_string(): it uses format %f with trailing '0' trimmed. Results in pretty output for "nice" numbers, but is prone to nasty rounding errors. For instance, numbers between 0 and 0.0000005 get flushed to zero. Where exactly the incorrect rounding can bite is tiresome to gauge. Here's my take. * In QMP output, type 'number': - query-blockstats value avg_rd_queue_depth - QMP query-migrate values mbps, cache-miss-rate, encoding-rate, busy-rate, compression-rate. Relatively harmless, I guess. * In tracing QMP input. Harmless. * In qemu-ga output, type 'number': guest-get-users value login-time. Harmless. * In output of HMP qom-get. Harmless. Not affected, because double values don't actually occur there (I think): * QMP output, type 'any': * qom-get value * qom-list, qom-list-properties value default-value * query-cpu-model-comparison, query-cpu-model-baseline, query-cpu-model-expansion value props. * qemu-img --output json output. * "json:" pseudo-filenames generated by bdrv_refresh_filename(). * The rbd block driver's "=3Dkeyvalue-pairs" hack. * In -object help on property default values. Aside: use of JSON feels inappropriate here. * Output of HMP qom-get. * Argument conversion to QemuOpts for qdev_device_add() and HMP with qemu_opts_from_qdict() QMP and HMP device_add, virtio-net failover primary creation, xen-usb "usb-host" creation, HMP netdev_add, object_add. * The uses of qobject_input_visitor_new_flat_confused() As far as I can tell, none of the visited types contain double values. * Dumping ImageInfoSpecific with dump_qobject() Fix by formatting with %.17g. 17 decimal digits always suffice for IEEE double. The change to expected test output illustrates the effect: the rounding errors are gone, but some seemingly "nice" numbers now get converted to not so nice strings, e.g. 0.42 to "0.41999999999999998". This is because 0.42 is not representable exactly in double. It's more accurate in this example than strictly necessary, though. If ugly accuracy bothers us, we can we can try using the least number of digits that still converts back to the same double. In this example, "0.42" would do. Signed-off-by: Markus Armbruster --- qobject/qnum.c | 24 +++--------------------- tests/check-qjson.c | 8 ++++---- tests/check-qnum.c | 4 ++-- 3 files changed, 9 insertions(+), 27 deletions(-) diff --git a/qobject/qnum.c b/qobject/qnum.c index 7012fc57f2..bf1240ecec 100644 --- a/qobject/qnum.c +++ b/qobject/qnum.c @@ -161,37 +161,19 @@ double qnum_get_double(QNum *qn) =20 char *qnum_to_string(QNum *qn) { - char *buffer; - int len; - switch (qn->kind) { case QNUM_I64: return g_strdup_printf("%" PRId64, qn->u.i64); case QNUM_U64: return g_strdup_printf("%" PRIu64, qn->u.u64); case QNUM_DOUBLE: - /* FIXME: snprintf() is locale dependent; but JSON requires + /* FIXME: g_strdup_printf() is locale dependent; but JSON requires * numbers to be formatted as if in the C locale. Dependence * on C locale is a pervasive issue in QEMU. */ /* FIXME: This risks printing Inf or NaN, which are not valid * JSON values. */ - /* FIXME: the default precision of 6 for %f often causes - * rounding errors; we should be using DBL_DECIMAL_DIG (17), - * and only rounding to a shorter number if the result would - * still produce the same floating point value. */ - buffer =3D g_strdup_printf("%f" , qn->u.dbl); - len =3D strlen(buffer); - while (len > 0 && buffer[len - 1] =3D=3D '0') { - len--; - } - - if (len && buffer[len - 1] =3D=3D '.') { - buffer[len - 1] =3D 0; - } else { - buffer[len] =3D 0; - } - - return buffer; + /* 17 digits suffice for IEEE double */ + return g_strdup_printf("%.17g", qn->u.dbl); } =20 assert(0); diff --git a/tests/check-qjson.c b/tests/check-qjson.c index 98515b1fd6..ca8fb816e9 100644 --- a/tests/check-qjson.c +++ b/tests/check-qjson.c @@ -882,10 +882,10 @@ static void float_number(void) } test_cases[] =3D { { "32.43", 32.43 }, { "0.222", 0.222 }, - { "-32.12313", -32.12313 }, - { "-32.20e-10", -32.20e-10, "-0" /* BUG */ }, - { "18446744073709551616", 0x1p64 }, - { "-9223372036854775809", -0x1p63, "-9223372036854775808" }, + { "-32.12313", -32.12313, "-32.123130000000003" }, + { "-32.20e-10", -32.20e-10, "-3.22e-09" }, + { "18446744073709551616", 0x1p64, "1.8446744073709552e+19" }, + { "-9223372036854775809", -0x1p63, "-9.2233720368547758e+18" }, {}, }; int i; diff --git a/tests/check-qnum.c b/tests/check-qnum.c index a73809d021..b85fca2302 100644 --- a/tests/check-qnum.c +++ b/tests/check-qnum.c @@ -147,13 +147,13 @@ static void qnum_to_string_test(void) =20 qn =3D qnum_from_double(0.42); tmp =3D qnum_to_string(qn); - g_assert_cmpstr(tmp, =3D=3D, "0.42"); + g_assert_cmpstr(tmp, =3D=3D, "0.41999999999999998"); g_free(tmp); qobject_unref(qn); =20 qn =3D qnum_from_double(2.718281828459045); tmp =3D qnum_to_string(qn); - g_assert_cmpstr(tmp, =3D=3D, "2.718282"); /* BUG */ + g_assert_cmpstr(tmp, =3D=3D, "2.7182818284590451"); g_free(tmp); qobject_unref(qn); } --=20 2.26.2 From nobody Fri May 17 11:28:36 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1607628096; cv=none; d=zohomail.com; s=zohoarc; b=KkY/Itduv2dvtG+epMyFbndFYpO3nThTjK9VkEyIlkznp7ihoUeo5RUSQcjwxZ9w5hzo4EMXLB95TMd0x03WCoWQ9wfYZbgbMuE4wVh9ZVclQGLc601c3Wpvr6XmjfUlNPi0gwso2xtbmDk0gLHlLyyJeIJMtRYP5x2xdsQfntI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1607628096; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=oUqJFE9jin09mkoOn0Y6n1qgPYa13jp2O4WdhQnTYn4=; b=KtkAfHQOJKeUWUT1S1BDREcpIZMlo+L7sg/mswBPGBAMgz+efwjwhrkM9HvOHTNKCchwPxqTAqXl5WQoRuDMK0YXLgAIWWSPhWgM+tPvy8XLV3OwKE0PjObwn8JOvgruknpCtUVIPJ3HMVz1caRSUHNYIkfuubCQebpX4uVuHdg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1607628096285742.5649808516266; Thu, 10 Dec 2020 11:21:36 -0800 (PST) Received: from localhost ([::1]:43442 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1knOft-0007au-99 for importer@patchew.org; Thu, 10 Dec 2020 11:20:13 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:34412) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1knOb7-0004wj-UR for qemu-devel@nongnu.org; Thu, 10 Dec 2020 11:15:20 -0500 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:52658) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1knOaq-00015m-Hz for qemu-devel@nongnu.org; Thu, 10 Dec 2020 11:15:17 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-115-TgScM_y6OwGs8cYpeOYezA-1; Thu, 10 Dec 2020 11:14:56 -0500 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id BF6E4809DD2; Thu, 10 Dec 2020 16:14:55 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-112-103.ams2.redhat.com [10.36.112.103]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 8E72260BF3; Thu, 10 Dec 2020 16:14:55 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 8871910FA0A9; Thu, 10 Dec 2020 17:14:52 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1607616898; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=oUqJFE9jin09mkoOn0Y6n1qgPYa13jp2O4WdhQnTYn4=; b=MEt1u+0tV7kmRO5FqBryvqo9RUkCa7Qo2BZE/eQZs3fNvpmDZdpyVBMLTzUI8KGRqG4fCX kSo+RLxFBtmwavAOl+4vzJ/dPs0JvODQPMF02z/PTJMv4qqDvR5x0ujqtk7VhGZ9a3PRlp sD02TdR+qf4qUCYiqa87OJTtAbcINHc= X-MC-Unique: TgScM_y6OwGs8cYpeOYezA-1 From: Markus Armbruster To: qemu-devel@nongnu.org Subject: [PATCH 07/10] test-string-output-visitor: Cover "unround" number Date: Thu, 10 Dec 2020 17:14:49 +0100 Message-Id: <20201210161452.2813491-8-armbru@redhat.com> In-Reply-To: <20201210161452.2813491-1-armbru@redhat.com> References: <20201210161452.2813491-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=armbru@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mdroth@linux.vnet.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" This demonstrates rounding error due to insufficient precision: double 3.1415926535897932 gets converted to JSON 3.141593. Signed-off-by: Markus Armbruster --- tests/test-string-output-visitor.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test-string-output-visitor.c b/tests/test-string-output-= visitor.c index 9f6581439a..cec20848ea 100644 --- a/tests/test-string-output-visitor.c +++ b/tests/test-string-output-visitor.c @@ -130,13 +130,13 @@ static void test_visitor_out_bool(TestOutputVisitorDa= ta *data, static void test_visitor_out_number(TestOutputVisitorData *data, const void *unused) { - double value =3D 3.14; + double value =3D 3.1415926535897932; char *str; =20 visit_type_number(data->ov, NULL, &value, &error_abort); =20 str =3D visitor_get(data); - g_assert_cmpstr(str, =3D=3D, "3.140000"); + g_assert_cmpstr(str, =3D=3D, "3.141593"); } =20 static void test_visitor_out_string(TestOutputVisitorData *data, --=20 2.26.2 From nobody Fri May 17 11:28:36 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1607629427; cv=none; d=zohomail.com; s=zohoarc; b=nZuEyRl4ExiT3BIvkqNfbwewZ7XDqz6eL5ilL7I5xYVrpGlOYXrR6G4oAMkUbdeYzqcC6NVU0qNvrQiM/L6iQT7qQmg43JsZXZERwe94QUJEvZH9jsoi5WjhMf02QAnyx6Yj6n+KBgkZrLvn3s5EcwKcsP/2BGD7jwsn/KsJRR4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1607629427; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=5kvxsjmxdPlNQ0G01lVznn3FclXEGWV9MQ+CnN9xZA4=; b=Fiir2y7yje9iQz/Kmm/8M66uk7avXm/7WXPaLewhJqlITItKWdUKHeDXLKZbTHgiw6Tz755drRmFxr35IoDHq5TGxJQHBxRVAoX6nNaMaiLHBuhOwCrPUOZg83tKH5TbqM8P0bCRz+oqNjPFrO5cZYMa7YXso3ZY65zxh06VneI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1607629427246376.56000085480855; Thu, 10 Dec 2020 11:43:47 -0800 (PST) Received: from localhost ([::1]:51896 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1knOkr-0002rF-2s for importer@patchew.org; Thu, 10 Dec 2020 11:25:21 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:34400) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1knOb7-0004wS-CW for qemu-devel@nongnu.org; Thu, 10 Dec 2020 11:15:18 -0500 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:40221) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1knOaq-00015W-9t for qemu-devel@nongnu.org; Thu, 10 Dec 2020 11:15:11 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-281-Lh2H0NwcOre8a1YIDCCDxQ-1; Thu, 10 Dec 2020 11:14:56 -0500 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id C0A40802B4A; Thu, 10 Dec 2020 16:14:55 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-112-103.ams2.redhat.com [10.36.112.103]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 913BC60C43; Thu, 10 Dec 2020 16:14:55 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 8B82310FA0AA; Thu, 10 Dec 2020 17:14:52 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1607616898; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=5kvxsjmxdPlNQ0G01lVznn3FclXEGWV9MQ+CnN9xZA4=; b=V2RQuWYlnwIyuueRZBAENRhkNnDy8bl+KXwZngvJm7qWggd2o8X7TodHPbiYlb7UVx7Hzr GOaNRc1g0r2qi2Eh/pCMF1xUZ7tbMorydIoxgL8Bh1ZlOdEV8+HChz210IK/GiCPlBA2ud Fpqar+Z1EwuxWSbjakXbMbpcWMdTi2Q= X-MC-Unique: Lh2H0NwcOre8a1YIDCCDxQ-1 From: Markus Armbruster To: qemu-devel@nongnu.org Subject: [PATCH 08/10] string-output-visitor: Fix to use sufficient precision Date: Thu, 10 Dec 2020 17:14:50 +0100 Message-Id: <20201210161452.2813491-9-armbru@redhat.com> In-Reply-To: <20201210161452.2813491-1-armbru@redhat.com> References: <20201210161452.2813491-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=armbru@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mdroth@linux.vnet.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" The string output visitor should serialize numbers so that the string input visitor deserializes them back to the same number. It fails to do so. print_type_number() uses format %f. This is prone to nasty rounding errors. For instance, numbers between 0 and 0.0000005 get flushed to zero. We currently use this visitor only for HMP info migrate, info network, info qtree, and info memdev. No double values occur there as far as I can tell. Fix anyway by formatting with %.17g. 17 decimal digits always suffice for IEEE double. See also recent commit "qobject: Fix qnum_to_string() to use sufficient precision". Signed-off-by: Markus Armbruster --- qapi/string-output-visitor.c | 2 +- tests/test-string-output-visitor.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/qapi/string-output-visitor.c b/qapi/string-output-visitor.c index b74aa4d44c..5506c933de 100644 --- a/qapi/string-output-visitor.c +++ b/qapi/string-output-visitor.c @@ -258,7 +258,7 @@ static bool print_type_number(Visitor *v, const char *n= ame, double *obj, Error **errp) { StringOutputVisitor *sov =3D to_sov(v); - string_output_set(sov, g_strdup_printf("%f", *obj)); + string_output_set(sov, g_strdup_printf("%.17g", *obj)); return true; } =20 diff --git a/tests/test-string-output-visitor.c b/tests/test-string-output-= visitor.c index cec20848ea..0dae04b960 100644 --- a/tests/test-string-output-visitor.c +++ b/tests/test-string-output-visitor.c @@ -136,7 +136,7 @@ static void test_visitor_out_number(TestOutputVisitorDa= ta *data, visit_type_number(data->ov, NULL, &value, &error_abort); =20 str =3D visitor_get(data); - g_assert_cmpstr(str, =3D=3D, "3.141593"); + g_assert_cmpstr(str, =3D=3D, "3.1415926535897931"); } =20 static void test_visitor_out_string(TestOutputVisitorData *data, --=20 2.26.2 From nobody Fri May 17 11:28:36 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1607628075; cv=none; d=zohomail.com; s=zohoarc; b=LgvLqhIZnYfoAafsGGEVUqvmR2893fb1dvWNhyB8n3Q6g5vVT/AR4YJQpLxb60abxUuQuavczd0ImiGH4lI7MQr+vDNooXKMmLn/49bimzqKoBaAX2Owe8HGAaEvTsmt86hKOSnhR9TM2Q2T3y7QknDOoGi/628s7hS34XP5i0g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1607628075; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=d5yGaRHo8Efv0w/Etw49cvrwWeYThttFtKlRLIfXd0k=; b=IWsikFR4HZu6X5S9ZG2xEwCAtzNZBpwktNLZdcMbQocSlud6+PDUYKOL943b8WW6cruDGyaM6Xgun8V1wsxd2oZmxlo5p+tMNjlsghpop7Fl9Kjfk1yXqX4+MQ32RLqCz7QwvOHDTl/8y1KnXj6uEZNSGJCslk1R1/lxnVVZJbU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1607628075539786.8029486727264; Thu, 10 Dec 2020 11:21:15 -0800 (PST) Received: from localhost ([::1]:60918 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1knOr4-00079p-7Q for importer@patchew.org; Thu, 10 Dec 2020 11:31:46 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:34448) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1knOb8-0004y1-Py for qemu-devel@nongnu.org; Thu, 10 Dec 2020 11:15:20 -0500 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:49422) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1knOaq-00015a-Ej for qemu-devel@nongnu.org; Thu, 10 Dec 2020 11:15:18 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-238-QHx4zanIObexcPH5V4ofhQ-1; Thu, 10 Dec 2020 11:14:56 -0500 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id C212B180A092; Thu, 10 Dec 2020 16:14:55 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-112-103.ams2.redhat.com [10.36.112.103]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 9222B60C5F; Thu, 10 Dec 2020 16:14:55 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 8E9E010FA0AB; Thu, 10 Dec 2020 17:14:52 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1607616898; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=d5yGaRHo8Efv0w/Etw49cvrwWeYThttFtKlRLIfXd0k=; b=gDNxcfaYztdv8MsNgazriLPn2nBq4uYHagIhE98fVRpFqxxjhPM71ufK0cfpP3UBs2VStS 3uO+tmylLNBzlOdRXkn72FDEwq83/Zl5BGhpkLAwb+J7yAwHsJngkRpq6ui4/Y7n2qmwGA EesTF7bukLXSZ/5HYL9qEDaiNVVzTGI= X-MC-Unique: QHx4zanIObexcPH5V4ofhQ-1 From: Markus Armbruster To: qemu-devel@nongnu.org Subject: [PATCH 09/10] test-visitor-serialization: Drop insufficient precision workaround Date: Thu, 10 Dec 2020 17:14:51 +0100 Message-Id: <20201210161452.2813491-10-armbru@redhat.com> In-Reply-To: <20201210161452.2813491-1-armbru@redhat.com> References: <20201210161452.2813491-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=armbru@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=63.128.21.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mdroth@linux.vnet.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" Signed-off-by: Markus Armbruster --- tests/test-visitor-serialization.c | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/tests/test-visitor-serialization.c b/tests/test-visitor-serial= ization.c index 1c5a8b94ea..19b72571bb 100644 --- a/tests/test-visitor-serialization.c +++ b/tests/test-visitor-serialization.c @@ -311,17 +311,7 @@ static void test_primitives(gconstpointer opaque) g_assert_cmpstr(pt->value.string, =3D=3D, pt_copy->value.string); g_free((char *)pt_copy->value.string); } else if (pt->type =3D=3D PTYPE_NUMBER) { - GString *double_expected =3D g_string_new(""); - GString *double_actual =3D g_string_new(""); - /* we serialize with %f for our reference visitors, so rather than= fuzzy - * floating math to test "equality", just compare the formatted va= lues - */ - g_string_printf(double_expected, "%.6f", pt->value.number); - g_string_printf(double_actual, "%.6f", pt_copy->value.number); - g_assert_cmpstr(double_actual->str, =3D=3D, double_expected->str); - - g_string_free(double_expected, true); - g_string_free(double_actual, true); + g_assert_cmpfloat(pt->value.number, =3D=3D, pt_copy->value.number); } else if (pt->type =3D=3D PTYPE_BOOLEAN) { g_assert_cmpint(!!pt->value.max, =3D=3D, !!pt->value.max); } else { @@ -790,10 +780,6 @@ static PrimitiveType pt_values[] =3D { .value.boolean =3D 0, }, /* number tests (double) */ - /* note: we format these to %.6f before comparing, since that's how - * we serialize them and it doesn't make sense to check precision - * beyond that. - */ { .description =3D "number_sanity1", .type =3D PTYPE_NUMBER, @@ -802,7 +788,7 @@ static PrimitiveType pt_values[] =3D { { .description =3D "number_sanity2", .type =3D PTYPE_NUMBER, - .value.number =3D 3.14159265, + .value.number =3D 3.141593, }, { .description =3D "number_min", --=20 2.26.2 From nobody Fri May 17 11:28:36 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1607617761; cv=none; d=zohomail.com; s=zohoarc; b=ONm2emn/YyOUsdhRqReZl5w6NRUkFWuRdYES9m7lntdjKhqDEn8QNPA6Uma6e3rKOS821FJTXF5Hp+Xb9WtN6x7ZysZizo2JNlHXDJ7FwyeykPwLWOHNp8e5QaHYgmSyy7O2LpmDHcB4sXi8uLhJkcR+w29w5AWyG0iDv1zBaXE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1607617761; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=3kqsoRBYL03kTltdjYlnZAjW6aQj/S3a950/hJMoyWU=; b=dbs+InB6iPiocX6E0DL0HQfxH+I4gt7hlQpyAM2DsuqWnghbswFL4gPsQoF3ObouTuDcnshIJpc1tkDW9TGaQG8hJNwcELOhJH7SEReqvhSKJN5sFfa5H6FGm4/WO4aqbhvgE+46LetmFmByxU0Bnox6TqiB7XcRpIJdk8Lpsdg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1607617761090980.964206295423; Thu, 10 Dec 2020 08:29:21 -0800 (PST) Received: from localhost ([::1]:58720 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1knOof-0006Aa-De for importer@patchew.org; Thu, 10 Dec 2020 11:29:17 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:34434) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1knOb8-0004wm-7L for qemu-devel@nongnu.org; Thu, 10 Dec 2020 11:15:20 -0500 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:26172) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1knOaq-00015e-Ny for qemu-devel@nongnu.org; Thu, 10 Dec 2020 11:15:17 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-536-gk-KfR20OLyMMkbq0-udIQ-1; Thu, 10 Dec 2020 11:14:56 -0500 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id C35A7100C660; Thu, 10 Dec 2020 16:14:55 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-112-103.ams2.redhat.com [10.36.112.103]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 936DD5D9DD; Thu, 10 Dec 2020 16:14:55 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 91B5210FA0AC; Thu, 10 Dec 2020 17:14:52 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1607616898; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=3kqsoRBYL03kTltdjYlnZAjW6aQj/S3a950/hJMoyWU=; b=FfveVM/kIa7EarjbEs8JilqsOP8Zh1LNgOg2LEX1/9hEbE68mpBnRoUXcH7Re0RFmU96Ni TNUv3G+ANxv0f4AlYGJkfa1SXphZu3fNxLSGPztdqdOJOCD0JSvQSyipAjY9Za6NSSsvNz xkO+4/1lKbT4/13ejOILfcZbos2PQ1Y= X-MC-Unique: gk-KfR20OLyMMkbq0-udIQ-1 From: Markus Armbruster To: qemu-devel@nongnu.org Subject: [PATCH 10/10] test-visitor-serialization: Clean up test_primitives() Date: Thu, 10 Dec 2020 17:14:52 +0100 Message-Id: <20201210161452.2813491-11-armbru@redhat.com> In-Reply-To: <20201210161452.2813491-1-armbru@redhat.com> References: <20201210161452.2813491-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=armbru@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=63.128.21.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mdroth@linux.vnet.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" test_primitives() uses union member intmax_t max to compare the integer members. Unspecified behavior. Has worked fine for many years, though. Clean it up. Signed-off-by: Markus Armbruster --- tests/test-visitor-serialization.c | 44 +++++++++++++++++++++++++----- 1 file changed, 37 insertions(+), 7 deletions(-) diff --git a/tests/test-visitor-serialization.c b/tests/test-visitor-serial= ization.c index 19b72571bb..7eab18b7c6 100644 --- a/tests/test-visitor-serialization.c +++ b/tests/test-visitor-serialization.c @@ -55,7 +55,6 @@ typedef struct PrimitiveType { int16_t s16; int32_t s32; int64_t s64; - intmax_t max; } value; enum PrimitiveTypeKind type; const char *description; @@ -307,15 +306,46 @@ static void test_primitives(gconstpointer opaque) &error_abort); =20 g_assert(pt_copy !=3D NULL); - if (pt->type =3D=3D PTYPE_STRING) { + switch (pt->type) { + case PTYPE_STRING: g_assert_cmpstr(pt->value.string, =3D=3D, pt_copy->value.string); g_free((char *)pt_copy->value.string); - } else if (pt->type =3D=3D PTYPE_NUMBER) { + break; + case PTYPE_BOOLEAN: + g_assert_cmpint(pt->value.boolean, =3D=3D, pt->value.boolean); + break; + case PTYPE_NUMBER: g_assert_cmpfloat(pt->value.number, =3D=3D, pt_copy->value.number); - } else if (pt->type =3D=3D PTYPE_BOOLEAN) { - g_assert_cmpint(!!pt->value.max, =3D=3D, !!pt->value.max); - } else { - g_assert_cmpint(pt->value.max, =3D=3D, pt_copy->value.max); + break; + case PTYPE_INTEGER: + g_assert_cmpint(pt->value.integer, =3D=3D, pt_copy->value.integer); + break; + case PTYPE_U8: + g_assert_cmpuint(pt->value.u8, =3D=3D, pt_copy->value.u8); + break; + case PTYPE_U16: + g_assert_cmpuint(pt->value.u16, =3D=3D, pt_copy->value.u16); + break; + case PTYPE_U32: + g_assert_cmpuint(pt->value.u32, =3D=3D, pt_copy->value.u32); + break; + case PTYPE_U64: + g_assert_cmpuint(pt->value.u64, =3D=3D, pt_copy->value.u64); + break; + case PTYPE_S8: + g_assert_cmpint(pt->value.s8, =3D=3D, pt_copy->value.s8); + break; + case PTYPE_S16: + g_assert_cmpint(pt->value.s16, =3D=3D, pt_copy->value.s16); + break; + case PTYPE_S32: + g_assert_cmpint(pt->value.s32, =3D=3D, pt_copy->value.s32); + break; + case PTYPE_S64: + g_assert_cmpint(pt->value.s64, =3D=3D, pt_copy->value.s64); + break; + case PTYPE_EOL: + g_assert_not_reached(); } =20 ops->cleanup(serialize_data); --=20 2.26.2