Bruno Jesus : ws2_32/tests: Add some FIONREAD tests.
Alexandre Julliard
julliard at winehq.org
Tue Jan 7 13:21:17 CST 2014
Module: wine
Branch: master
Commit: 7e4d075ec1859f5fadcad4a39a261237f1d8eb03
URL: http://source.winehq.org/git/wine.git/?a=commit;h=7e4d075ec1859f5fadcad4a39a261237f1d8eb03
Author: Bruno Jesus <00cpxxx at gmail.com>
Date: Mon Jan 6 20:58:54 2014 -0200
ws2_32/tests: Add some FIONREAD tests.
---
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;
More information about the wine-cvs
mailing list