Bruno Jesus : ws2_32/tests: Add a 2 buffer WSARecv test.
Alexandre Julliard
julliard at winehq.org
Mon Feb 27 15:12:09 CST 2017
Module: wine
Branch: master
Commit: 803418c239934093e7a1d1fad3ee2d8079ee5817
URL: http://source.winehq.org/git/wine.git/?a=commit;h=803418c239934093e7a1d1fad3ee2d8079ee5817
Author: Bruno Jesus <bjesus at codeweavers.com>
Date: Sat Feb 25 12:46:49 2017 -0300
ws2_32/tests: Add a 2 buffer WSARecv test.
Signed-off-by: Bruno Jesus <bjesus at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/ws2_32/tests/sock.c | 44 +++++++++++++++++++++++++++++++-------------
1 file changed, 31 insertions(+), 13 deletions(-)
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c
index b42c078..b61905e 100644
--- a/dlls/ws2_32/tests/sock.c
+++ b/dlls/ws2_32/tests/sock.c
@@ -6626,7 +6626,7 @@ static void test_WSARecv(void)
{
SOCKET src, dest, server = INVALID_SOCKET;
char buf[20];
- WSABUF bufs;
+ WSABUF bufs[2];
WSAOVERLAPPED ov;
DWORD bytesReturned, flags, id;
struct linger ling;
@@ -6645,8 +6645,8 @@ static void test_WSARecv(void)
memset(&ov, 0, sizeof(ov));
flags = 0;
- bufs.len = 2;
- bufs.buf = buf;
+ bufs[0].len = 2;
+ bufs[0].buf = buf;
/* Send 4 bytes and receive in two calls of 2 */
SetLastError(0xdeadbeef);
@@ -6655,31 +6655,49 @@ static void test_WSARecv(void)
ok(GetLastError() == ERROR_SUCCESS, "Expected 0, got %d\n", GetLastError());
SetLastError(0xdeadbeef);
bytesReturned = 0xdeadbeef;
- iret = WSARecv(dest, &bufs, 1, &bytesReturned, &flags, NULL, NULL);
+ iret = WSARecv(dest, bufs, 1, &bytesReturned, &flags, NULL, NULL);
ok(!iret, "Expected 0, got %d\n", iret);
- ok(bytesReturned, "Expected 2, got %d\n", bytesReturned);
+ ok(bytesReturned == 2, "Expected 2, got %d\n", bytesReturned);
ok(GetLastError() == ERROR_SUCCESS, "Expected 0, got %d\n", GetLastError());
SetLastError(0xdeadbeef);
bytesReturned = 0xdeadbeef;
- iret = WSARecv(dest, &bufs, 1, &bytesReturned, &flags, NULL, NULL);
+ iret = WSARecv(dest, bufs, 1, &bytesReturned, &flags, NULL, NULL);
ok(!iret, "Expected 0, got %d\n", iret);
- ok(bytesReturned, "Expected 2, got %d\n", bytesReturned);
+ ok(bytesReturned == 2, "Expected 2, got %d\n", bytesReturned);
ok(GetLastError() == ERROR_SUCCESS, "Expected 0, got %d\n", GetLastError());
- bufs.len = 4;
+ bufs[0].len = 4;
SetLastError(0xdeadbeef);
iret = send(src, "test", 4, 0);
ok(iret == 4, "Expected 4, got %d\n", iret);
ok(GetLastError() == ERROR_SUCCESS, "Expected 0, got %d\n", GetLastError());
SetLastError(0xdeadbeef);
bytesReturned = 0xdeadbeef;
- iret = WSARecv(dest, &bufs, 1, &bytesReturned, &flags, NULL, NULL);
+ iret = WSARecv(dest, bufs, 1, &bytesReturned, &flags, NULL, NULL);
ok(!iret, "Expected 0, got %d\n", iret);
- ok(bytesReturned, "Expected 4, got %d\n", bytesReturned);
+ ok(bytesReturned == 4, "Expected 4, got %d\n", bytesReturned);
ok(GetLastError() == ERROR_SUCCESS, "Expected 0, got %d\n", GetLastError());
- bufs.len = sizeof(buf);
+ /* Test 2 buffers */
+ bufs[0].len = 4;
+ bufs[1].len = 5;
+ bufs[1].buf = buf + 10;
+ SetLastError(0xdeadbeef);
+ iret = send(src, "deadbeefs", 9, 0);
+ ok(iret == 9, "Expected 9, got %d\n", iret);
+ ok(GetLastError() == ERROR_SUCCESS, "Expected 0, got %d\n", GetLastError());
+ SetLastError(0xdeadbeef);
+ bytesReturned = 0xdeadbeef;
+ iret = WSARecv(dest, bufs, 2, &bytesReturned, &flags, NULL, NULL);
+ ok(!iret, "Expected 0, got %d\n", iret);
+ ok(bytesReturned == 9, "Expected 9, got %d\n", bytesReturned);
+ bufs[0].buf[4] = '\0';
+ bufs[1].buf[5] = '\0';
+ ok(!strcmp(bufs[0].buf, "dead"), "buf[0] doesn't match: %s != dead\n", bufs[0].buf);
+ ok(!strcmp(bufs[1].buf, "beefs"), "buf[1] doesn't match: %s != beefs\n", bufs[1].buf);
+ ok(GetLastError() == ERROR_SUCCESS, "Expected 0, got %d\n", GetLastError());
+ bufs[0].len = sizeof(buf);
ov.hEvent = CreateEventA(NULL, FALSE, FALSE, NULL);
ok(ov.hEvent != NULL, "could not create event object, errno = %d\n", GetLastError());
if (!ov.hEvent)
@@ -6690,10 +6708,10 @@ static void test_WSARecv(void)
iret = setsockopt (src, SOL_SOCKET, SO_LINGER, (char *) &ling, sizeof(ling));
ok(!iret, "Failed to set linger %d\n", GetLastError());
- iret = WSARecv(dest, &bufs, 1, NULL, &flags, &ov, NULL);
+ iret = WSARecv(dest, bufs, 1, NULL, &flags, &ov, NULL);
ok(iret == SOCKET_ERROR && GetLastError() == ERROR_IO_PENDING, "WSARecv failed - %d error %d\n", iret, GetLastError());
- iret = WSARecv(dest, &bufs, 1, &bytesReturned, &flags, &ov, NULL);
+ iret = WSARecv(dest, bufs, 1, &bytesReturned, &flags, &ov, NULL);
ok(iret == SOCKET_ERROR && GetLastError() == ERROR_IO_PENDING, "WSARecv failed - %d error %d\n", iret, GetLastError());
closesocket(src);
More information about the wine-cvs
mailing list