]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Refactor strtod tests
authorRajalakshmi Srinivasaraghavan <raji@linux.vnet.ibm.com>
Tue, 30 Aug 2016 06:13:21 +0000 (11:43 +0530)
committerGabriel F. T. Gomes <gftg@linux.vnet.ibm.com>
Tue, 25 Oct 2016 19:05:47 +0000 (17:05 -0200)
This patch changes strtod* tests to use strfrom* functions.

ChangeLog
stdlib/bug-strtod.c
stdlib/bug-strtod2.c
stdlib/tst-strtod-round-skeleton.c
stdlib/tst-strtod.h
stdlib/tst-strtod6.c

index 94a10af1960686b470bb8f606c7b3343896103f2..dd48055546a35063ca83041fff74f38d41388a3a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2016-10-25  Rajalakshmi Srinivasaraghavan  <raji@linux.vnet.ibm.com>
+
+       * stdlib/bug-strtod.c: Refactor based on GEN_TEST_STRTOD_FOREACH.
+       * stdlib/bug-strtod2.c: Likewise.
+       * stdlib/tst-strtod-round-skeleton.c: Likewise.
+       * stdlib/tst-strtod6.c: Likewise.
+       * stdlib/tst-strtod.h (GEN_TEST_STRTOD_FOREACH): Use strfrom.
+
 2016-10-25  Gabriel F. T. Gomes  <gftg@linux.vnet.ibm.com>
 
        * NEWS: Mention the addition of strfromd, strfromf, and strfroml.
index c8b56aa7e1c3006db6a63cf3a0498fb88d9f9723..ac5193e4ede827db0a04bfbfc0026002b0994a8e 100644 (file)
@@ -23,7 +23,7 @@
 
 #include "tst-strtod.h"
 
-#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, FTOSTRM, LSUF, CSUF)          \
+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF)                   \
 static int                                                             \
 test_strto ## FSUF (void)                                              \
 {                                                                      \
@@ -45,8 +45,8 @@ test_strto ## FSUF (void)                                             \
        {                                                               \
          char fstr[FSTRLENMAX];                                        \
          char fcntstr[FSTRLENMAX];                                     \
-         FTOSTR (fstr, sizeof (fstr), "%" FTOSTRM "g", f);             \
-         FTOSTR (fcntstr, sizeof (fstr), "%" FTOSTRM "g", (FTYPE) cnt); \
+         FTOSTR (fstr, sizeof (fstr), "%g", f);                        \
+         FTOSTR (fcntstr, sizeof (fstr), "%g", (FTYPE) cnt);           \
          printf ("strto" #FSUF "(\"%s\") "                             \
                  "failed for cnt == %d (%s instead of %s)\n",          \
                  buf, cnt, fstr, fcntstr);                             \
index cd13e9aa5beae5d9d77798cf68d63841fa943d84..6128f2dd56710c7fafd4848a74fd60bca2cfb2e5 100644 (file)
@@ -12,7 +12,7 @@ static const char *tests[] =
   };
 #define ntests (sizeof (tests) / sizeof (tests[0]))
 
-#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, FTOSTRM, LSUF, CSUF)          \
+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF)                   \
 static int                                                             \
 test_strto ## FSUF (void)                                              \
 {                                                                      \
index 1853c529c230e34bcc1367a415810233eebc0dee..2e99dbdc21542b0831b6ab6c9b1cf73dff1106a9 100644 (file)
 
 /* Generator to create an FTYPE member variabled named FSUF
    used to populate struct member variables.  */
-#define FTYPE_MEMBER(FSUF, FTYPE, FTOSTR, FTOSTRM, LSUF, CSUF)  \
+#define FTYPE_MEMBER(FSUF, FTYPE, FTOSTR, LSUF, CSUF)  \
        FTYPE FSUF;
 
 /* Likewise, but each member is of type bool.  */
-#define BOOL_MEMBER(FSUF, FTYPE, FTOSTR, FTOSTRM, LSUF, CSUF)  \
+#define BOOL_MEMBER(FSUF, FTYPE, FTOSTR, LSUF, CSUF)  \
        bool FSUF;
 
 #define STRUCT_FOREACH_FLOAT_FTYPE GEN_TEST_STRTOD_FOREACH (FTYPE_MEMBER)
 /* long double is special, and handled above.  */
 
 /* Selector for expected result field of a given type.  */
-#define _ENTRY(FSUF, FTYPE, FTOSTR, FTOSTRM, LSUF, CSUF, ...)  \
+#define _ENTRY(FSUF, FTYPE, FTOSTR, LSUF, CSUF, ...)  \
   CONCAT (CHOOSE_ ## FSUF (__VA_ARGS__), LSUF),
 #define ENTRY(...) \
   GEN_TEST_STRTOD_FOREACH (_ENTRY, __VA_ARGS__)
 
 /* Selector for boolean exact tag of expected results.  */
-#define _XNTRY(FSUF, FTYPE, FTOSTR, FTOSTRM, LSUF, CSUF, ...)  \
+#define _XNTRY(FSUF, FTYPE, FTOSTR, LSUF, CSUF, ...)  \
   CHOOSE_ ## FSUF (__VA_ARGS__),
 #define XNTRY(...) \
   GEN_TEST_STRTOD_FOREACH (_XNTRY, __VA_ARGS__)
@@ -157,21 +157,19 @@ struct test {
 #define STR(x) STRX (x)
 #define FNPFXS STR (FNPFX)
 
-#define GEN_ONE_TEST(FSUF, FTYPE, FTOSTR, FTOSTRM, LSUF, CSUF) \
+#define GEN_ONE_TEST(FSUF, FTYPE, FTOSTR, LSUF, CSUF)          \
 {                                                              \
   FTYPE f = STRTO (FSUF) (s, NULL);                            \
   if (f != expected->FSUF                                      \
       || (copysign ## CSUF) (1.0 ## LSUF, f)                   \
         != (copysign ## CSUF) (1.0 ## LSUF, expected->FSUF))   \
     {                                                          \
-      CHAR efstr[FSTRLENMAX];                                  \
-      CHAR fstr[FSTRLENMAX];                                   \
-      FTOSTR (efstr, FSTRLENMAX, L_("%") L_(FTOSTRM) L_("a"),   \
-             expected->FSUF);                                  \
-      FTOSTR (fstr, FSTRLENMAX, L_("%") L_(FTOSTRM) L_("a"), f);\
-      printf (FNPFXS "to" #FSUF  " (" STRM ") returned " STRM   \
-             " not " STRM " (%s)\n",                           \
-             s, fstr, efstr, mode_name);                       \
+      char efstr[FSTRLENMAX];                                  \
+      char fstr[FSTRLENMAX];                                   \
+      FTOSTR (efstr, FSTRLENMAX, "%a", expected->FSUF);                \
+      FTOSTR (fstr, FSTRLENMAX, "%a", f);                      \
+      printf (FNPFXS "to" #FSUF  " (" STRM ") returned %s not "        \
+             "%s (%s)\n", s, fstr, efstr, mode_name);          \
       if (ROUNDING_TESTS (FTYPE, rnd_mode) || exact->FSUF)     \
        result = 1;                                             \
       else                                                     \
index 607cf393aaf2faf69559783a4d44ea5770b6d220..b8e9cd4a3404e9d50690f2ccbf517eb500983297 100644 (file)
 
 /* Splat n variants of the same test for the various strtod functions.  */
 #define GEN_TEST_STRTOD_FOREACH(mfunc, ...)                     \
-    mfunc (  f,       float, snprintf,  "", f, f, ##__VA_ARGS__) \
-    mfunc (  d,      double, snprintf,  "",  ,  , ##__VA_ARGS__) \
-    mfunc ( ld, long double, snprintf, "L", L, l, ##__VA_ARGS__)
+    mfunc (  f,       float, strfromf, f, f, ##__VA_ARGS__)     \
+    mfunc (  d,      double, strfromd,  ,  , ##__VA_ARGS__)     \
+    mfunc ( ld, long double, strfroml, L, l, ##__VA_ARGS__)
 /* The arguments to the generated macros are:
    FSUF - Function suffix
    FTYPE - float type
    FTOSTR - float to string func
-   FTOSTRM - Optional modifier for FTOSTR format
    LSUF - Literal suffix
    CSUF - C standardish suffix for many of the math functions
 */
index 6b3bb8404e1d32e52537d59dafb00e8c781f4fc3..9bfbdc2b38288a40be75e8dc60421b92a21a8d22 100644 (file)
@@ -5,7 +5,7 @@
 
 #include "tst-strtod.h"
 
-#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, FTOSTRM, LSUF, CSUF) \
+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF)     \
 static int                                               \
 test_strto ## FSUF (const char str[])                    \
 {                                                        \