diff options
Diffstat (limited to 'tests/test-stdio.c')
-rw-r--r-- | tests/test-stdio.c | 54 |
1 files changed, 53 insertions, 1 deletions
diff --git a/tests/test-stdio.c b/tests/test-stdio.c index 1908da35..49969520 100644 --- a/tests/test-stdio.c +++ b/tests/test-stdio.c @@ -1,5 +1,5 @@ /* Test of <stdio.h> substitute. - Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc. + Copyright (C) 2007, 2009-2024 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 @@ -23,6 +23,9 @@ /* Check that the various SEEK_* macros are defined. */ int sk[] = { SEEK_CUR, SEEK_END, SEEK_SET }; +/* Check that the _PRINTF_NAN_LEN_MAX macro is defined. */ +int pnlm[] = { _PRINTF_NAN_LEN_MAX }; + /* Check that NULL can be passed through varargs as a pointer type, per POSIX 2008. */ static_assert (sizeof NULL == sizeof (void *)); @@ -34,8 +37,57 @@ size_t t3; ssize_t t4; va_list t5; +#include <string.h> + +#include "signed-nan.h" +#include "signed-snan.h" +#include "macros.h" + int main (void) { + { + double value1; + char buf[64]; + + value1 = positive_NaNd(); + sprintf (buf, "%g", value1); + ASSERT (strlen (buf) <= _PRINTF_NAN_LEN_MAX); + + value1 = negative_NaNd(); + sprintf (buf, "%g", value1); + ASSERT (strlen (buf) <= _PRINTF_NAN_LEN_MAX); + } +#if defined DBL_EXPBIT0_WORD && defined DBL_EXPBIT0_BIT + /* Check the value of _PRINTF_NAN_LEN_MAX. */ + { + double value1; + memory_double value2; + char buf[64]; + + value1 = positive_SNaNd(); + sprintf (buf, "%g", value1); + ASSERT (strlen (buf) <= _PRINTF_NAN_LEN_MAX); + + value1 = negative_SNaNd(); + sprintf (buf, "%g", value1); + ASSERT (strlen (buf) <= _PRINTF_NAN_LEN_MAX); + + value2.value = positive_NaNd (); + #if DBL_EXPBIT0_BIT == 20 + value2.word[DBL_EXPBIT0_WORD] ^= 0x54321; + #endif + sprintf (buf, "%g", value2.value); + ASSERT (strlen (buf) <= _PRINTF_NAN_LEN_MAX); + + value2.value = negative_NaNd (); + #if DBL_EXPBIT0_BIT == 20 + value2.word[DBL_EXPBIT0_WORD] ^= 0x54321; + #endif + sprintf (buf, "%g", value2.value); + ASSERT (strlen (buf) <= _PRINTF_NAN_LEN_MAX); + } +#endif + return 0; } |