ntdll/tests: Add more event op tests.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Jacek Caban 2019-03-11 18:06:27 +01:00 committed by Alexandre Julliard
parent cd5c9a2bed
commit a9d9d585a7
1 changed files with 44 additions and 4 deletions

View File

@ -31,8 +31,10 @@ static VOID (WINAPI *pRtlInitUnicodeString)( PUNICODE_STRING, LPCWSTR );
static VOID (WINAPI *pRtlFreeUnicodeString)(PUNICODE_STRING);
static NTSTATUS (WINAPI *pNtCreateEvent) ( PHANDLE, ACCESS_MASK, const POBJECT_ATTRIBUTES, BOOLEAN, BOOLEAN);
static NTSTATUS (WINAPI *pNtOpenEvent) ( PHANDLE, ACCESS_MASK, const POBJECT_ATTRIBUTES);
static NTSTATUS (WINAPI *pNtPulseEvent) ( HANDLE, PULONG );
static NTSTATUS (WINAPI *pNtPulseEvent) ( HANDLE, PLONG );
static NTSTATUS (WINAPI *pNtQueryEvent) ( HANDLE, EVENT_INFORMATION_CLASS, PVOID, ULONG, PULONG );
static NTSTATUS (WINAPI *pNtResetEvent) ( HANDLE, LONG* );
static NTSTATUS (WINAPI *pNtSetEvent) ( HANDLE, LONG* );
static NTSTATUS (WINAPI *pNtCreateJobObject)( PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES );
static NTSTATUS (WINAPI *pNtOpenJobObject)( PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES );
static NTSTATUS (WINAPI *pNtCreateKey)( PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES, ULONG,
@ -1605,6 +1607,7 @@ static void test_event(void)
{
HANDLE Event;
HANDLE Event2;
LONG prev_state = 0xdeadbeef;
NTSTATUS status;
UNICODE_STRING str;
OBJECT_ATTRIBUTES attr;
@ -1617,8 +1620,10 @@ static void test_event(void)
status = pNtCreateEvent(&Event, GENERIC_ALL, &attr, 1, 0);
ok( status == STATUS_SUCCESS, "NtCreateEvent failed %08x\n", status );
status = pNtPulseEvent(Event, NULL);
status = pNtPulseEvent(Event, &prev_state);
ok( status == STATUS_SUCCESS, "NtPulseEvent failed %08x\n", status );
todo_wine
ok( !prev_state, "prev_state = %x\n", prev_state );
status = pNtQueryEvent(Event, EventBasicInformation, &info, sizeof(info), NULL);
ok( status == STATUS_SUCCESS, "NtQueryEvent failed %08x\n", status );
@ -1629,13 +1634,46 @@ static void test_event(void)
ok( status == STATUS_SUCCESS, "NtOpenEvent failed %08x\n", status );
pNtClose(Event);
Event = Event2;
status = pNtQueryEvent(Event2, EventBasicInformation, &info, sizeof(info), NULL);
status = pNtQueryEvent(Event, EventBasicInformation, &info, sizeof(info), NULL);
ok( status == STATUS_SUCCESS, "NtQueryEvent failed %08x\n", status );
ok( info.EventType == 1 && info.EventState == 0,
"NtQueryEvent failed, expected 1 0, got %d %d\n", info.EventType, info.EventState );
pNtClose(Event2);
status = pNtSetEvent( Event, &prev_state );
ok( status == STATUS_SUCCESS, "NtSetEvent failed: %08x\n", status );
todo_wine
ok( !prev_state, "prev_state = %x\n", prev_state );
status = pNtSetEvent( Event, &prev_state );
ok( status == STATUS_SUCCESS, "NtSetEvent failed: %08x\n", status );
todo_wine
ok( prev_state == 1, "prev_state = %x\n", prev_state );
status = pNtResetEvent( Event, &prev_state );
ok( status == STATUS_SUCCESS, "NtSetEvent failed: %08x\n", status );
todo_wine
ok( prev_state == 1, "prev_state = %x\n", prev_state );
status = pNtResetEvent( Event, &prev_state );
ok( status == STATUS_SUCCESS, "NtSetEvent failed: %08x\n", status );
ok( !prev_state, "prev_state = %x\n", prev_state );
status = pNtPulseEvent( Event, &prev_state );
ok( status == STATUS_SUCCESS, "NtPulseEvent failed %08x\n", status );
ok( !prev_state, "prev_state = %x\n", prev_state );
status = pNtSetEvent( Event, &prev_state );
ok( status == STATUS_SUCCESS, "NtSetEvent failed: %08x\n", status );
ok( !prev_state, "prev_state = %x\n", prev_state );
status = pNtPulseEvent( Event, &prev_state );
ok( status == STATUS_SUCCESS, "NtPulseEvent failed %08x\n", status );
todo_wine
ok( prev_state == 1, "prev_state = %x\n", prev_state );
pNtClose(Event);
}
static const WCHAR keyed_nameW[] = {'\\','B','a','s','e','N','a','m','e','d','O','b','j','e','c','t','s',
@ -2139,6 +2177,8 @@ START_TEST(om)
pNtOpenEvent = (void *)GetProcAddress(hntdll, "NtOpenEvent");
pNtQueryEvent = (void *)GetProcAddress(hntdll, "NtQueryEvent");
pNtPulseEvent = (void *)GetProcAddress(hntdll, "NtPulseEvent");
pNtResetEvent = (void *)GetProcAddress(hntdll, "NtResetEvent");
pNtSetEvent = (void *)GetProcAddress(hntdll, "NtSetEvent");
pNtOpenMutant = (void *)GetProcAddress(hntdll, "NtOpenMutant");
pNtQueryMutant = (void *)GetProcAddress(hntdll, "NtQueryMutant");
pNtReleaseMutant = (void *)GetProcAddress(hntdll, "NtReleaseMutant");