[USER32_DYNAMIC_APITEST]
authorThomas Faber <thomas.faber@reactos.org>
Tue, 17 Nov 2015 13:45:59 +0000 (13:45 +0000)
committerThomas Faber <thomas.faber@reactos.org>
Tue, 17 Nov 2015 13:45:59 +0000 (13:45 +0000)
- Add a test that uses LoadLibrary/FreeLibrary on user32.dll, causing it to re-initialize.
CORE-10540

svn path=/trunk/; revision=69923

rostests/apitests/CMakeLists.txt
rostests/apitests/user32_dynamic/CMakeLists.txt [new file with mode: 0644]
rostests/apitests/user32_dynamic/load.c [new file with mode: 0644]
rostests/apitests/user32_dynamic/testlist.c [new file with mode: 0644]

index c111e9c..7513b51 100644 (file)
@@ -22,6 +22,7 @@ add_subdirectory(setupapi)
 add_subdirectory(shell32)
 add_subdirectory(psapi)
 add_subdirectory(user32)
 add_subdirectory(shell32)
 add_subdirectory(psapi)
 add_subdirectory(user32)
+add_subdirectory(user32_dynamic)
 if(NOT ARCH STREQUAL "amd64")
     add_subdirectory(w32kdll)
     add_subdirectory(w32knapi)
 if(NOT ARCH STREQUAL "amd64")
     add_subdirectory(w32kdll)
     add_subdirectory(w32knapi)
diff --git a/rostests/apitests/user32_dynamic/CMakeLists.txt b/rostests/apitests/user32_dynamic/CMakeLists.txt
new file mode 100644 (file)
index 0000000..496e5ea
--- /dev/null
@@ -0,0 +1,5 @@
+
+add_executable(user32_dynamic_apitest load.c testlist.c)
+set_module_type(user32_dynamic_apitest win32cui)
+add_importlibs(user32_dynamic_apitest msvcrt kernel32)
+add_cd_file(TARGET user32_dynamic_apitest DESTINATION reactos/bin FOR all)
diff --git a/rostests/apitests/user32_dynamic/load.c b/rostests/apitests/user32_dynamic/load.c
new file mode 100644 (file)
index 0000000..10599a4
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * PROJECT:         ReactOS API tests
+ * LICENSE:         LGPLv2.1+ - See COPYING.LIB in the top level directory
+ * PURPOSE:         Test for loading/unloading user32.dll
+ * PROGRAMMERS:     Thomas Faber <thomas.faber@reactos.org>
+ */
+
+#include <apitest.h>
+
+START_TEST(load)
+{
+    HMODULE hUser32;
+    HMODULE hUser32_2;
+    BOOL Ret;
+    DWORD Error;
+
+    SetLastError(12345);
+    hUser32 = LoadLibraryW(L"user32");
+    Error = GetLastError();
+    ok(hUser32 != NULL, "LoadLibrary failed\n");
+    ok(Error != 12345, "Error = %lu\n", Error);
+
+    SetLastError(12345);
+    hUser32_2 = LoadLibraryW(L"user32");
+    Error = GetLastError();
+    ok(hUser32_2 == hUser32, "LoadLibrary failed\n");
+    ok(Error == 12345, "Error = %lu\n", Error);
+
+    Ret = FreeLibrary(hUser32);
+    Error = GetLastError();
+    ok(Ret == TRUE, "FreeLibrary returned %d\n", Ret);
+    ok(Error == 12345, "Error = %lu\n", Error);
+
+    Ret = FreeLibrary(hUser32);
+    Error = GetLastError();
+    ok(Ret == TRUE, "FreeLibrary returned %d\n", Ret);
+    ok(Error == 12345, "Error = %lu\n", Error);
+
+    SetLastError(12345);
+    hUser32 = LoadLibraryW(L"user32");
+    Error = GetLastError();
+    ok(hUser32 != NULL, "LoadLibrary failed\n");
+    ok(Error == 12345, "Error = %lu\n", Error);
+
+    Ret = FreeLibrary(hUser32);
+    Error = GetLastError();
+    ok(Ret == TRUE, "FreeLibrary returned %d\n", Ret);
+    ok(Error == 12345, "Error = %lu\n", Error);
+}
diff --git a/rostests/apitests/user32_dynamic/testlist.c b/rostests/apitests/user32_dynamic/testlist.c
new file mode 100644 (file)
index 0000000..9d48d88
--- /dev/null
@@ -0,0 +1,10 @@
+#define STANDALONE
+#include <apitest.h>
+
+extern void func_load(void);
+
+const struct test winetest_testlist[] =
+{
+    { "load", func_load },
+    { 0, 0 }
+};