# include <config.h>
#endif
-#include "vasprintf.h"
+#include <stdio.h>
#include <stdarg.h>
#include <stddef.h>
#define ASSERT(expr) if (!(expr)) abort ();
+/* The Compaq (ex-DEC) C 6.4 compiler chokes on the expression 0.0 / 0.0. */
+#ifdef __DECC
+static double
+NaN ()
+{
+ static double zero = 0.0;
+ return zero / zero;
+}
+#else
+# define NaN() (0.0 / 0.0)
+#endif
+
static void
test_function (int (*my_asprintf) (char **, const char *, ...))
{
free (result);
}
-#if HAVE_LONG_DOUBLE
{
char *result;
int retval =
ASSERT (retval == strlen (result));
free (result);
}
-#endif
/* Test the support of the 'a' and 'A' conversion specifier for hexadecimal
output of floating-point numbers. */
{ /* NaN. */
char *result;
int retval =
- my_asprintf (&result, "%a %d", 0.0 / 0.0, 33, 44, 55);
+ my_asprintf (&result, "%a %d", NaN (), 33, 44, 55);
ASSERT (result != NULL);
ASSERT (strcmp (result, "nan 33") == 0);
ASSERT (retval == strlen (result));
int retval =
my_asprintf (&result, "%010a %d", 1.0 / 0.0, 33, 44, 55);
ASSERT (result != NULL);
+ /* "0000000inf 33" is not a valid result; see
+ <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
ASSERT (strcmp (result, " inf 33") == 0);
ASSERT (retval == strlen (result));
free (result);
{ /* FLAG_ZERO with NaN. */
char *result;
int retval =
- my_asprintf (&result, "%010a %d", 0.0 / 0.0, 33, 44, 55);
+ my_asprintf (&result, "%010a %d", NaN (), 33, 44, 55);
ASSERT (result != NULL);
+ /* "0000000nan 33" is not a valid result; see
+ <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
ASSERT (strcmp (result, " nan 33") == 0);
ASSERT (retval == strlen (result));
free (result);
}
-#if HAVE_LONG_DOUBLE
-
{ /* A positive number. */
char *result;
int retval =
int retval =
my_asprintf (&result, "%010La %d", 1.0L / 0.0L, 33, 44, 55);
ASSERT (result != NULL);
+ /* "0000000inf 33" is not a valid result; see
+ <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
ASSERT (strcmp (result, " inf 33") == 0);
ASSERT (retval == strlen (result));
free (result);
int retval =
my_asprintf (&result, "%010La %d", 0.0L / 0.0L, 33, 44, 55);
ASSERT (result != NULL);
+ /* "0000000nan 33" is not a valid result; see
+ <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
ASSERT (strcmp (result, " nan 33") == 0);
ASSERT (retval == strlen (result));
free (result);
}
-#endif
-
/* Test the support of the %n format directive. */
{