[PATCH] kernel32/tests: Add 64bit number tests for FormatMessage[A|W]
Bruno Jesus
00cpxxx at gmail.com
Wed Mar 8 07:17:26 CST 2017
From: Bruno Jesus <bjesus at codeweavers.com>
Related to https://bugs.winehq.org/show_bug.cgi?id=33392
Signed-off-by: Bruno Jesus <bjesus at codeweavers.com>
---
dlls/kernel32/tests/format_msg.c | 77 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 77 insertions(+)
diff --git a/dlls/kernel32/tests/format_msg.c b/dlls/kernel32/tests/format_msg.c
index 4a1ae7d..ada5e89 100644
--- a/dlls/kernel32/tests/format_msg.c
+++ b/dlls/kernel32/tests/format_msg.c
@@ -1781,6 +1781,82 @@ static void test_message_invalid_flags_wide(void)
"Expected the output buffer to be untouched\n");
}
+static void test_message_from_64bit_number(void)
+{
+ static const WCHAR I64d[] = {'%', '1', '!', 'I', '6', '4', 'd', '!', 0};
+ static const WCHAR I64u[] = {'%', '1', '!', 'I', '6', '4', 'u', '!', 0};
+ WCHAR outW[0x100], expW[0x100];
+ char outA[0x100];
+ DWORD r;
+ static const struct
+ {
+ UINT64 number;
+ const char expected[32];
+ int len;
+ } unsigned_tests[] =
+ {
+ { 0, "0", 1 },
+ { 1234567890, "1234567890", 10},
+ { 0xFFFFFFFFFFFFFFFF, "18446744073709551615", 20 },
+ { 0x7FFFFFFFFFFFFFFF, "9223372036854775807", 19 },
+ };
+ static const struct
+ {
+ INT64 number;
+ const char expected[64];
+ int len;
+ } signed_tests[] =
+ {
+ { 0, "0", 1 },
+ { 1234567890, "1234567890", 10 },
+ { -1, "-1", 2 },
+ { 0xFFFFFFFFFFFFFFFF, "-1", 2 },
+ { 0x7FFFFFFFFFFFFFFF, "9223372036854775807", 19 },
+ { -0x7FFFFFFFFFFFFFFF, "-9223372036854775807", 20 },
+ };
+ int i;
+
+ for (i = 0; i < sizeof(unsigned_tests) / sizeof(unsigned_tests[0]); i++)
+ {
+ r = doitW(FORMAT_MESSAGE_FROM_STRING, I64u,
+ 0, 0, outW, sizeof(outW) / sizeof(WCHAR), unsigned_tests[i].number);
+ MultiByteToWideChar(CP_ACP, 0, unsigned_tests[i].expected, -1, expW, sizeof(expW));
+todo_wine
+ ok(!lstrcmpW(outW, expW),"[%d] failed, expected %s, got %s\n", i,
+ unsigned_tests[i].expected, wine_dbgstr_w(outW));
+todo_wine
+ ok(r == unsigned_tests[i].len,"[%d] failed: r=%d\n",i, r);
+
+ r = doit(FORMAT_MESSAGE_FROM_STRING, "%1!I64u!",
+ 0, 0, outA, sizeof(outA), unsigned_tests[i].number);
+todo_wine
+ ok(!strcmp(outA, unsigned_tests[i].expected),"[%d] failed, expected %s, got %s\n", i,
+ unsigned_tests[i].expected, outA);
+todo_wine
+ ok(r == unsigned_tests[i].len,"[%d] failed: r=%d\n", i, r);
+ }
+
+ for (i = 0; i < sizeof(signed_tests) / sizeof(signed_tests[0]); i++)
+ {
+ r = doitW(FORMAT_MESSAGE_FROM_STRING, I64d,
+ 0, 0, outW, sizeof(outW) / sizeof(WCHAR), signed_tests[i].number);
+ MultiByteToWideChar(CP_ACP, 0, signed_tests[i].expected, -1, expW, sizeof(expW));
+todo_wine
+ ok(!lstrcmpW(outW, expW),"[%d] failed, expected %s, got %s\n", i,
+ signed_tests[i].expected, wine_dbgstr_w(outW));
+todo_wine
+ ok(r == signed_tests[i].len,"[%d] failed: r=%d\n", i, r);
+
+ r = doit(FORMAT_MESSAGE_FROM_STRING, "%1!I64d!",
+ 0, 0, outA, sizeof(outA), signed_tests[i].number);
+todo_wine
+ ok(!strcmp(outA, signed_tests[i].expected),"[%d] failed, expected %s, got %s\n", i,
+ signed_tests[i].expected, outA);
+todo_wine
+ ok(r == signed_tests[i].len,"[%d] failed: r=%d\n", i, r);
+ }
+}
+
START_TEST(format_msg)
{
DWORD ret;
@@ -1808,4 +1884,5 @@ START_TEST(format_msg)
test_message_null_buffer_wide();
test_message_allocate_buffer_wide();
test_message_invalid_flags_wide();
+ test_message_from_64bit_number();
}
--
2.9.3
More information about the wine-patches
mailing list