From b26053dd9a0170b58bb01226056e3140b1fb9911 Mon Sep 17 00:00:00 2001 From: "Paul E. Murphy" Date: Fri, 6 May 2016 16:13:29 -0500 Subject: Refactor bug-strtod2.c to be type generic This only tested for strtod. This expands the testing to all variants of strto*. --- ChangeLog | 6 ++++++ stdlib/bug-strtod2.c | 47 +++++++++++++++++++++++++++++------------------ 2 files changed, 35 insertions(+), 18 deletions(-) diff --git a/ChangeLog b/ChangeLog index de34b56c9d..d75680389f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2016-05-23 Paul E. Murphy + + * stdlib/bug-strtod2.c (do_test): Refactor strtod usage into ... + (TEST_STRTOD): New macro. + (TEST_FUNCTION): Redefine to use STRTOD_TEST_FOREACH + 2016-05-23 Paul E. Murphy * stdlib/tst-strtod6.c (do_test): Use new type generic diff --git a/stdlib/bug-strtod2.c b/stdlib/bug-strtod2.c index a1f037cdc8..cd13e9aa5b 100644 --- a/stdlib/bug-strtod2.c +++ b/stdlib/bug-strtod2.c @@ -3,6 +3,8 @@ #include #include +#include "tst-strtod.h" + static const char *tests[] = { "inf", "Inf", "iNf", "inF", "INf", "iNF", "INF", "InF", @@ -10,6 +12,32 @@ static const char *tests[] = }; #define ntests (sizeof (tests) / sizeof (tests[0])) +#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, FTOSTRM, LSUF, CSUF) \ +static int \ +test_strto ## FSUF (void) \ +{ \ + int res = 0; \ + for (int i = 0; i < ntests; ++i) \ + { \ + char *endp; \ + FTYPE d = strto ## FSUF (tests[i], &endp); \ + if (*endp != '\0') \ + { \ + printf ("did not consume all of '%s'\n", tests[i]); \ + res = 1; \ + } \ + if (!isinf (d)) \ + { \ + printf ("'%s' does not pass isinf\n", tests[i]); \ + res = 1; \ + } \ + } \ + \ + return res; \ +} + +GEN_TEST_STRTOD_FOREACH (TEST_STRTOD) + static int do_test (void) { @@ -22,24 +50,7 @@ do_test (void) return 0; } - int res = 0; - for (int i = 0; i < ntests; ++i) - { - char *endp; - double d = strtod (tests[i], &endp); - if (*endp != '\0') - { - printf ("did not consume all of '%s'\n", tests[i]); - res = 1; - } - if (!isinf (d)) - { - printf ("'%s' does not pass isinf\n", tests[i]); - res = 1; - } - } - - return res; + return STRTOD_TEST_FOREACH (test_strto); } #define TEST_FUNCTION do_test () -- cgit v1.2.3