mirror of
git://sourceware.org/git/glibc.git
synced 2025-03-25 13:51:04 +08:00
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:
parent
dba0832af1
commit
b26053dd9a
@ -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
|
||||
|
@ -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 ()
|
||||
|
Loading…
x
Reference in New Issue
Block a user