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 );