[KERNEL32_APITEST] Add a test for FormatMessage backed with MC file.
authorPierre Schweitzer <pierre@reactos.org>
Sat, 16 Dec 2017 18:39:37 +0000 (19:39 +0100)
committerPierre Schweitzer <pierre@reactos.org>
Sat, 16 Dec 2017 18:43:29 +0000 (19:43 +0100)
modules/rostests/apitests/kernel32/CMakeLists.txt
modules/rostests/apitests/kernel32/FormatMessage.c [new file with mode: 0644]
modules/rostests/apitests/kernel32/FormatMessage.mc [new file with mode: 0644]
modules/rostests/apitests/kernel32/kernel32_apitest.rc [new file with mode: 0644]
modules/rostests/apitests/kernel32/testlist.c

index 06edd1b..c329031 100644 (file)
@@ -1,6 +1,8 @@
 
 add_subdirectory(redirptest)
 
 
 add_subdirectory(redirptest)
 
+add_message_headers(ANSI FormatMessage.mc)
+
 list(APPEND SOURCE
     Console.c
     CreateProcess.c
 list(APPEND SOURCE
     Console.c
     CreateProcess.c
@@ -9,6 +11,7 @@ list(APPEND SOURCE
     dosdev.c
     FindActCtxSectionStringW.c
     FindFiles.c
     dosdev.c
     FindActCtxSectionStringW.c
     FindFiles.c
+    FormatMessage.c
     GetComputerNameEx.c
     GetCurrentDirectory.c
     GetDriveType.c
     GetComputerNameEx.c
     GetCurrentDirectory.c
     GetDriveType.c
@@ -30,11 +33,12 @@ list(APPEND SOURCE
     WideCharToMultiByte.c
     precomp.h)
 
     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)
 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)
 
 add_pch(kernel32_apitest precomp.h SOURCE)
 add_rostests_file(TARGET kernel32_apitest)
 
diff --git a/modules/rostests/apitests/kernel32/FormatMessage.c b/modules/rostests/apitests/kernel32/FormatMessage.c
new file mode 100644 (file)
index 0000000..ed2284d
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * 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());
+}
diff --git a/modules/rostests/apitests/kernel32/FormatMessage.mc b/modules/rostests/apitests/kernel32/FormatMessage.mc
new file mode 100644 (file)
index 0000000..f13ba12
--- /dev/null
@@ -0,0 +1,14 @@
+MessageIdTypedef=DWORD
+LanguageNames=(English=0x409:MSG0409)
+
+MessageId=
+SymbolicName=MSG_FIRST_MESSAGE
+Language=English
+This is a test message.
+.
+
+MessageId=
+SymbolicName=MSG_SECOND_MESSAGE
+Language=English
+This is a second test message.
+.
diff --git a/modules/rostests/apitests/kernel32/kernel32_apitest.rc b/modules/rostests/apitests/kernel32/kernel32_apitest.rc
new file mode 100644 (file)
index 0000000..ea37308
--- /dev/null
@@ -0,0 +1,6 @@
+#define REACTOS_STR_FILE_DESCRIPTION  "Kernel32 Regtests"
+#define REACTOS_STR_INTERNAL_NAME     "kernel32_apitest"
+#define REACTOS_STR_ORIGINAL_FILENAME "kernel32_apitest.exe"
+#include <reactos/version.rc>
+
+#include <FormatMessage.rc>
index f00b9e9..0bf5e42 100644 (file)
@@ -10,6 +10,7 @@ extern void func_DeviceIoControl(void);
 extern void func_dosdev(void);
 extern void func_FindActCtxSectionStringW(void);
 extern void func_FindFiles(void);
 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);
 extern void func_GetComputerNameEx(void);
 extern void func_GetCurrentDirectory(void);
 extern void func_GetDriveType(void);
@@ -39,6 +40,7 @@ const struct test winetest_testlist[] =
     { "dosdev",                      func_dosdev },
     { "FindActCtxSectionStringW",    func_FindActCtxSectionStringW },
     { "FindFiles",                   func_FindFiles },
     { "dosdev",                      func_dosdev },
     { "FindActCtxSectionStringW",    func_FindActCtxSectionStringW },
     { "FindFiles",                   func_FindFiles },
+    { "FormatMessage",               func_FormatMessage },
     { "GetComputerNameEx",           func_GetComputerNameEx },
     { "GetCurrentDirectory",         func_GetCurrentDirectory },
     { "GetDriveType",                func_GetDriveType },
     { "GetComputerNameEx",           func_GetComputerNameEx },
     { "GetCurrentDirectory",         func_GetCurrentDirectory },
     { "GetDriveType",                func_GetDriveType },