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*. --- stdlib/bug-strtod2.c | 47 +++++++++++++++++++++++++++++------------------ 1 file changed, 29 insertions(+), 18 deletions(-) (limited to 'stdlib') diff --git a/stdlib/bug-strtod2.c b/stdlib/bug-strtod2.c index a1f037c..cd13e9a 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.1