1// Licensed to the .NET Foundation under one or more agreements.
2// The .NET Foundation licenses this file to you under the MIT license.
3// See the LICENSE file in the project root for more information.
4
5/*============================================================
6**
7** Source: test1.c
8**
9** Purpose: Test for WaitForSingleObjectTest. Create two events, one
10** with a TRUE and one with FALSE intial state. Ensure that WaitForSingle
11** returns correct values for each of these.
12**
13**
14**=========================================================*/
15
16#include <palsuite.h>
17
18BOOL WaitForSingleObjectTest()
19{
20
21 BOOL bRet = FALSE;
22 DWORD dwRet = 0;
23
24 LPSECURITY_ATTRIBUTES lpEventAttributes = 0;
25 BOOL bManualReset = TRUE;
26 BOOL bInitialState = TRUE;
27
28 HANDLE hEvent;
29
30 /* Create an event, and ensure the HANDLE is valid */
31 hEvent = CreateEvent(lpEventAttributes, bManualReset,
32 bInitialState, NULL);
33
34 if (hEvent != INVALID_HANDLE_VALUE)
35 {
36
37 /* Call WaitForSingleObject with 0 time on the event. It
38 should return WAIT_OBJECT_0
39 */
40
41 dwRet = WaitForSingleObject(hEvent,0);
42
43 if (dwRet != WAIT_OBJECT_0)
44 {
45 Trace("WaitForSingleObjectTest:WaitForSingleObject failed (%x)\n", GetLastError());
46 }
47 else
48 {
49 bRet = CloseHandle(hEvent);
50
51 if (!bRet)
52 {
53 Trace("WaitForSingleObjectTest:CloseHandle failed (%x)\n", GetLastError());
54 }
55 }
56 }
57 else
58 {
59 Trace("WaitForSingleObjectTest:CreateEvent failed (%x)\n", GetLastError());
60 }
61
62 /* If the first section passed, Create another event, with the
63 intial state being FALSE this time.
64 */
65
66 if (bRet)
67 {
68 bRet = FALSE;
69
70 bInitialState = FALSE;
71
72 hEvent = CreateEvent( lpEventAttributes,
73 bManualReset, bInitialState, NULL);
74
75 if (hEvent != INVALID_HANDLE_VALUE)
76 {
77
78 /* Test WaitForSingleObject and ensure that it returns
79 WAIT_TIMEOUT in this case.
80 */
81
82 dwRet = WaitForSingleObject(hEvent,0);
83
84 if (dwRet != WAIT_TIMEOUT)
85 {
86 Trace("WaitForSingleObjectTest:WaitForSingleObject failed (%x)\n", GetLastError());
87 }
88 else
89 {
90 bRet = CloseHandle(hEvent);
91
92 if (!bRet)
93 {
94 Trace("WaitForSingleObjectTest:CloseHandle failed (%x)\n", GetLastError());
95 }
96 }
97 }
98 else
99 {
100 Trace("WaitForSingleObjectTest::CreateEvent failed (%x)\n", GetLastError());
101 }
102 }
103 return bRet;
104}
105
106int __cdecl main(int argc, char **argv)
107{
108 if(0 != (PAL_Initialize(argc, argv)))
109 {
110 return ( FAIL );
111 }
112
113 if(!WaitForSingleObjectTest())
114 {
115 Fail ("Test failed\n");
116 }
117
118 PAL_Terminate();
119 return ( PASS );
120
121}
122