[PATCH] kernel32/tests: Run the tests again on Win9x (TimerQueue)

Detlef Riekenberg wine.dev at web.de
Fri Jul 18 14:12:29 CDT 2008


---
 dlls/kernel32/tests/sync.c |   47 +++++++++++++++++++++++++++++---------------
 1 files changed, 31 insertions(+), 16 deletions(-)

diff --git a/dlls/kernel32/tests/sync.c b/dlls/kernel32/tests/sync.c
index b01498b..b41a5a0 100644
--- a/dlls/kernel32/tests/sync.c
+++ b/dlls/kernel32/tests/sync.c
@@ -27,9 +27,16 @@
 
 #include "wine/test.h"
 
+static HANDLE (WINAPI *pCreateTimerQueue)(void);
+static BOOL   (WINAPI *pCreateTimerQueueTimer)(PHANDLE, HANDLE, WAITORTIMERCALLBACK,
+                                               PVOID, DWORD, DWORD, ULONG);
 static HANDLE (WINAPI *pCreateWaitableTimerA)(SECURITY_ATTRIBUTES*,BOOL,LPCSTR);
+static BOOL   (WINAPI *pDeleteTimerQueueEx)(HANDLE, HANDLE);
 static HANDLE (WINAPI *pOpenWaitableTimerA)(DWORD,BOOL,LPCSTR);
 
+
+/* ##################### */
+
 static void test_signalandwait(void)
 {
     DWORD (WINAPI *pSignalObjectAndWait)(HANDLE, HANDLE, DWORD, BOOL);
@@ -549,61 +556,66 @@ static void test_timer_queue(void)
     HANDLE e;
     BOOL ret;
 
+    if (!pCreateTimerQueue || !pCreateTimerQueueTimer || !pDeleteTimerQueueEx) {
+        skip("TimerQueue API not present\n");
+        return;
+    }
+
     /* Test asyncronous deletion of the queue.  */
-    q = CreateTimerQueue();
+    q = pCreateTimerQueue();
     todo_wine
     ok(q != NULL, "CreateTimerQueue\n");
 
     SetLastError(0xdeadbeef);
-    ret = DeleteTimerQueueEx(q, NULL);
+    ret = pDeleteTimerQueueEx(q, NULL);
     ok(!ret, "DeleteTimerQueueEx\n");
     todo_wine
     ok(GetLastError() == ERROR_IO_PENDING, "DeleteTimerQueueEx\n");
 
     /* Test syncronous deletion of the queue and running timers.  */
-    q = CreateTimerQueue();
+    q = pCreateTimerQueue();
     todo_wine
     ok(q != NULL, "CreateTimerQueue\n");
 
     /* Called once.  */
     t1 = NULL;
     n1 = 0;
-    ret = CreateTimerQueueTimer(&t1, q, timer_queue_cb1, &n1, 0,
-                                0, 0);
+    ret = pCreateTimerQueueTimer(&t1, q, timer_queue_cb1, &n1, 0,
+                                 0, 0);
     ok(ret, "CreateTimerQueueTimer\n");
 
     /* A slow one.  */
     t2 = NULL;
     n2 = 0;
-    ret = CreateTimerQueueTimer(&t2, q, timer_queue_cb1, &n2, 0,
-                                100, 0);
+    ret = pCreateTimerQueueTimer(&t2, q, timer_queue_cb1, &n2, 0,
+                                 100, 0);
     ok(ret, "CreateTimerQueueTimer\n");
 
     /* A fast one.  */
     t3 = NULL;
     n3 = 0;
-    ret = CreateTimerQueueTimer(&t3, q, timer_queue_cb1, &n3, 0,
-                                10, 0);
+    ret = pCreateTimerQueueTimer(&t3, q, timer_queue_cb1, &n3, 0,
+                                 10, 0);
     ok(ret, "CreateTimerQueueTimer\n");
 
     /* Start really late (it won't start).  */
     t4 = NULL;
     n4 = 0;
-    ret = CreateTimerQueueTimer(&t4, q, timer_queue_cb1, &n4, 10000,
-                                10, 0);
+    ret = pCreateTimerQueueTimer(&t4, q, timer_queue_cb1, &n4, 10000,
+                                 10, 0);
     ok(ret, "CreateTimerQueueTimer\n");
 
     /* Start soon, but delay so long it won't run again.  */
     t5 = NULL;
     n5 = 0;
-    ret = CreateTimerQueueTimer(&t5, q, timer_queue_cb1, &n5, 0,
-                                10000, 0);
+    ret = pCreateTimerQueueTimer(&t5, q, timer_queue_cb1, &n5, 0,
+                                 10000, 0);
     ok(ret, "CreateTimerQueueTimer\n");
 
     /* Give them a chance to do some work.  */
     Sleep(500);
 
-    ret = DeleteTimerQueueEx(q, INVALID_HANDLE_VALUE);
+    ret = pDeleteTimerQueueEx(q, INVALID_HANDLE_VALUE);
     todo_wine
     {
     ok(ret, "DeleteTimerQueueEx\n");
@@ -622,12 +634,12 @@ static void test_timer_queue(void)
         return;
     }
 
-    q = CreateTimerQueue();
+    q = pCreateTimerQueue();
     todo_wine
     ok(q != NULL, "CreateTimerQueue\n");
 
     SetLastError(0xdeadbeef);
-    ret = DeleteTimerQueueEx(q, e);
+    ret = pDeleteTimerQueueEx(q, e);
     ok(!ret, "DeleteTimerQueueEx\n");
     todo_wine
     {
@@ -641,7 +653,10 @@ static void test_timer_queue(void)
 START_TEST(sync)
 {
     HMODULE hdll = GetModuleHandle("kernel32");
+    pCreateTimerQueue = (void*)GetProcAddress(hdll, "CreateTimerQueue");
+    pCreateTimerQueueTimer = (void*)GetProcAddress(hdll, "CreateTimerQueueTimer");
     pCreateWaitableTimerA = (void*)GetProcAddress(hdll, "CreateWaitableTimerA");
+    pDeleteTimerQueueEx = (void*)GetProcAddress(hdll, "DeleteTimerQueueEx");
     pOpenWaitableTimerA = (void*)GetProcAddress(hdll, "OpenWaitableTimerA");
 
     test_signalandwait();
-- 
1.5.3.7


--0F1p//8PRICkK4MW--



More information about the wine-patches mailing list