X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=tests%2Ftest-vasnprintf-posix.c;h=4fd21c8836bbcf91efd530dc97a0edbc5d374432;hb=cd56634a4a8179fd5a4419fbb3e27211b042ab1c;hp=44f262fdcadf6d8a9784341face972352968bad5;hpb=ea98c65f5f6a100300e452a5a3ab800d566c41c4;p=gnulib.git diff --git a/tests/test-vasnprintf-posix.c b/tests/test-vasnprintf-posix.c index 44f262fdc..4fd21c883 100644 --- a/tests/test-vasnprintf-posix.c +++ b/tests/test-vasnprintf-posix.c @@ -1,5 +1,5 @@ /* Test of POSIX compatible vasnprintf() and asnprintf() functions. - Copyright (C) 2007-2010 Free Software Foundation, Inc. + Copyright (C) 2007-2014 Free Software Foundation, Inc. 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 @@ -30,6 +30,7 @@ #include "macros.h" #include "minus-zero.h" +#include "infinity.h" #include "nan.h" /* The SGI MIPS floating-point format does not distinguish 0.0 and -0.0. */ @@ -117,7 +118,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) ASSERT (length == 5); if (size < 6) ASSERT (result != buf); - ASSERT (memcmp (buf + size, "DEADBEEF" + size, 8 - size) == 0); + ASSERT (memcmp (buf + size, &"DEADBEEF"[size], 8 - size) == 0); if (result != buf) free (result); } @@ -217,7 +218,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) { /* Positive infinity. */ size_t length; char *result = - my_asnprintf (NULL, &length, "%a %d", 1.0 / 0.0, 33, 44, 55); + my_asnprintf (NULL, &length, "%a %d", Infinityd (), 33, 44, 55); ASSERT (result != NULL); ASSERT (strcmp (result, "inf 33") == 0); ASSERT (length == strlen (result)); @@ -227,7 +228,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) { /* Negative infinity. */ size_t length; char *result = - my_asnprintf (NULL, &length, "%a %d", -1.0 / 0.0, 33, 44, 55); + my_asnprintf (NULL, &length, "%a %d", - Infinityd (), 33, 44, 55); ASSERT (result != NULL); ASSERT (strcmp (result, "-inf 33") == 0); ASSERT (length == strlen (result)); @@ -251,7 +252,8 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) char *result = my_asnprintf (NULL, &length, "%.0a %d", 1.5, 33, 44, 55); ASSERT (result != NULL); - ASSERT (strcmp (result, "0x2p+0 33") == 0 + ASSERT (strcmp (result, "0x1p+0 33") == 0 + || strcmp (result, "0x2p+0 33") == 0 || strcmp (result, "0x3p-1 33") == 0 || strcmp (result, "0x6p-2 33") == 0 || strcmp (result, "0xcp-3 33") == 0); @@ -325,7 +327,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) } { /* Rounding can turn a ...FFF into a ...000. - This shows a MacOS X 10.3.9 (Darwin 7.9) bug. */ + This shows a Mac OS X 10.3.9 (Darwin 7.9) bug. */ size_t length; char *result = my_asnprintf (NULL, &length, "%.1a %d", 1.999, 33, 44, 55); @@ -458,7 +460,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) { /* FLAG_ZERO with infinite number. */ size_t length; char *result = - my_asnprintf (NULL, &length, "%010a %d", 1.0 / 0.0, 33, 44, 55); + my_asnprintf (NULL, &length, "%010a %d", Infinityd (), 33, 44, 55); ASSERT (result != NULL); /* "0000000inf 33" is not a valid result; see */ @@ -531,7 +533,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) { /* Positive infinity. */ size_t length; char *result = - my_asnprintf (NULL, &length, "%La %d", 1.0L / 0.0L, 33, 44, 55); + my_asnprintf (NULL, &length, "%La %d", Infinityl (), 33, 44, 55); ASSERT (result != NULL); ASSERT (strcmp (result, "inf 33") == 0); ASSERT (length == strlen (result)); @@ -541,7 +543,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) { /* Negative infinity. */ size_t length; char *result = - my_asnprintf (NULL, &length, "%La %d", -1.0L / 0.0L, 33, 44, 55); + my_asnprintf (NULL, &length, "%La %d", - Infinityl (), 33, 44, 55); ASSERT (result != NULL); ASSERT (strcmp (result, "-inf 33") == 0); ASSERT (length == strlen (result)); @@ -559,7 +561,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) ASSERT (length == strlen (result)); free (result); } -#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) +#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE { /* Quiet NaN. */ static union { unsigned int word[4]; long double value; } x = { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) }; @@ -740,7 +742,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) } { /* Rounding can turn a ...FFF into a ...000. - This shows a MacOS X 10.3.9 (Darwin 7.9) bug and a + This shows a Mac OS X 10.3.9 (Darwin 7.9) bug and a glibc 2.4 bug . */ size_t length; char *result = @@ -874,7 +876,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) { /* FLAG_ZERO with infinite number. */ size_t length; char *result = - my_asnprintf (NULL, &length, "%010La %d", 1.0L / 0.0L, 33, 44, 55); + my_asnprintf (NULL, &length, "%010La %d", Infinityl (), 33, 44, 55); ASSERT (result != NULL); /* "0000000inf 33" is not a valid result; see */ @@ -1044,7 +1046,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) { /* Positive infinity. */ size_t length; char *result = - my_asnprintf (NULL, &length, "%f %d", 1.0 / 0.0, 33, 44, 55); + my_asnprintf (NULL, &length, "%f %d", Infinityd (), 33, 44, 55); ASSERT (result != NULL); ASSERT (strcmp (result, "inf 33") == 0 || strcmp (result, "infinity 33") == 0); @@ -1055,7 +1057,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) { /* Negative infinity. */ size_t length; char *result = - my_asnprintf (NULL, &length, "%f %d", -1.0 / 0.0, 33, 44, 55); + my_asnprintf (NULL, &length, "%f %d", - Infinityd (), 33, 44, 55); ASSERT (result != NULL); ASSERT (strcmp (result, "-inf 33") == 0 || strcmp (result, "-infinity 33") == 0); @@ -1148,7 +1150,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) { /* FLAG_ZERO with infinite number. */ size_t length; char *result = - my_asnprintf (NULL, &length, "%015f %d", -1.0 / 0.0, 33, 44, 55); + my_asnprintf (NULL, &length, "%015f %d", - Infinityd (), 33, 44, 55); ASSERT (result != NULL); ASSERT (strcmp (result, " -inf 33") == 0 || strcmp (result, " -infinity 33") == 0); @@ -1343,7 +1345,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) { /* Positive infinity. */ size_t length; char *result = - my_asnprintf (NULL, &length, "%Lf %d", 1.0L / 0.0L, 33, 44, 55); + my_asnprintf (NULL, &length, "%Lf %d", Infinityl (), 33, 44, 55); ASSERT (result != NULL); ASSERT (strcmp (result, "inf 33") == 0 || strcmp (result, "infinity 33") == 0); @@ -1354,7 +1356,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) { /* Negative infinity. */ size_t length; char *result = - my_asnprintf (NULL, &length, "%Lf %d", -1.0L / 0.0L, 33, 44, 55); + my_asnprintf (NULL, &length, "%Lf %d", - Infinityl (), 33, 44, 55); ASSERT (result != NULL); ASSERT (strcmp (result, "-inf 33") == 0 || strcmp (result, "-infinity 33") == 0); @@ -1373,7 +1375,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) ASSERT (length == strlen (result)); free (result); } -#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) +#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE { /* Quiet NaN. */ static union { unsigned int word[4]; long double value; } x = { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) }; @@ -1548,7 +1550,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) { /* FLAG_ZERO with infinite number. */ size_t length; char *result = - my_asnprintf (NULL, &length, "%015Lf %d", -1.0L / 0.0L, 33, 44, 55); + my_asnprintf (NULL, &length, "%015Lf %d", - Infinityl (), 33, 44, 55); ASSERT (result != NULL); ASSERT (strcmp (result, " -inf 33") == 0 || strcmp (result, " -infinity 33") == 0); @@ -1654,7 +1656,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) { /* Positive infinity. */ size_t length; char *result = - my_asnprintf (NULL, &length, "%F %d", 1.0 / 0.0, 33, 44, 55); + my_asnprintf (NULL, &length, "%F %d", Infinityd (), 33, 44, 55); ASSERT (result != NULL); ASSERT (strcmp (result, "INF 33") == 0 || strcmp (result, "INFINITY 33") == 0); @@ -1665,7 +1667,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) { /* Negative infinity. */ size_t length; char *result = - my_asnprintf (NULL, &length, "%F %d", -1.0 / 0.0, 33, 44, 55); + my_asnprintf (NULL, &length, "%F %d", - Infinityd (), 33, 44, 55); ASSERT (result != NULL); ASSERT (strcmp (result, "-INF 33") == 0 || strcmp (result, "-INFINITY 33") == 0); @@ -1698,7 +1700,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) { /* FLAG_ZERO with infinite number. */ size_t length; char *result = - my_asnprintf (NULL, &length, "%015F %d", -1.0 / 0.0, 33, 44, 55); + my_asnprintf (NULL, &length, "%015F %d", - Infinityd (), 33, 44, 55); ASSERT (result != NULL); ASSERT (strcmp (result, " -INF 33") == 0 || strcmp (result, " -INFINITY 33") == 0); @@ -1790,7 +1792,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) { /* Positive infinity. */ size_t length; char *result = - my_asnprintf (NULL, &length, "%LF %d", 1.0L / 0.0L, 33, 44, 55); + my_asnprintf (NULL, &length, "%LF %d", Infinityl (), 33, 44, 55); ASSERT (result != NULL); ASSERT (strcmp (result, "INF 33") == 0 || strcmp (result, "INFINITY 33") == 0); @@ -1801,7 +1803,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) { /* Negative infinity. */ size_t length; char *result = - my_asnprintf (NULL, &length, "%LF %d", -1.0L / 0.0L, 33, 44, 55); + my_asnprintf (NULL, &length, "%LF %d", - Infinityl (), 33, 44, 55); ASSERT (result != NULL); ASSERT (strcmp (result, "-INF 33") == 0 || strcmp (result, "-INFINITY 33") == 0); @@ -1834,7 +1836,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) { /* FLAG_ZERO with infinite number. */ size_t length; char *result = - my_asnprintf (NULL, &length, "%015LF %d", -1.0L / 0.0L, 33, 44, 55); + my_asnprintf (NULL, &length, "%015LF %d", - Infinityl (), 33, 44, 55); ASSERT (result != NULL); ASSERT (strcmp (result, " -INF 33") == 0 || strcmp (result, " -INFINITY 33") == 0); @@ -2032,7 +2034,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) { /* Positive infinity. */ size_t length; char *result = - my_asnprintf (NULL, &length, "%e %d", 1.0 / 0.0, 33, 44, 55); + my_asnprintf (NULL, &length, "%e %d", Infinityd (), 33, 44, 55); ASSERT (result != NULL); ASSERT (strcmp (result, "inf 33") == 0 || strcmp (result, "infinity 33") == 0); @@ -2043,7 +2045,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) { /* Negative infinity. */ size_t length; char *result = - my_asnprintf (NULL, &length, "%e %d", -1.0 / 0.0, 33, 44, 55); + my_asnprintf (NULL, &length, "%e %d", - Infinityd (), 33, 44, 55); ASSERT (result != NULL); ASSERT (strcmp (result, "-inf 33") == 0 || strcmp (result, "-infinity 33") == 0); @@ -2154,7 +2156,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) { /* FLAG_ZERO with infinite number. */ size_t length; char *result = - my_asnprintf (NULL, &length, "%015e %d", -1.0 / 0.0, 33, 44, 55); + my_asnprintf (NULL, &length, "%015e %d", - Infinityd (), 33, 44, 55); ASSERT (result != NULL); ASSERT (strcmp (result, " -inf 33") == 0 || strcmp (result, " -infinity 33") == 0); @@ -2365,7 +2367,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) { /* Positive infinity. */ size_t length; char *result = - my_asnprintf (NULL, &length, "%Le %d", 1.0L / 0.0L, 33, 44, 55); + my_asnprintf (NULL, &length, "%Le %d", Infinityl (), 33, 44, 55); ASSERT (result != NULL); ASSERT (strcmp (result, "inf 33") == 0 || strcmp (result, "infinity 33") == 0); @@ -2376,7 +2378,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) { /* Negative infinity. */ size_t length; char *result = - my_asnprintf (NULL, &length, "%Le %d", -1.0L / 0.0L, 33, 44, 55); + my_asnprintf (NULL, &length, "%Le %d", - Infinityl (), 33, 44, 55); ASSERT (result != NULL); ASSERT (strcmp (result, "-inf 33") == 0 || strcmp (result, "-infinity 33") == 0); @@ -2395,7 +2397,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) ASSERT (length == strlen (result)); free (result); } -#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) +#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE { /* Quiet NaN. */ static union { unsigned int word[4]; long double value; } x = { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) }; @@ -2588,7 +2590,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) { /* FLAG_ZERO with infinite number. */ size_t length; char *result = - my_asnprintf (NULL, &length, "%015Le %d", -1.0L / 0.0L, 33, 44, 55); + my_asnprintf (NULL, &length, "%015Le %d", - Infinityl (), 33, 44, 55); ASSERT (result != NULL); ASSERT (strcmp (result, " -inf 33") == 0 || strcmp (result, " -infinity 33") == 0); @@ -2798,7 +2800,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) { /* Positive infinity. */ size_t length; char *result = - my_asnprintf (NULL, &length, "%g %d", 1.0 / 0.0, 33, 44, 55); + my_asnprintf (NULL, &length, "%g %d", Infinityd (), 33, 44, 55); ASSERT (result != NULL); ASSERT (strcmp (result, "inf 33") == 0 || strcmp (result, "infinity 33") == 0); @@ -2809,7 +2811,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) { /* Negative infinity. */ size_t length; char *result = - my_asnprintf (NULL, &length, "%g %d", -1.0 / 0.0, 33, 44, 55); + my_asnprintf (NULL, &length, "%g %d", - Infinityd (), 33, 44, 55); ASSERT (result != NULL); ASSERT (strcmp (result, "-inf 33") == 0 || strcmp (result, "-infinity 33") == 0); @@ -2913,7 +2915,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) { /* FLAG_ZERO with infinite number. */ size_t length; char *result = - my_asnprintf (NULL, &length, "%015g %d", -1.0 / 0.0, 33, 44, 55); + my_asnprintf (NULL, &length, "%015g %d", - Infinityd (), 33, 44, 55); ASSERT (result != NULL); ASSERT (strcmp (result, " -inf 33") == 0 || strcmp (result, " -infinity 33") == 0); @@ -3119,7 +3121,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) { /* Positive infinity. */ size_t length; char *result = - my_asnprintf (NULL, &length, "%Lg %d", 1.0L / 0.0L, 33, 44, 55); + my_asnprintf (NULL, &length, "%Lg %d", Infinityl (), 33, 44, 55); ASSERT (result != NULL); ASSERT (strcmp (result, "inf 33") == 0 || strcmp (result, "infinity 33") == 0); @@ -3130,7 +3132,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) { /* Negative infinity. */ size_t length; char *result = - my_asnprintf (NULL, &length, "%Lg %d", -1.0L / 0.0L, 33, 44, 55); + my_asnprintf (NULL, &length, "%Lg %d", - Infinityl (), 33, 44, 55); ASSERT (result != NULL); ASSERT (strcmp (result, "-inf 33") == 0 || strcmp (result, "-infinity 33") == 0); @@ -3149,7 +3151,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) ASSERT (length == strlen (result)); free (result); } -#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) +#if CHECK_PRINTF_SAFE && ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE { /* Quiet NaN. */ static union { unsigned int word[4]; long double value; } x = { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) }; @@ -3335,7 +3337,7 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) { /* FLAG_ZERO with infinite number. */ size_t length; char *result = - my_asnprintf (NULL, &length, "%015Lg %d", -1.0L / 0.0L, 33, 44, 55); + my_asnprintf (NULL, &length, "%015Lg %d", - Infinityl (), 33, 44, 55); ASSERT (result != NULL); ASSERT (strcmp (result, " -inf 33") == 0 || strcmp (result, " -infinity 33") == 0);