KERNEL/tests: test GetThreadExitCode

Saulius Krasuckas saulius2 at ar.fi.lt
Fri Oct 28 03:07:49 CDT 2005


Log message:
	Saulius Krasuckas <saulius.krasuckas at ieee.org>
	* Add a test for GetThreadExitCode.
	* Use GetModuleHandleA as kernel32 should be present on every system.


Index: dlls/kernel/tests/thread.c
===================================================================
RCS file: /home/wine/wine/dlls/kernel/tests/thread.c,v
retrieving revision 1.25
diff -u -r1.25 thread.c
--- dlls/kernel/tests/thread.c	13 Sep 2005 15:00:33 -0000	1.25
+++ dlls/kernel/tests/thread.c	28 Oct 2005 08:00:02 -0000
@@ -567,14 +567,35 @@
    }
 }
 
+static VOID test_GetThreadExitCode(void)
+{
+    DWORD exitCode, threadid;
+    DWORD GLE, ret;
+    HANDLE thread;
+
+    ret = GetExitCodeThread((HANDLE)0x2bad2bad,&exitCode);
+    ok(ret==0, "GetExitCodeThread returned non zero value: %ld\n", ret);
+    GLE = GetLastError();
+    ok(GLE==ERROR_INVALID_HANDLE, "GetLastError returned %ld (expected 6)\n", GLE);
+
+    thread = CreateThread(NULL,0,threadFunc2,NULL,0,&threadid);
+    ret = WaitForSingleObject(thread,100);
+    ok(ret==WAIT_OBJECT_0, "threadFunc2 did not exit during 100 ms\n");
+    ret = GetExitCodeThread(thread,&exitCode);
+    ok(ret==exitCode || ret==1, 
+       "GetExitCodeThread returned %ld (expected 1 or %ld)\n", ret, exitCode);
+    ok(exitCode==99, "threadFunc2 exited with code %ld (expected 99)\n", exitCode);
+    ok(CloseHandle(thread)!=0,"Error closing thread handle\n");
+}
+
 START_TEST(thread)
 {
    HINSTANCE lib;
 /* Neither Cygwin nor mingW export OpenThread, so do a dynamic check
    so that the compile passes
 */
-   lib=LoadLibraryA("kernel32");
-   ok(lib!=NULL,"Couldn't load kernel32.dll\n");
+   lib=GetModuleHandleA("kernel32.dll");
+   ok(lib!=NULL,"Couldn't get a handle for kernel32.dll\n");
    pGetThreadPriorityBoost=(GetThreadPriorityBoost_t)GetProcAddress(lib,"GetThreadPriorityBoost");
    pOpenThread=(OpenThread_t)GetProcAddress(lib,"OpenThread");
    pSetThreadIdealProcessor=(SetThreadIdealProcessor_t)GetProcAddress(lib,"SetThreadIdealProcessor");
@@ -587,4 +608,5 @@
    test_thread_priority();
    test_GetThreadTimes();
    test_thread_processor();
+   test_GetThreadExitCode();
 }



More information about the wine-patches mailing list