From: Piotr Caban Subject: msvcrt: Use NAN and INFINITY definitions from port.h in printf tests Message-Id: <5512A556.1000404@codeweavers.com> Date: Wed, 25 Mar 2015 13:08:54 +0100 --- dlls/msvcrt/tests/printf.c | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/dlls/msvcrt/tests/printf.c b/dlls/msvcrt/tests/printf.c index 0606c25..acd8482 100644 --- a/dlls/msvcrt/tests/printf.c +++ b/dlls/msvcrt/tests/printf.c @@ -27,7 +27,6 @@ #include #include -#include #include "windef.h" #include "winbase.h" @@ -35,6 +34,20 @@ #include "wine/test.h" +static inline float __port_infinity(void) +{ + static const unsigned __inf_bytes = 0x7f800000; + return *(const float *)&__inf_bytes; +} +#define INFINITY __port_infinity() + +static inline float __port_nan(void) +{ + static const unsigned __nan_bytes = 0x7fc00000; + return *(const float *)&__nan_bytes; +} +#define NAN __port_nan() + static int (__cdecl *p__vscprintf)(const char *format, __ms_va_list valist); static int (__cdecl *p__vscwprintf)(const wchar_t *format, __ms_va_list valist); static int (__cdecl *p__vsnwprintf_s)(wchar_t *str, size_t sizeOfBuffer, @@ -82,7 +95,7 @@ static void test_sprintf( void ) { char buffer[100]; const char *format; - double pnumber=789456123, inf, nan; + double pnumber=789456123; int x, r; WCHAR wide[] = { 'w','i','d','e',0}; @@ -675,38 +688,35 @@ static void test_sprintf( void ) r = sprintf(buffer, format, 0x12345); ok(!strcmp(buffer,"2345"), "failed \"%s\"\n", buffer); - nan = 0.0; - inf = 1.0/nan; - nan = sqrt(-1); format = "%lf"; - r = sprintf(buffer, format, nan); + r = sprintf(buffer, format, NAN); ok(r==9, "r = %d\n", r); ok(!strcmp(buffer, "-1.#IND00"), "failed: \"%s\"\n", buffer); - r = sprintf(buffer, format, inf); + r = sprintf(buffer, format, INFINITY); ok(r==8, "r = %d\n", r); ok(!strcmp(buffer, "1.#INF00"), "failed: \"%s\"\n", buffer); format = "%le"; - r = sprintf(buffer, format, nan); + r = sprintf(buffer, format, NAN); ok(r==14, "r = %d\n", r); ok(!strcmp(buffer, "-1.#IND00e+000"), "failed: \"%s\"\n", buffer); - r = sprintf(buffer, format, inf); + r = sprintf(buffer, format, INFINITY); ok(r==13, "r = %d\n", r); ok(!strcmp(buffer, "1.#INF00e+000"), "failed: \"%s\"\n", buffer); format = "%lg"; - r = sprintf(buffer, format, nan); + r = sprintf(buffer, format, NAN); ok(r==7, "r = %d\n", r); ok(!strcmp(buffer, "-1.#IND"), "failed: \"%s\"\n", buffer); - r = sprintf(buffer, format, inf); + r = sprintf(buffer, format, INFINITY); ok(r==6, "r = %d\n", r); ok(!strcmp(buffer, "1.#INF"), "failed: \"%s\"\n", buffer); format = "%010.2lf"; - r = sprintf(buffer, format, nan); + r = sprintf(buffer, format, NAN); ok(r==10, "r = %d\n", r); ok(!strcmp(buffer, "-000001.#J"), "failed: \"%s\"\n", buffer); - r = sprintf(buffer, format, inf); + r = sprintf(buffer, format, INFINITY); ok(r==10, "r = %d\n", r); ok(!strcmp(buffer, "0000001.#J"), "failed: \"%s\"\n", buffer); }