X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=tests%2Ftest-vasprintf-posix.c;h=2f3c318a3b4af65c5baff1282906209b4d8cb58a;hb=9f88c0b0e0cfa8a9c25f1db4f58b837c7b891575;hp=5b4389127c6ebee0760937411be35c10d86a4eb9;hpb=55cd56d88a0c6e000b575aa79a5be6a7790ba785;p=gnulib.git diff --git a/tests/test-vasprintf-posix.c b/tests/test-vasprintf-posix.c index 5b4389127..2f3c318a3 100644 --- a/tests/test-vasprintf-posix.c +++ b/tests/test-vasprintf-posix.c @@ -21,7 +21,7 @@ # include #endif -#include "vasprintf.h" +#include #include #include @@ -31,6 +31,18 @@ #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 *, ...)) { @@ -80,7 +92,6 @@ test_function (int (*my_asprintf) (char **, const char *, ...)) free (result); } -#if HAVE_LONG_DOUBLE { char *result; int retval = @@ -90,7 +101,6 @@ test_function (int (*my_asprintf) (char **, const char *, ...)) ASSERT (retval == strlen (result)); free (result); } -#endif /* Test the support of the 'a' and 'A' conversion specifier for hexadecimal output of floating-point numbers. */ @@ -164,7 +174,7 @@ test_function (int (*my_asprintf) (char **, const char *, ...)) { /* 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)); @@ -385,7 +395,8 @@ test_function (int (*my_asprintf) (char **, const char *, ...)) int retval = my_asprintf (&result, "%010a %d", 1.0 / 0.0, 33, 44, 55); ASSERT (result != NULL); - ASSERT (strcmp (result, " inf 33") == 0); + ASSERT (strcmp (result, " inf 33") == 0 + || strcmp (result, "0000000inf 33") == 0); ASSERT (retval == strlen (result)); free (result); } @@ -393,15 +404,14 @@ test_function (int (*my_asprintf) (char **, const char *, ...)) { /* 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); - ASSERT (strcmp (result, " nan 33") == 0); + ASSERT (strcmp (result, " nan 33") == 0 + || strcmp (result, "0000000nan 33") == 0); ASSERT (retval == strlen (result)); free (result); } -#if HAVE_LONG_DOUBLE - { /* A positive number. */ char *result; int retval = @@ -693,7 +703,8 @@ test_function (int (*my_asprintf) (char **, const char *, ...)) int retval = my_asprintf (&result, "%010La %d", 1.0L / 0.0L, 33, 44, 55); ASSERT (result != NULL); - ASSERT (strcmp (result, " inf 33") == 0); + ASSERT (strcmp (result, " inf 33") == 0 + || strcmp (result, "0000000inf 33") == 0); ASSERT (retval == strlen (result)); free (result); } @@ -703,13 +714,12 @@ test_function (int (*my_asprintf) (char **, const char *, ...)) int retval = my_asprintf (&result, "%010La %d", 0.0L / 0.0L, 33, 44, 55); ASSERT (result != NULL); - ASSERT (strcmp (result, " nan 33") == 0); + ASSERT (strcmp (result, " nan 33") == 0 + || strcmp (result, "0000000nan 33") == 0); ASSERT (retval == strlen (result)); free (result); } -#endif - /* Test the support of the %n format directive. */ {