diff --git a/dlls/webservices/tests/writer.c b/dlls/webservices/tests/writer.c index c09a9916120..8e83707c3cf 100644 --- a/dlls/webservices/tests/writer.c +++ b/dlls/webservices/tests/writer.c @@ -2222,12 +2222,14 @@ static void test_text_types(void) static void test_double(void) { + static const BOOL is_win64 = sizeof(void*) > sizeof(int); WS_XML_STRING localname = {1, (BYTE *)"t"}, ns = {0, NULL}; unsigned int fpword, fpword_orig; static const struct { double val; const char *result; + BOOL todo64; } tests[] = { @@ -2240,12 +2242,12 @@ static void test_double(void) {1.0000000000000004, "1.0000000000000004"}, {100000000000000, "100000000000000"}, {1000000000000000, "1E+15"}, - {0.1, "0.1"}, - {0.01, "1E-2"}, - {-0.1, "-0.1"}, - {-0.01, "-1E-2"}, - {1.7976931348623158e308, "1.7976931348623157E+308"}, - {-1.7976931348623158e308, "-1.7976931348623157E+308"}, + {0.1, "0.1", TRUE}, + {0.01, "1E-2", TRUE}, + {-0.1, "-0.1", TRUE}, + {-0.01, "-1E-2", TRUE}, + {1.7976931348623158e308, "1.7976931348623157E+308", TRUE}, + {-1.7976931348623158e308, "-1.7976931348623157E+308", TRUE}, }; HRESULT hr; WS_XML_WRITER *writer; @@ -2269,7 +2271,22 @@ static void test_double(void) hr = WsWriteEndElement( writer, NULL ); ok( hr == S_OK, "%lu: got %#lx\n", i, hr ); - check_output( writer, tests[i].result, __LINE__ ); + if (tests[i].todo64 && is_win64) + { + WS_BYTES bytes; + ULONG size = sizeof(bytes); + int len = strlen( tests[i].result ); + HRESULT hr; + + memset( &bytes, 0, sizeof(bytes) ); + hr = WsGetWriterProperty( writer, WS_XML_WRITER_PROPERTY_BYTES, &bytes, size, NULL ); + ok( hr == S_OK, "%lu: got %#lx\n", i, hr ); + todo_wine + ok( bytes.length == len && !memcmp( bytes.bytes, tests[i].result, len ), + "%lu: got %lu %s expected %d %s\n", i, bytes.length, + debugstr_bytes(bytes.bytes, bytes.length), len, tests[i].result ); + } + else check_output( writer, tests[i].result, __LINE__ ); } hr = set_output( writer );