From: Paul E. Murphy Date: Fri, 6 May 2016 21:13:29 +0000 (-0500) Subject: Refactor bug-strtod2.c to be type generic X-Git-Tag: glibc-2.24~226 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b26053dd9a0170b58bb01226056e3140b1fb9911;p=thirdparty%2Fglibc.git Refactor bug-strtod2.c to be type generic This only tested for strtod. This expands the testing to all variants of strto*. --- diff --git a/ChangeLog b/ChangeLog index de34b56c9dd..d75680389fa 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 a1f037cdc8d..cd13e9aa5be 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 ()