/* Test of POSIX compatible vasnprintf() and asnprintf() functions.
- Copyright (C) 2007-2013 Free Software Foundation, Inc.
+ Copyright (C) 2007-2015 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
#ifdef WORDS_BIGENDIAN
# define LDBL80_WORDS(exponent,manthi,mantlo) \
{ ((unsigned int) (exponent) << 16) | ((unsigned int) (manthi) >> 16), \
- ((unsigned int) (manthi) << 16) | (unsigned int) (mantlo) >> 16), \
+ ((unsigned int) (manthi) << 16) | ((unsigned int) (mantlo) >> 16), \
(unsigned int) (mantlo) << 16 \
}
#else
ASSERT (length == strlen (result));
free (result);
}
- /* The isnanl function should recognize Pseudo-NaNs, Pseudo-Infinities,
- Pseudo-Zeroes, Unnormalized Numbers, and Pseudo-Denormals, as defined in
- Intel IA-64 Architecture Software Developer's Manual, Volume 1:
- Application Architecture.
- Table 5-2 "Floating-Point Register Encodings"
- Figure 5-6 "Memory to Floating-Point Register Data Translation"
- */
+ /* asnprintf should print something for noncanonical values. */
{ /* Pseudo-NaN. */
static union { unsigned int word[4]; long double value; } x =
{ LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) };
char *result =
my_asnprintf (NULL, &length, "%La %d", x.value, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strlen (result) >= 3 + 3
- && strisnan (result, 0, strlen (result) - 3, 0)
- && strcmp (result + strlen (result) - 3, " 33") == 0);
ASSERT (length == strlen (result));
+ ASSERT (3 < length && strcmp (result + length - 3, " 33") == 0);
free (result);
}
{ /* Pseudo-Infinity. */
char *result =
my_asnprintf (NULL, &length, "%La %d", x.value, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strlen (result) >= 3 + 3
- && strisnan (result, 0, strlen (result) - 3, 0)
- && strcmp (result + strlen (result) - 3, " 33") == 0);
ASSERT (length == strlen (result));
+ ASSERT (3 < length && strcmp (result + length - 3, " 33") == 0);
free (result);
}
{ /* Pseudo-Zero. */
char *result =
my_asnprintf (NULL, &length, "%La %d", x.value, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strlen (result) >= 3 + 3
- && strisnan (result, 0, strlen (result) - 3, 0)
- && strcmp (result + strlen (result) - 3, " 33") == 0);
ASSERT (length == strlen (result));
+ ASSERT (3 < length && strcmp (result + length - 3, " 33") == 0);
free (result);
}
{ /* Unnormalized number. */
char *result =
my_asnprintf (NULL, &length, "%La %d", x.value, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strlen (result) >= 3 + 3
- && strisnan (result, 0, strlen (result) - 3, 0)
- && strcmp (result + strlen (result) - 3, " 33") == 0);
ASSERT (length == strlen (result));
+ ASSERT (3 < length && strcmp (result + length - 3, " 33") == 0);
free (result);
}
{ /* Pseudo-Denormal. */
char *result =
my_asnprintf (NULL, &length, "%La %d", x.value, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strlen (result) >= 3 + 3
- && strisnan (result, 0, strlen (result) - 3, 0)
- && strcmp (result + strlen (result) - 3, " 33") == 0);
ASSERT (length == strlen (result));
+ ASSERT (3 < length && strcmp (result + length - 3, " 33") == 0);
free (result);
}
#endif
ASSERT (length == strlen (result));
free (result);
}
- /* The isnanl function should recognize Pseudo-NaNs, Pseudo-Infinities,
- Pseudo-Zeroes, Unnormalized Numbers, and Pseudo-Denormals, as defined in
- Intel IA-64 Architecture Software Developer's Manual, Volume 1:
- Application Architecture.
- Table 5-2 "Floating-Point Register Encodings"
- Figure 5-6 "Memory to Floating-Point Register Data Translation"
- */
+ /* asnprintf should print something for noncanonical values. */
{ /* Pseudo-NaN. */
static union { unsigned int word[4]; long double value; } x =
{ LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) };
char *result =
my_asnprintf (NULL, &length, "%Lf %d", x.value, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strlen (result) >= 3 + 3
- && strisnan (result, 0, strlen (result) - 3, 0)
- && strcmp (result + strlen (result) - 3, " 33") == 0);
ASSERT (length == strlen (result));
+ ASSERT (3 < length && strcmp (result + length - 3, " 33") == 0);
free (result);
}
{ /* Pseudo-Infinity. */
char *result =
my_asnprintf (NULL, &length, "%Lf %d", x.value, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strlen (result) >= 3 + 3
- && strisnan (result, 0, strlen (result) - 3, 0)
- && strcmp (result + strlen (result) - 3, " 33") == 0);
ASSERT (length == strlen (result));
+ ASSERT (3 < length && strcmp (result + length - 3, " 33") == 0);
free (result);
}
{ /* Pseudo-Zero. */
char *result =
my_asnprintf (NULL, &length, "%Lf %d", x.value, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strlen (result) >= 3 + 3
- && strisnan (result, 0, strlen (result) - 3, 0)
- && strcmp (result + strlen (result) - 3, " 33") == 0);
ASSERT (length == strlen (result));
+ ASSERT (3 < length && strcmp (result + length - 3, " 33") == 0);
free (result);
}
{ /* Unnormalized number. */
char *result =
my_asnprintf (NULL, &length, "%Lf %d", x.value, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strlen (result) >= 3 + 3
- && strisnan (result, 0, strlen (result) - 3, 0)
- && strcmp (result + strlen (result) - 3, " 33") == 0);
ASSERT (length == strlen (result));
+ ASSERT (3 < length && strcmp (result + length - 3, " 33") == 0);
free (result);
}
{ /* Pseudo-Denormal. */
char *result =
my_asnprintf (NULL, &length, "%Lf %d", x.value, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strlen (result) >= 3 + 3
- && strisnan (result, 0, strlen (result) - 3, 0)
- && strcmp (result + strlen (result) - 3, " 33") == 0);
ASSERT (length == strlen (result));
+ ASSERT (3 < length && strcmp (result + length - 3, " 33") == 0);
free (result);
}
#endif
char *result =
my_asnprintf (NULL, &length, "%Le %d", x.value, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strlen (result) >= 3 + 3
- && strisnan (result, 0, strlen (result) - 3, 0)
- && strcmp (result + strlen (result) - 3, " 33") == 0);
ASSERT (length == strlen (result));
+ ASSERT (3 < length && strcmp (result + length - 3, " 33") == 0);
free (result);
}
{
char *result =
my_asnprintf (NULL, &length, "%Le %d", x.value, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strlen (result) >= 3 + 3
- && strisnan (result, 0, strlen (result) - 3, 0)
- && strcmp (result + strlen (result) - 3, " 33") == 0);
ASSERT (length == strlen (result));
+ ASSERT (3 < length && strcmp (result + length - 3, " 33") == 0);
free (result);
}
- /* The isnanl function should recognize Pseudo-NaNs, Pseudo-Infinities,
- Pseudo-Zeroes, Unnormalized Numbers, and Pseudo-Denormals, as defined in
- Intel IA-64 Architecture Software Developer's Manual, Volume 1:
- Application Architecture.
- Table 5-2 "Floating-Point Register Encodings"
- Figure 5-6 "Memory to Floating-Point Register Data Translation"
- */
+ /* asnprintf should print something even for noncanonical values. */
{ /* Pseudo-NaN. */
static union { unsigned int word[4]; long double value; } x =
{ LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) };
char *result =
my_asnprintf (NULL, &length, "%Le %d", x.value, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strlen (result) >= 3 + 3
- && strisnan (result, 0, strlen (result) - 3, 0)
- && strcmp (result + strlen (result) - 3, " 33") == 0);
ASSERT (length == strlen (result));
+ ASSERT (3 < length && strcmp (result + length - 3, " 33") == 0);
free (result);
}
{ /* Pseudo-Infinity. */
char *result =
my_asnprintf (NULL, &length, "%Le %d", x.value, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strlen (result) >= 3 + 3
- && strisnan (result, 0, strlen (result) - 3, 0)
- && strcmp (result + strlen (result) - 3, " 33") == 0);
ASSERT (length == strlen (result));
+ ASSERT (3 < length && strcmp (result + length - 3, " 33") == 0);
free (result);
}
{ /* Pseudo-Zero. */
char *result =
my_asnprintf (NULL, &length, "%Le %d", x.value, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strlen (result) >= 3 + 3
- && strisnan (result, 0, strlen (result) - 3, 0)
- && strcmp (result + strlen (result) - 3, " 33") == 0);
ASSERT (length == strlen (result));
+ ASSERT (3 < length && strcmp (result + length - 3, " 33") == 0);
free (result);
}
{ /* Unnormalized number. */
char *result =
my_asnprintf (NULL, &length, "%Le %d", x.value, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strlen (result) >= 3 + 3
- && strisnan (result, 0, strlen (result) - 3, 0)
- && strcmp (result + strlen (result) - 3, " 33") == 0);
ASSERT (length == strlen (result));
+ ASSERT (3 < length && strcmp (result + length - 3, " 33") == 0);
free (result);
}
{ /* Pseudo-Denormal. */
char *result =
my_asnprintf (NULL, &length, "%Le %d", x.value, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strlen (result) >= 3 + 3
- && strisnan (result, 0, strlen (result) - 3, 0)
- && strcmp (result + strlen (result) - 3, " 33") == 0);
ASSERT (length == strlen (result));
+ ASSERT (3 < length && strcmp (result + length - 3, " 33") == 0);
free (result);
}
#endif
ASSERT (length == strlen (result));
free (result);
}
- /* The isnanl function should recognize Pseudo-NaNs, Pseudo-Infinities,
- Pseudo-Zeroes, Unnormalized Numbers, and Pseudo-Denormals, as defined in
- Intel IA-64 Architecture Software Developer's Manual, Volume 1:
- Application Architecture.
- Table 5-2 "Floating-Point Register Encodings"
- Figure 5-6 "Memory to Floating-Point Register Data Translation"
- */
+ /* asnprintf should print something for noncanonical values. */
{ /* Pseudo-NaN. */
static union { unsigned int word[4]; long double value; } x =
{ LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) };
char *result =
my_asnprintf (NULL, &length, "%Lg %d", x.value, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strlen (result) >= 3 + 3
- && strisnan (result, 0, strlen (result) - 3, 0)
- && strcmp (result + strlen (result) - 3, " 33") == 0);
ASSERT (length == strlen (result));
+ ASSERT (3 < length && strcmp (result + length - 3, " 33") == 0);
free (result);
}
{ /* Pseudo-Infinity. */
char *result =
my_asnprintf (NULL, &length, "%Lg %d", x.value, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strlen (result) >= 3 + 3
- && strisnan (result, 0, strlen (result) - 3, 0)
- && strcmp (result + strlen (result) - 3, " 33") == 0);
ASSERT (length == strlen (result));
+ ASSERT (3 < length && strcmp (result + length - 3, " 33") == 0);
free (result);
}
{ /* Pseudo-Zero. */
char *result =
my_asnprintf (NULL, &length, "%Lg %d", x.value, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strlen (result) >= 3 + 3
- && strisnan (result, 0, strlen (result) - 3, 0)
- && strcmp (result + strlen (result) - 3, " 33") == 0);
ASSERT (length == strlen (result));
+ ASSERT (3 < length && strcmp (result + length - 3, " 33") == 0);
free (result);
}
{ /* Unnormalized number. */
char *result =
my_asnprintf (NULL, &length, "%Lg %d", x.value, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strlen (result) >= 3 + 3
- && strisnan (result, 0, strlen (result) - 3, 0)
- && strcmp (result + strlen (result) - 3, " 33") == 0);
ASSERT (length == strlen (result));
+ ASSERT (3 < length && strcmp (result + length - 3, " 33") == 0);
free (result);
}
{ /* Pseudo-Denormal. */
char *result =
my_asnprintf (NULL, &length, "%Lg %d", x.value, 33, 44, 55);
ASSERT (result != NULL);
- ASSERT (strlen (result) >= 3 + 3
- && strisnan (result, 0, strlen (result) - 3, 0)
- && strcmp (result + strlen (result) - 3, " 33") == 0);
ASSERT (length == strlen (result));
+ ASSERT (3 < length && strcmp (result + length - 3, " 33") == 0);
free (result);
}
#endif