From patchwork Mon Oct 16 22:57:57 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pedro Alves X-Patchwork-Id: 23630 Received: (qmail 74456 invoked by alias); 16 Oct 2017 22:58:01 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 74271 invoked by uid 89); 16 Oct 2017 22:58:00 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RP_MATCHES_RCVD, SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=x10, X10, smoke X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 16 Oct 2017 22:57:59 +0000 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 mx1.redhat.com (Postfix) with ESMTPS id 9A95737E60 for ; Mon, 16 Oct 2017 22:57:58 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 9A95737E60 Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=palves@redhat.com Received: from cascais.lan (ovpn04.gateway.prod.ext.ams2.redhat.com [10.39.146.4]) by smtp.corp.redhat.com (Postfix) with ESMTP id 2671B5D9C0 for ; Mon, 16 Oct 2017 22:57:57 +0000 (UTC) From: Pedro Alves To: gdb-patches@sourceware.org Subject: [PATCH] Merge/shared string_printf and string_vprintf unit tests Date: Mon, 16 Oct 2017 23:57:57 +0100 Message-Id: <1508194677-19549-1-git-send-email-palves@redhat.com> Merge the string_printf and string_vprintf tests, running them all against both functions. gdb/ChangeLog: 2017-10-16 Pedro Alves * unittests/common-utils-selftests.c (format_func): New typedef. (string_printf_tests, string_vprintf_tests): Tests factored out and merged to ... (test_format_func): ... this new function. (string_printf_tests, string_vprintf_tests): Reimplement on top of test_format_func. --- gdb/unittests/common-utils-selftests.c | 43 ++++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/gdb/unittests/common-utils-selftests.c b/gdb/unittests/common-utils-selftests.c index 0f26b21..cf65513 100644 --- a/gdb/unittests/common-utils-selftests.c +++ b/gdb/unittests/common-utils-selftests.c @@ -22,23 +22,41 @@ namespace selftests { +/* Type of both 'string_printf' and the 'format' function below. Used + to run the same tests against both string_printf and + string_vprintf. */ +typedef std::string (format_func) (const char *fmt, ...); + static void -string_printf_tests () +test_format_func (format_func *func) { - SELF_CHECK (string_printf ("%s", "") == ""); - SELF_CHECK (string_printf ("%d comes before 2", 1) == "1 comes before 2"); - SELF_CHECK (string_printf ("hello %s", "world") == "hello world"); + /* Basic smoke tests. */ + SELF_CHECK (func ("%s", "") == ""); + SELF_CHECK (func ("%s", "test") == "test"); + SELF_CHECK (func ("%d", 23) == "23"); + SELF_CHECK (func ("%s %d %s", "test", 23, "done") == "test 23 done"); + SELF_CHECK (func ("nothing") == "nothing"); + SELF_CHECK (func ("%d comes before 2", 1) == "1 comes before 2"); + SELF_CHECK (func ("hello %s", "world") == "hello world"); + /* Check that we don't mishandle very large strings. (An earlier + non-public implementation of string_printf mishandled this). */ #define X10 "0123456789" #define X100 X10 X10 X10 X10 X10 X10 X10 X10 X10 X10 #define X1000 X100 X100 X100 X100 X100 X100 X100 X100 X100 X100 #define X10000 X1000 X1000 X1000 X1000 X1000 X1000 X1000 X1000 X1000 X1000 #define X100000 X10000 X10000 X10000 X10000 X10000 X10000 X10000 X10000 X10000 X10000 - SELF_CHECK (string_printf ("%s", X10) == X10); - SELF_CHECK (string_printf ("%s", X100) == X100); - SELF_CHECK (string_printf ("%s", X1000) == X1000); - SELF_CHECK (string_printf ("%s", X10000) == X10000); - SELF_CHECK (string_printf ("%s", X100000) == X100000); + SELF_CHECK (func ("%s", X10) == X10); + SELF_CHECK (func ("%s", X100) == X100); + SELF_CHECK (func ("%s", X1000) == X1000); + SELF_CHECK (func ("%s", X10000) == X10000); + SELF_CHECK (func ("%s", X100000) == X100000); +} + +static void +string_printf_tests () +{ + test_format_func (string_printf); } static std::string @@ -55,12 +73,7 @@ format (const char *fmt, ...) static void string_vprintf_tests () { - /* Basic smoke tests. */ - SELF_CHECK (format ("%s", "test") == "test"); - SELF_CHECK (format ("%d", 23) == "23"); - SELF_CHECK (format ("%s %d %s", "test", 23, "done") - == "test 23 done"); - SELF_CHECK (format ("nothing") == "nothing"); + test_format_func (format); } } /* namespace selftests */