kernel32/tests: Add a test to show that WaitCommEvent should fail if there is a pending wait.

This commit is contained in:
Dmitry Timoshkov 2013-09-02 18:27:01 +09:00 committed by Alexandre Julliard
parent 663dbd9f1c
commit 4135900235
1 changed files with 11 additions and 1 deletions

View File

@ -783,7 +783,7 @@ static void test_waittxempty(void)
DWORD before, after, bytes, timediff, evtmask, errors, i; DWORD before, after, bytes, timediff, evtmask, errors, i;
BOOL res; BOOL res;
DWORD baud = SLOWBAUD; DWORD baud = SLOWBAUD;
OVERLAPPED ovl_write, ovl_wait; OVERLAPPED ovl_write, ovl_wait, ovl_wait2;
COMSTAT stat; COMSTAT stat;
hcom = test_OpenComm(TRUE); hcom = test_OpenComm(TRUE);
@ -956,6 +956,16 @@ todo_wine
{ {
ok(!evtmask, "WaitCommEvent: expected 0, got %#x\n", evtmask); ok(!evtmask, "WaitCommEvent: expected 0, got %#x\n", evtmask);
S(U(ovl_wait2)).Offset = 0;
S(U(ovl_wait2)).OffsetHigh = 0;
ovl_wait2.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
SetLastError(0xdeadbeef);
res = WaitCommEvent(hcom, &evtmask, &ovl_wait2);
ok(!res, "WaitCommEvent should fail if there is a pending wait\n");
todo_wine
ok(GetLastError() == ERROR_INVALID_PARAMETER, "expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
CloseHandle(ovl_wait2.hEvent);
/* unblock pending wait */ /* unblock pending wait */
trace("recovering after WAIT_TIMEOUT...\n"); trace("recovering after WAIT_TIMEOUT...\n");
/* FIXME: Wine fails to unblock with new mask being equal to the old one */ /* FIXME: Wine fails to unblock with new mask being equal to the old one */