Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers...
[reactos.git] / dll / win32 / ws2_32 / tests / tests / WinsockEvent.c
diff --git a/dll/win32/ws2_32/tests/tests/WinsockEvent.c b/dll/win32/ws2_32/tests/tests/WinsockEvent.c
new file mode 100644 (file)
index 0000000..63bad75
--- /dev/null
@@ -0,0 +1,83 @@
+#include <windows.h>
+#include <winsock2.h>
+#include "regtests.h"
+
+#define TestHandle (HANDLE) 1
+
+static BOOL CloseHandleSuccessCalled = FALSE;
+
+static BOOL WINAPI
+MockCloseHandleSuccess(HANDLE hObject)
+{
+  CloseHandleSuccessCalled = TRUE;
+  _AssertEqualValue(TestHandle, hObject);
+  return TRUE;
+}
+
+static HOOK HooksSuccess[] =
+{
+  {"CloseHandle", MockCloseHandleSuccess},
+  {NULL, NULL}
+};
+
+static void
+TestWSACloseEventSuccess()
+{
+  BOOL result;
+
+  _SetHooks(HooksSuccess);
+  result = WSACloseEvent(TestHandle);
+  _AssertTrue(result);
+  _AssertEqualValue(NO_ERROR, WSAGetLastError());
+  _AssertTrue(CloseHandleSuccessCalled);
+  _UnsetAllHooks();
+}
+
+
+static BOOL CloseHandleFailureCalled = FALSE;
+
+static BOOL WINAPI
+MockCloseHandleFailure(HANDLE hObject)
+{
+  CloseHandleFailureCalled = TRUE;
+  return FALSE;
+}
+
+static HOOK HooksFailure[] =
+{
+  {"CloseHandle", MockCloseHandleFailure},
+  {NULL, NULL}
+};
+
+static void
+TestWSACloseEventFailure()
+{
+  BOOL result;
+
+  _SetHooks(HooksFailure);
+  result = WSACloseEvent(TestHandle);
+  _AssertFalse(result);
+  _AssertEqualValue(WSA_INVALID_HANDLE, WSAGetLastError());
+  _AssertTrue(CloseHandleFailureCalled);
+  _UnsetAllHooks();
+}
+
+
+static void
+TestWSACloseEvent()
+{
+  TestWSACloseEventSuccess();
+  TestWSACloseEventFailure();
+}
+
+static void
+RunTest()
+{
+  WSADATA WSAData;
+
+  WSAStartup(MAKEWORD(2, 0), &WSAData);
+  TestWSACloseEvent();
+  WSACleanup();
+}
+
+_Dispatcher(WinsockeventTest, "Winsock 2 event")