[WS2_32_APITEST] Add a test showing that GetFileType / _open_osfhandle should succeed.

CORE-13067
This commit is contained in:
Mark Jansen 2018-03-19 22:34:45 +01:00
parent 745ef8bf3a
commit 3bf5349172
No known key found for this signature in database
GPG key ID: B39240EE84BEAE8B
3 changed files with 52 additions and 0 deletions

View file

@ -10,6 +10,7 @@ list(APPEND SOURCE
ioctlsocket.c
nonblocking.c
nostartup.c
open_osfhandle.c
recv.c
send.c
WSAAsync.c

View file

@ -0,0 +1,49 @@
/*
* PROJECT: ReactOS api tests
* LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
* PURPOSE: Test for open_osfhandle on WSASocket
* COPYRIGHT: Copyright 2018 Mark Jansen (mark.jansen@reactos.org)
*/
#include "ws2_32.h"
#include <io.h>
#include <fcntl.h>
static void run_open_osfhandle(void)
{
DWORD type;
int handle, err;
SOCKET fd = WSASocketA(AF_INET, SOCK_STREAM, 0, NULL, 0, 0);
ok (fd != INVALID_SOCKET, "Invalid socket\n");
if (fd == INVALID_SOCKET)
return;
type = GetFileType((HANDLE)fd);
ok(type == FILE_TYPE_PIPE, "Expected type FILE_TYPE_PIPE, was: %lu\n", type);
handle = _open_osfhandle(fd, _O_BINARY | _O_RDWR);
err = *_errno();
ok(handle != -1, "Expected a valid handle (%i)\n", err);
if (handle != -1)
{
/* To close a file opened with _open_osfhandle, call _close. The underlying handle is also closed by
a call to _close, so it is not necessary to call the Win32 function CloseHandle on the original handle. */
_close(handle);
}
else
{
closesocket(fd);
}
}
START_TEST(open_osfhandle)
{
WSADATA wdata;
int iResult = WSAStartup(MAKEWORD(2, 2), &wdata);
ok(iResult == 0, "WSAStartup failed, iResult == %d\n", iResult);
run_open_osfhandle();
WSACleanup();
}

View file

@ -12,6 +12,7 @@ extern void func_getservbyport(void);
extern void func_ioctlsocket(void);
extern void func_nonblocking(void);
extern void func_nostartup(void);
extern void func_open_osfhandle(void);
extern void func_recv(void);
extern void func_send(void);
extern void func_WSAAsync(void);
@ -30,6 +31,7 @@ const struct test winetest_testlist[] =
{ "ioctlsocket", func_ioctlsocket },
{ "nonblocking", func_nonblocking },
{ "nostartup", func_nostartup },
{ "open_osfhandle", func_open_osfhandle },
{ "recv", func_recv },
{ "send", func_send },
{ "WSAAsync", func_WSAAsync },