Adding rostests as part of the tree restructure
[reactos.git] / rosapps / tests / event / event.c
1 #include <windows.h>
2 #include <stdio.h>
3
4 HANDLE events[2];
5
6 DWORD WINAPI thread( LPVOID crap )
7 {
8 SetEvent( events[0] );
9 if( crap )
10 SetEvent( events[1] );
11 return 1;
12 }
13
14 int main( void )
15 {
16 DWORD id, Status;
17 printf( "Creating events\n" );
18 events[0] = CreateEvent( 0, TRUE, FALSE, 0 );
19 events[1] = CreateEvent( 0, TRUE, FALSE, 0 );
20 printf( "Created events\n" );
21 CreateThread( 0, 0, thread, 0, 0, &id );
22 printf( "WaitForSingleObject %s\n", ( WaitForSingleObject( events[0], INFINITE ) == WAIT_OBJECT_0 ? "worked" : "failed" ) );
23 ResetEvent( events[0] );
24 CreateThread( 0, 0, thread, 0, 0, &id );
25 printf( "WaitForMultipleObjects with waitall = FALSE %s\n", ( WaitForMultipleObjects( 2, events, FALSE, INFINITE ) == WAIT_OBJECT_0 ? "worked" : "failed" ) );
26 ResetEvent( events[0] );
27 CreateThread( 0, 0, thread, (void *)1, 0, &id );
28 Status = WaitForMultipleObjects( 2, events, TRUE, INFINITE );
29 printf( "WaitForMultipleObjects with waitall = TRUE %s\n", ( Status == WAIT_OBJECT_0 || Status == WAIT_OBJECT_0 + 1 ? "worked" : "failed" ) );
30 ResetEvent( events[0] );
31 printf( "WaitForSingleObject with timeout %s\n", ( WaitForSingleObject( events[0], 100 ) == WAIT_TIMEOUT ? "worked" : "failed" ) );
32 return 0;
33 }