=?UTF-8?Q?Michael=20M=C3=BCller=20?=: kernel32/tests: Add additional tests for overlapped handling of CreateNamedPipe.
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Apr 7 11:42:52 CDT 2016
Module: wine
Branch: master
Commit: 96aca1ad02a129f8bae5f0b9ad02cd59f6f74942
URL: http://source.winehq.org/git/wine.git/?a=commit;h=96aca1ad02a129f8bae5f0b9ad02cd59f6f74942
Author: Michael Müller <michael at fds-team.de>
Date: Thu Apr 7 08:45:53 2016 +0200
kernel32/tests: Add additional tests for overlapped handling of CreateNamedPipe.
Signed-off-by: Michael Müller <michael at fds-team.de>
Signed-off-by: Sebastian Lackner <sebastian at fds-team.de>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/kernel32/tests/pipe.c | 59 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 59 insertions(+)
diff --git a/dlls/kernel32/tests/pipe.c b/dlls/kernel32/tests/pipe.c
index 60336f8..77381f2 100644
--- a/dlls/kernel32/tests/pipe.c
+++ b/dlls/kernel32/tests/pipe.c
@@ -2091,6 +2091,64 @@ static void test_overlapped(void)
CloseHandle(thread);
}
+static void test_overlapped_error(void)
+{
+ HANDLE pipe, file, event;
+ DWORD err, numbytes;
+ OVERLAPPED overlapped;
+ BOOL ret;
+
+ event = CreateEventA(NULL, TRUE, FALSE, NULL);
+ ok(event != NULL, "CreateEventA failed with %u\n", GetLastError());
+
+ pipe = CreateNamedPipeA(PIPENAME, PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED,
+ PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT,
+ 1, 1024, 1024, NMPWAIT_WAIT_FOREVER, NULL);
+ ok(pipe != INVALID_HANDLE_VALUE, "CreateNamedPipe failed with %u\n", GetLastError());
+
+ memset(&overlapped, 0, sizeof(overlapped));
+ overlapped.hEvent = event;
+ ret = ConnectNamedPipe(pipe, &overlapped);
+ err = GetLastError();
+ ok(ret == FALSE, "ConnectNamedPipe succeeded\n");
+ ok(err == ERROR_IO_PENDING, "expected ERROR_IO_PENDING, got %u\n", err);
+
+ file = CreateFileA(PIPENAME, GENERIC_READ | GENERIC_WRITE, 0, NULL,
+ OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);
+ ok(file != INVALID_HANDLE_VALUE, "CreateFile failed with %u\n", GetLastError());
+
+ numbytes = 0xdeadbeef;
+ ret = GetOverlappedResult(pipe, &overlapped, &numbytes, TRUE);
+ ok(ret == TRUE, "GetOverlappedResult failed\n");
+ ok(numbytes == 0, "expected 0, got %u\n", numbytes);
+ ok(overlapped.Internal == STATUS_SUCCESS, "expected STATUS_SUCCESS, got %08lx\n", overlapped.Internal);
+
+ CloseHandle(file);
+ CloseHandle(pipe);
+
+ pipe = CreateNamedPipeA(PIPENAME, PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED,
+ PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT,
+ 1, 1024, 1024, NMPWAIT_WAIT_FOREVER, NULL);
+ ok(pipe != INVALID_HANDLE_VALUE, "CreateNamedPipe failed with %u\n", GetLastError());
+
+ file = CreateFileA(PIPENAME, GENERIC_READ | GENERIC_WRITE, 0, NULL,
+ OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);
+ ok(file != INVALID_HANDLE_VALUE, "CreateFile failed with %u\n", GetLastError());
+
+ memset(&overlapped, 0, sizeof(overlapped));
+ overlapped.hEvent = event;
+ ret = ConnectNamedPipe(pipe, &overlapped);
+ err = GetLastError();
+ ok(ret == FALSE, "ConnectNamedPipe succeeded\n");
+ ok(err == ERROR_PIPE_CONNECTED, "expected ERROR_PIPE_CONNECTED, got %u\n", err);
+ todo_wine ok(overlapped.Internal == STATUS_PENDING, "expected STATUS_PENDING, got %08lx\n", overlapped.Internal);
+
+ CloseHandle(file);
+ CloseHandle(pipe);
+
+ CloseHandle(event);
+}
+
static void test_NamedPipeHandleState(void)
{
HANDLE server, client;
@@ -2372,6 +2430,7 @@ START_TEST(pipe)
test_CloseHandle();
test_impersonation();
test_overlapped();
+ test_overlapped_error();
test_NamedPipeHandleState();
test_readfileex_pending();
}
More information about the wine-cvs
mailing list