[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
More information about the wine-patches
mailing list