[KERNEL32_APITEST] Add a test for FormatMessage backed with MC file.
[reactos.git] / modules / rostests / apitests / kernel32 / FormatMessage.c
1 /*
2 * PROJECT: ReactOS api tests
3 * LICENSE: GPLv2+ - See COPYING in the top level directory
4 * PURPOSE: Test for FormatMessage and resources
5 * PROGRAMMERS: Pierre Schweitzer
6 */
7
8 #include <apitest.h>
9 #include <FormatMessage.h>
10
11 WCHAR First[] = L"This is a test message.\r\n";
12 WCHAR Second[] = L"This is a second test message.\r\n";
13
14 START_TEST(FormatMessage)
15 {
16 PWSTR Buffer;
17 DWORD Written;
18
19 Buffer = NULL;
20 Written = FormatMessageW(FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_ALLOCATE_BUFFER,
21 NULL, MSG_FIRST_MESSAGE, 0, (LPWSTR)&Buffer, 0, NULL);
22 ok(Written != 0, "Unexpected error: %lx\n", GetLastError());
23 ok(Buffer != NULL, "No buffer allocated\n");
24 ok(Written == (sizeof(First) - sizeof(UNICODE_NULL)) / sizeof(WCHAR),
25 "Invalid size: %ld (expected: %d)\n",
26 Written, (sizeof(First) - sizeof(UNICODE_NULL)) / sizeof(WCHAR));
27 ok(RtlCompareMemory(Buffer, First, sizeof(First) - sizeof(UNICODE_NULL)) ==
28 sizeof(First) - sizeof(UNICODE_NULL),
29 "Mismatching string: %S (expected : %S)\n", Buffer, First);
30 LocalFree(Buffer);
31
32 Buffer = NULL;
33 Written = FormatMessageW(FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_ALLOCATE_BUFFER,
34 NULL, MSG_SECOND_MESSAGE, 0, (LPWSTR)&Buffer, 0, NULL);
35 ok(Written != 0, "Unexpected error: %lx\n", GetLastError());
36 ok(Buffer != NULL, "No buffer allocated\n");
37 ok(Written == (sizeof(Second) - sizeof(UNICODE_NULL)) / sizeof(WCHAR),
38 "Invalid size: %ld (expected: %d)\n",
39 Written, (sizeof(Second) - sizeof(UNICODE_NULL)) / sizeof(WCHAR));
40 ok(RtlCompareMemory(Buffer, Second, sizeof(Second) - sizeof(UNICODE_NULL)) ==
41 sizeof(Second) - sizeof(UNICODE_NULL),
42 "Mismatching string: %S (expected: %S)\n", Buffer, Second);
43 LocalFree(Buffer);
44
45 Buffer = NULL;
46 Written = FormatMessageW(FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_ALLOCATE_BUFFER,
47 NULL, MSG_SECOND_MESSAGE + 1, 0, (LPWSTR)&Buffer, 0, NULL);
48 ok(Written == 0, "Unexpected success: %ld\n", Written);
49 ok(Buffer == NULL, "Unexpected success: %p\n", Buffer);
50 ok(GetLastError() == 0x13d, "Unexpected error: %lx\n", GetLastError());
51 }