From patchwork Thu Sep 22 16:13:51 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gabriel F T Gomes X-Patchwork-Id: 15932 Received: (qmail 43526 invoked by alias); 22 Sep 2016 16:14:01 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 43506 invoked by uid 89); 22 Sep 2016 16:14:01 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.5 required=5.0 tests=AWL, BAYES_00, KAM_LAZY_DOMAIN_SECURITY, RCVD_IN_DNSWL_LOW autolearn=no version=3.3.2 spammy=Splat X-HELO: mx0a-001b2d01.pphosted.com From: "Gabriel F. T. Gomes" To: libc-alpha@sourceware.org Cc: joseph@codesourcery.com Subject: [PATCH v4 2/3] Refactor strtod tests Date: Thu, 22 Sep 2016 13:13:51 -0300 In-Reply-To: <1474560832-13563-1-git-send-email-gftg@linux.vnet.ibm.com> References: <1474560832-13563-1-git-send-email-gftg@linux.vnet.ibm.com> X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 16092216-1523-0000-0000-0000022E29C8 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 16092216-1524-0000-0000-000028B778F2 Message-Id: <1474560832-13563-3-git-send-email-gftg@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2016-09-22_08:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=1 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1609020000 definitions=main-1609220289 From: Rajalakshmi Srinivasaraghavan This patch changes strtod* tests to use strfrom* functions. 2016-08-30 Rajalakshmi Srinivasaraghavan * stdlib/bug-strtod.c: Refactor based on GEN_TEST_STRTOD_FOREACH. * stdlib/bug-strtod2.c: Likewise. * stdlib/tst-strtod-round-skeleton.c: Likewise. * stdlib/tst-strtod6.c: Likewise. * stdlib/tst-strtod.h (GEN_TEST_STRTOD_FOREACH): Use strfrom. --- stdlib/bug-strtod.c | 6 +++--- stdlib/bug-strtod2.c | 2 +- stdlib/tst-strtod-round-skeleton.c | 24 +++++++++++------------- stdlib/tst-strtod.h | 7 +++---- stdlib/tst-strtod6.c | 2 +- 5 files changed, 19 insertions(+), 22 deletions(-) diff --git a/stdlib/bug-strtod.c b/stdlib/bug-strtod.c index c8b56aa..ac5193e 100644 --- a/stdlib/bug-strtod.c +++ b/stdlib/bug-strtod.c @@ -23,7 +23,7 @@ #include "tst-strtod.h" -#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, FTOSTRM, LSUF, CSUF) \ +#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \ static int \ test_strto ## FSUF (void) \ { \ @@ -45,8 +45,8 @@ test_strto ## FSUF (void) \ { \ char fstr[FSTRLENMAX]; \ char fcntstr[FSTRLENMAX]; \ - FTOSTR (fstr, sizeof (fstr), "%" FTOSTRM "g", f); \ - FTOSTR (fcntstr, sizeof (fstr), "%" FTOSTRM "g", (FTYPE) cnt); \ + FTOSTR (fstr, sizeof (fstr), "%g", f); \ + FTOSTR (fcntstr, sizeof (fstr), "%g", (FTYPE) cnt); \ printf ("strto" #FSUF "(\"%s\") " \ "failed for cnt == %d (%s instead of %s)\n", \ buf, cnt, fstr, fcntstr); \ diff --git a/stdlib/bug-strtod2.c b/stdlib/bug-strtod2.c index cd13e9a..6128f2d 100644 --- a/stdlib/bug-strtod2.c +++ b/stdlib/bug-strtod2.c @@ -12,7 +12,7 @@ static const char *tests[] = }; #define ntests (sizeof (tests) / sizeof (tests[0])) -#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, FTOSTRM, LSUF, CSUF) \ +#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \ static int \ test_strto ## FSUF (void) \ { \ diff --git a/stdlib/tst-strtod-round-skeleton.c b/stdlib/tst-strtod-round-skeleton.c index 1853c52..2e99dbd 100644 --- a/stdlib/tst-strtod-round-skeleton.c +++ b/stdlib/tst-strtod-round-skeleton.c @@ -58,11 +58,11 @@ /* Generator to create an FTYPE member variabled named FSUF used to populate struct member variables. */ -#define FTYPE_MEMBER(FSUF, FTYPE, FTOSTR, FTOSTRM, LSUF, CSUF) \ +#define FTYPE_MEMBER(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \ FTYPE FSUF; /* Likewise, but each member is of type bool. */ -#define BOOL_MEMBER(FSUF, FTYPE, FTOSTR, FTOSTRM, LSUF, CSUF) \ +#define BOOL_MEMBER(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \ bool FSUF; #define STRUCT_FOREACH_FLOAT_FTYPE GEN_TEST_STRTOD_FOREACH (FTYPE_MEMBER) @@ -96,13 +96,13 @@ /* long double is special, and handled above. */ /* Selector for expected result field of a given type. */ -#define _ENTRY(FSUF, FTYPE, FTOSTR, FTOSTRM, LSUF, CSUF, ...) \ +#define _ENTRY(FSUF, FTYPE, FTOSTR, LSUF, CSUF, ...) \ CONCAT (CHOOSE_ ## FSUF (__VA_ARGS__), LSUF), #define ENTRY(...) \ GEN_TEST_STRTOD_FOREACH (_ENTRY, __VA_ARGS__) /* Selector for boolean exact tag of expected results. */ -#define _XNTRY(FSUF, FTYPE, FTOSTR, FTOSTRM, LSUF, CSUF, ...) \ +#define _XNTRY(FSUF, FTYPE, FTOSTR, LSUF, CSUF, ...) \ CHOOSE_ ## FSUF (__VA_ARGS__), #define XNTRY(...) \ GEN_TEST_STRTOD_FOREACH (_XNTRY, __VA_ARGS__) @@ -157,21 +157,19 @@ struct test { #define STR(x) STRX (x) #define FNPFXS STR (FNPFX) -#define GEN_ONE_TEST(FSUF, FTYPE, FTOSTR, FTOSTRM, LSUF, CSUF) \ +#define GEN_ONE_TEST(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \ { \ FTYPE f = STRTO (FSUF) (s, NULL); \ if (f != expected->FSUF \ || (copysign ## CSUF) (1.0 ## LSUF, f) \ != (copysign ## CSUF) (1.0 ## LSUF, expected->FSUF)) \ { \ - CHAR efstr[FSTRLENMAX]; \ - CHAR fstr[FSTRLENMAX]; \ - FTOSTR (efstr, FSTRLENMAX, L_("%") L_(FTOSTRM) L_("a"), \ - expected->FSUF); \ - FTOSTR (fstr, FSTRLENMAX, L_("%") L_(FTOSTRM) L_("a"), f);\ - printf (FNPFXS "to" #FSUF " (" STRM ") returned " STRM \ - " not " STRM " (%s)\n", \ - s, fstr, efstr, mode_name); \ + char efstr[FSTRLENMAX]; \ + char fstr[FSTRLENMAX]; \ + FTOSTR (efstr, FSTRLENMAX, "%a", expected->FSUF); \ + FTOSTR (fstr, FSTRLENMAX, "%a", f); \ + printf (FNPFXS "to" #FSUF " (" STRM ") returned %s not " \ + "%s (%s)\n", s, fstr, efstr, mode_name); \ if (ROUNDING_TESTS (FTYPE, rnd_mode) || exact->FSUF) \ result = 1; \ else \ diff --git a/stdlib/tst-strtod.h b/stdlib/tst-strtod.h index 607cf39..b8e9cd4 100644 --- a/stdlib/tst-strtod.h +++ b/stdlib/tst-strtod.h @@ -23,14 +23,13 @@ /* Splat n variants of the same test for the various strtod functions. */ #define GEN_TEST_STRTOD_FOREACH(mfunc, ...) \ - mfunc ( f, float, snprintf, "", f, f, ##__VA_ARGS__) \ - mfunc ( d, double, snprintf, "", , , ##__VA_ARGS__) \ - mfunc ( ld, long double, snprintf, "L", L, l, ##__VA_ARGS__) + mfunc ( f, float, strfromf, f, f, ##__VA_ARGS__) \ + mfunc ( d, double, strfromd, , , ##__VA_ARGS__) \ + mfunc ( ld, long double, strfroml, L, l, ##__VA_ARGS__) /* The arguments to the generated macros are: FSUF - Function suffix FTYPE - float type FTOSTR - float to string func - FTOSTRM - Optional modifier for FTOSTR format LSUF - Literal suffix CSUF - C standardish suffix for many of the math functions */ diff --git a/stdlib/tst-strtod6.c b/stdlib/tst-strtod6.c index 6b3bb84..9bfbdc2 100644 --- a/stdlib/tst-strtod6.c +++ b/stdlib/tst-strtod6.c @@ -5,7 +5,7 @@ #include "tst-strtod.h" -#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, FTOSTRM, LSUF, CSUF) \ +#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \ static int \ test_strto ## FSUF (const char str[]) \ { \