Remove 'grp' and merge into 'nss' and 'posix'
[platform/upstream/glibc.git] / stdlib / tst-strtod6.c
1 #include <math.h>
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <string.h>
5
6 #include "tst-strtod.h"
7
8 #define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF)      \
9 static int                                                \
10 test_strto ## FSUF (const char str[])                     \
11 {                                                         \
12   char *endp;                                             \
13   int result = 0;                                         \
14   puts (str);                                             \
15   FTYPE d = strto ## FSUF (str, &endp);                   \
16   if (!isnan (d))                                         \
17     {                                                     \
18       puts ("strto" #FSUF " did not return NAN");         \
19       result = 1;                                         \
20     }                                                     \
21   if (issignaling (d))                                    \
22     {                                                     \
23       puts ("strto" #FSUF " returned a sNAN");            \
24       result = 1;                                         \
25     }                                                     \
26   if (strcmp (endp, "something") != 0)                    \
27     {                                                     \
28       puts ("strto" #FSUF " set incorrect end pointer");  \
29       result = 1;                                         \
30     }                                                     \
31   return result;                                          \
32 }
33
34 GEN_TEST_STRTOD_FOREACH (TEST_STRTOD);
35
36 static int
37 do_test (void)
38 {
39   int result = 0;
40
41   result |= STRTOD_TEST_FOREACH (test_strto, "NaN(blabla)something");
42   result |= STRTOD_TEST_FOREACH (test_strto, "NaN(1234)something");
43   /* UINT32_MAX.  */
44   result |= STRTOD_TEST_FOREACH (test_strto, "NaN(4294967295)something");
45   /* UINT64_MAX.  */
46   result |= STRTOD_TEST_FOREACH (test_strto,
47                                  "NaN(18446744073709551615)something");
48   /* The case of zero is special in that "something" has to be done to make the
49      mantissa different from zero, which would mean infinity instead of
50      NaN.  */
51   result |= STRTOD_TEST_FOREACH (test_strto, "NaN(0)something");
52
53   return result;
54 }
55
56 #define TEST_FUNCTION do_test ()
57 #include "../test-skeleton.c"