[1/2] ws2_32/tests: Add some FIONREAD tests
Bruno Jesus
00cpxxx at gmail.com
Mon Jan 6 16:58:54 CST 2014
-------------- next part --------------
---
dlls/ws2_32/tests/sock.c | 28 +++++++++++++++++++++++++++-
1 file changed, 27 insertions(+), 1 deletion(-)
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c
index 54b0840..9a90454 100644
--- a/dlls/ws2_32/tests/sock.c
+++ b/dlls/ws2_32/tests/sock.c
@@ -3859,7 +3859,7 @@ static void test_addr_to_print(void)
static void test_ioctlsocket(void)
{
- SOCKET sock;
+ SOCKET sock, src, dst;
struct tcp_keepalive kalive;
int ret, optval;
static const LONG cmds[] = {FIONBIO, FIONREAD, SIOCATMARK};
@@ -3943,6 +3943,32 @@ static void test_ioctlsocket(void)
ok(ret == 0 || broken(ret == SOCKET_ERROR), "WSAIoctl failed unexpectedly\n");
closesocket(sock);
+
+ if (tcp_socketpair(&src, &dst) != 0)
+ {
+ ok(0, "creating socket pair failed, skipping test\n");
+ return;
+ }
+
+ /* test FIONREAD on TCP sockets */
+ optval = 0xdeadbeef;
+ ret = WSAIoctl(dst, FIONREAD, NULL, 0, &optval, sizeof(optval), &arg, NULL, NULL);
+ ok(ret == 0, "WSAIoctl failed unexpectedly with error %d\n", WSAGetLastError());
+ ok(optval == 0, "FIONREAD should have returned 0 bytes, got %d instead\n", optval);
+
+ optval = 0xdeadbeef;
+ ok(send(src, "TEST", 4, 0) == 4, "failed to send test data\n");
+ Sleep(100);
+ ret = WSAIoctl(dst, FIONREAD, NULL, 0, &optval, sizeof(optval), &arg, NULL, NULL);
+ ok(ret == 0, "WSAIoctl failed unexpectedly with error %d\n", WSAGetLastError());
+ ok(optval == 4, "FIONREAD should have returned 4 bytes, got %d instead\n", optval);
+
+ closesocket(dst);
+ optval = 0xdeadbeef;
+ ret = WSAIoctl(dst, FIONREAD, NULL, 0, &optval, sizeof(optval), &arg, NULL, NULL);
+ ok(ret == SOCKET_ERROR, "WSAIoctl succeeded unexpectedly\n");
+ ok(optval == 0xdeadbeef, "FIONREAD should not have changed last error, got %d instead\n", optval);
+ closesocket(src);
}
static BOOL drain_pause = FALSE;
--
1.8.3.2
More information about the wine-patches
mailing list