diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | stdlib/bug-strtod2.c | 47 |
2 files changed, 35 insertions, 18 deletions
@@ -1,5 +1,11 @@ 2016-05-23 Paul E. Murphy <murphyp@linux.vnet.ibm.com> + * 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 <murphyp@linux.vnet.ibm.com> + * stdlib/tst-strtod6.c (do_test): Use new type generic invocation of the test function. (test): Refactor into ... 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 <stdio.h> #include <stdlib.h> +#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 () |