Refactor bug-strtod2.c to be type generic

This only tested for strtod. This expands the testing to
all variants of strto*.
This commit is contained in:
Paul E. Murphy 2016-05-06 16:13:29 -05:00
parent dba0832af1
commit b26053dd9a
2 changed files with 35 additions and 18 deletions

View File

@ -1,3 +1,9 @@
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

View File

@ -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 ()