add_subdirectory(redirptest)
+add_message_headers(ANSI FormatMessage.mc)
+
list(APPEND SOURCE
Console.c
CreateProcess.c
dosdev.c
FindActCtxSectionStringW.c
FindFiles.c
+ FormatMessage.c
GetComputerNameEx.c
GetCurrentDirectory.c
GetDriveType.c
WideCharToMultiByte.c
precomp.h)
-add_executable(kernel32_apitest ${SOURCE} testlist.c)
+add_executable(kernel32_apitest ${SOURCE} testlist.c kernel32_apitest.rc)
target_link_libraries(kernel32_apitest wine ${PSEH_LIB})
set_module_type(kernel32_apitest win32cui)
add_delay_importlibs(kernel32_apitest advapi32 shlwapi)
add_importlibs(kernel32_apitest msvcrt kernel32 ntdll)
+add_dependencies(kernel32_apitest FormatMessage)
add_pch(kernel32_apitest precomp.h SOURCE)
add_rostests_file(TARGET kernel32_apitest)
--- /dev/null
+/*
+ * PROJECT: ReactOS api tests
+ * LICENSE: GPLv2+ - See COPYING in the top level directory
+ * PURPOSE: Test for FormatMessage and resources
+ * PROGRAMMERS: Pierre Schweitzer
+ */
+
+#include <apitest.h>
+#include <FormatMessage.h>
+
+WCHAR First[] = L"This is a test message.\r\n";
+WCHAR Second[] = L"This is a second test message.\r\n";
+
+START_TEST(FormatMessage)
+{
+ PWSTR Buffer;
+ DWORD Written;
+
+ Buffer = NULL;
+ Written = FormatMessageW(FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_ALLOCATE_BUFFER,
+ NULL, MSG_FIRST_MESSAGE, 0, (LPWSTR)&Buffer, 0, NULL);
+ ok(Written != 0, "Unexpected error: %lx\n", GetLastError());
+ ok(Buffer != NULL, "No buffer allocated\n");
+ ok(Written == (sizeof(First) - sizeof(UNICODE_NULL)) / sizeof(WCHAR),
+ "Invalid size: %ld (expected: %d)\n",
+ Written, (sizeof(First) - sizeof(UNICODE_NULL)) / sizeof(WCHAR));
+ ok(RtlCompareMemory(Buffer, First, sizeof(First) - sizeof(UNICODE_NULL)) ==
+ sizeof(First) - sizeof(UNICODE_NULL),
+ "Mismatching string: %S (expected : %S)\n", Buffer, First);
+ LocalFree(Buffer);
+
+ Buffer = NULL;
+ Written = FormatMessageW(FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_ALLOCATE_BUFFER,
+ NULL, MSG_SECOND_MESSAGE, 0, (LPWSTR)&Buffer, 0, NULL);
+ ok(Written != 0, "Unexpected error: %lx\n", GetLastError());
+ ok(Buffer != NULL, "No buffer allocated\n");
+ ok(Written == (sizeof(Second) - sizeof(UNICODE_NULL)) / sizeof(WCHAR),
+ "Invalid size: %ld (expected: %d)\n",
+ Written, (sizeof(Second) - sizeof(UNICODE_NULL)) / sizeof(WCHAR));
+ ok(RtlCompareMemory(Buffer, Second, sizeof(Second) - sizeof(UNICODE_NULL)) ==
+ sizeof(Second) - sizeof(UNICODE_NULL),
+ "Mismatching string: %S (expected: %S)\n", Buffer, Second);
+ LocalFree(Buffer);
+
+ Buffer = NULL;
+ Written = FormatMessageW(FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_ALLOCATE_BUFFER,
+ NULL, MSG_SECOND_MESSAGE + 1, 0, (LPWSTR)&Buffer, 0, NULL);
+ ok(Written == 0, "Unexpected success: %ld\n", Written);
+ ok(Buffer == NULL, "Unexpected success: %p\n", Buffer);
+ ok(GetLastError() == 0x13d, "Unexpected error: %lx\n", GetLastError());
+}
extern void func_dosdev(void);
extern void func_FindActCtxSectionStringW(void);
extern void func_FindFiles(void);
+extern void func_FormatMessage(void);
extern void func_GetComputerNameEx(void);
extern void func_GetCurrentDirectory(void);
extern void func_GetDriveType(void);
{ "dosdev", func_dosdev },
{ "FindActCtxSectionStringW", func_FindActCtxSectionStringW },
{ "FindFiles", func_FindFiles },
+ { "FormatMessage", func_FormatMessage },
{ "GetComputerNameEx", func_GetComputerNameEx },
{ "GetCurrentDirectory", func_GetCurrentDirectory },
{ "GetDriveType", func_GetDriveType },