Mercurial > hg > octave-lojdl > gnulib-hg
diff tests/test-vasprintf-posix.c @ 8852:df0b5e8ea770
Avoid test failures on platforms where -0.0 and 0.0 are identical.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Sat, 19 May 2007 22:57:58 +0000 |
parents | d1fe16dfbfee |
children | 61fd30fa9b3f |
line wrap: on
line diff
--- a/tests/test-vasprintf-posix.c +++ b/tests/test-vasprintf-posix.c @@ -54,6 +54,15 @@ # define NaN() (0.0 / 0.0) #endif +/* The SGI MIPS floating-point format does not distinguish 0.0 and -0.0. */ +static int +have_minus_zero () +{ + static double plus_zero = 0.0; + static double minus_zero = -0.0; + return memcmp (&plus_zero, &minus_zero, sizeof (double)) != 0; +} + static int strmatch (const char *pattern, const char *string) { @@ -168,7 +177,8 @@ int retval = my_asprintf (&result, "%a %d", -0.0, 33, 44, 55); ASSERT (result != NULL); - ASSERT (strcmp (result, "-0x0p+0 33") == 0); + if (have_minus_zero ()) + ASSERT (strcmp (result, "-0x0p+0 33") == 0); ASSERT (retval == strlen (result)); free (result); } @@ -481,7 +491,8 @@ int retval = my_asprintf (&result, "%La %d", -0.0L, 33, 44, 55); ASSERT (result != NULL); - ASSERT (strcmp (result, "-0x0p+0 33") == 0); + if (have_minus_zero ()) + ASSERT (strcmp (result, "-0x0p+0 33") == 0); ASSERT (retval == strlen (result)); free (result); } @@ -892,7 +903,8 @@ int retval = my_asprintf (&result, "%f %d", -0.0, 33, 44, 55); ASSERT (result != NULL); - ASSERT (strcmp (result, "-0.000000 33") == 0); + if (have_minus_zero ()) + ASSERT (strcmp (result, "-0.000000 33") == 0); ASSERT (retval == strlen (result)); free (result); } @@ -1170,7 +1182,8 @@ int retval = my_asprintf (&result, "%Lf %d", -0.0L, 33, 44, 55); ASSERT (result != NULL); - ASSERT (strcmp (result, "-0.000000 33") == 0); + if (have_minus_zero ()) + ASSERT (strcmp (result, "-0.000000 33") == 0); ASSERT (retval == strlen (result)); free (result); } @@ -1361,7 +1374,8 @@ int retval = my_asprintf (&result, "%F %d", -0.0, 33, 44, 55); ASSERT (result != NULL); - ASSERT (strcmp (result, "-0.000000 33") == 0); + if (have_minus_zero ()) + ASSERT (strcmp (result, "-0.000000 33") == 0); ASSERT (retval == strlen (result)); free (result); } @@ -1476,7 +1490,8 @@ int retval = my_asprintf (&result, "%LF %d", -0.0L, 33, 44, 55); ASSERT (result != NULL); - ASSERT (strcmp (result, "-0.000000 33") == 0); + if (have_minus_zero ()) + ASSERT (strcmp (result, "-0.000000 33") == 0); ASSERT (retval == strlen (result)); free (result); } @@ -1697,8 +1712,9 @@ int retval = my_asprintf (&result, "%e %d", -0.0, 33, 44, 55); ASSERT (result != NULL); - ASSERT (strcmp (result, "-0.000000e+00 33") == 0 - || strcmp (result, "-0.000000e+000 33") == 0); + if (have_minus_zero ()) + ASSERT (strcmp (result, "-0.000000e+00 33") == 0 + || strcmp (result, "-0.000000e+000 33") == 0); ASSERT (retval == strlen (result)); free (result); } @@ -1995,7 +2011,8 @@ int retval = my_asprintf (&result, "%Le %d", -0.0L, 33, 44, 55); ASSERT (result != NULL); - ASSERT (strcmp (result, "-0.000000e+00 33") == 0); + if (have_minus_zero ()) + ASSERT (strcmp (result, "-0.000000e+00 33") == 0); ASSERT (retval == strlen (result)); free (result); } @@ -2297,7 +2314,8 @@ int retval = my_asprintf (&result, "%g %d", -0.0, 33, 44, 55); ASSERT (result != NULL); - ASSERT (strcmp (result, "-0 33") == 0); + if (have_minus_zero ()) + ASSERT (strcmp (result, "-0 33") == 0); ASSERT (retval == strlen (result)); free (result); } @@ -2587,7 +2605,8 @@ int retval = my_asprintf (&result, "%Lg %d", -0.0L, 33, 44, 55); ASSERT (result != NULL); - ASSERT (strcmp (result, "-0 33") == 0); + if (have_minus_zero ()) + ASSERT (strcmp (result, "-0 33") == 0); ASSERT (retval == strlen (result)); free (result); }