summaryrefslogtreecommitdiff
path: root/tests/test-stdio.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-stdio.c')
-rw-r--r--tests/test-stdio.c54
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;
}