strtoumax: fix typo in previous commit.
[gnulib.git] / tests / test-vasnprintf.c
index 488e93f..4cce0a9 100644 (file)
@@ -1,10 +1,10 @@
 /* Test of vasnprintf() and asnprintf() functions.
-   Copyright (C) 2007 Free Software Foundation, Inc.
+   Copyright (C) 2007-2013 Free Software Foundation, Inc.
 
-   This program is free software; you can redistribute it and/or modify
+   This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -12,8 +12,7 @@
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* Written by Bruno Haible <bruno@clisp.org>, 2007.  */
 
 #include "vasnprintf.h"
 
 #include <stdarg.h>
-#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 
-#define ASSERT(expr) \
-  do                                                                        \
-    {                                                                       \
-      if (!(expr))                                                          \
-        {                                                                   \
-          fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
-          abort ();                                                         \
-        }                                                                   \
-    }                                                                       \
-  while (0)
-
-static char *
-my_asnprintf (char *resultbuf, size_t *lengthp, const char *format, ...)
-{
-  va_list args;
-  char *ret;
-
-  va_start (args, format);
-  ret = vasnprintf (resultbuf, lengthp, format, args);
-  va_end (args);
-  return ret;
-}
+#include "macros.h"
 
 static void
-test_vasnprintf ()
+test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...))
 {
   char buf[8];
   int size;
@@ -77,46 +54,35 @@ test_vasnprintf ()
       ASSERT (strcmp (result, "12345") == 0);
       ASSERT (length == 5);
       if (size < 6)
-       ASSERT (result != buf);
-      ASSERT (memcmp (buf + size, "DEADBEEF" + size, 8 - size) == 0);
+        ASSERT (result != buf);
+      ASSERT (memcmp (buf + size, &"DEADBEEF"[size], 8 - size) == 0);
       if (result != buf)
-       free (result);
+        free (result);
     }
 }
 
-static void
-test_asnprintf ()
+static char *
+my_asnprintf (char *resultbuf, size_t *lengthp, const char *format, ...)
 {
-  char buf[8];
-  int size;
+  va_list args;
+  char *ret;
 
-  for (size = 0; size <= 8; size++)
-    {
-      size_t length = size;
-      char *result = asnprintf (NULL, &length, "%d", 12345);
-      ASSERT (result != NULL);
-      ASSERT (strcmp (result, "12345") == 0);
-      ASSERT (length == 5);
-      free (result);
-    }
+  va_start (args, format);
+  ret = vasnprintf (resultbuf, lengthp, format, args);
+  va_end (args);
+  return ret;
+}
 
-  for (size = 0; size <= 8; size++)
-    {
-      size_t length;
-      char *result;
+static void
+test_vasnprintf ()
+{
+  test_function (my_asnprintf);
+}
 
-      memcpy (buf, "DEADBEEF", 8);
-      length = size;
-      result = asnprintf (buf, &length, "%d", 12345);
-      ASSERT (result != NULL);
-      ASSERT (strcmp (result, "12345") == 0);
-      ASSERT (length == 5);
-      if (size < 6)
-       ASSERT (result != buf);
-      ASSERT (memcmp (buf + size, "DEADBEEF" + size, 8 - size) == 0);
-      if (result != buf)
-       free (result);
-    }
+static void
+test_asnprintf ()
+{
+  test_function (asnprintf);
 }
 
 int