reactos/modules/rostests/apitests/ws2_32/getnameinfo.c

91 lines
3 KiB
C

/*
* PROJECT: ReactOS api tests
* LICENSE: GPLv2+ - See COPYING in the top level directory
* PURPOSE: Test for getaddrinfo
* PROGRAMMER: Thomas Faber <thomas.faber@reactos.org>
*/
#include "ws2_32.h"
START_TEST(getnameinfo)
{
WSADATA WsaData;
int Error, MinSize;
PCHAR NodeBuffer, ServiceBuffer;
CHAR TestBuf[NI_MAXHOST];
WCHAR TestBufW[NI_MAXHOST];
SOCKADDR_IN LocalAddr;
/* not yet initialized */
StartSeh()
Error = getnameinfo(NULL, 0, NULL, 0, NULL, 0, 0);
ok_dec(Error, WSANOTINITIALISED);
EndSeh(STATUS_SUCCESS);
StartSeh()
NodeBuffer = InvalidPointer;
ServiceBuffer = InvalidPointer;
Error = getnameinfo(NULL, 0, NodeBuffer, 0, ServiceBuffer, 0, 0);
ok_dec(Error, WSANOTINITIALISED);
ok_ptr(NodeBuffer, InvalidPointer);
ok_ptr(ServiceBuffer, InvalidPointer);
EndSeh(STATUS_SUCCESS);
LocalAddr.sin_family = AF_INET;
LocalAddr.sin_port = 80;
LocalAddr.sin_addr.S_un.S_addr = ntohl(INADDR_LOOPBACK);
Error = getnameinfo((PSOCKADDR)&LocalAddr, sizeof(LocalAddr), TestBuf, sizeof(TestBuf), NULL, 0, 0);
ok_dec(Error, WSANOTINITIALISED);
Error = WSAStartup(MAKEWORD(2, 2), &WsaData);
ok_dec(Error, 0);
StartSeh()
Error = getnameinfo(NULL, 0, NULL, 0, NULL, 0, 0);
ok_dec(Error, WSAEFAULT);
EndSeh(STATUS_SUCCESS);
StartSeh()
NodeBuffer = InvalidPointer;
ServiceBuffer = InvalidPointer;
Error = getnameinfo(NULL, 0, NodeBuffer, 0, ServiceBuffer, 0, 0);
ok_dec(Error, WSAEFAULT);
ok_ptr(NodeBuffer, InvalidPointer);
ok_ptr(ServiceBuffer, InvalidPointer);
EndSeh(STATUS_SUCCESS);
/* initialize LocalAddress for tests */
Error = getnameinfo((PSOCKADDR)&LocalAddr, sizeof(LocalAddr), TestBuf, sizeof(TestBuf), NULL, 0, 0);
ok_dec(Error, 0);
ok_dec(WSAGetLastError(), 0);
/* test minimal size */
MinSize = sizeof(LocalAddr);
Error = getnameinfo((PSOCKADDR)&LocalAddr, MinSize, TestBuf, sizeof(TestBuf), NULL, 0, 0);
ok_dec(Error, 0);
ok_dec(WSAGetLastError(), 0);
Error = GetNameInfoA((PSOCKADDR)&LocalAddr, MinSize, TestBuf, sizeof(TestBuf), NULL, 0, 0);
ok_dec(Error, 0);
ok_dec(WSAGetLastError(), 0);
Error = GetNameInfoW((PSOCKADDR)&LocalAddr, MinSize, TestBufW, sizeof(TestBufW), NULL, 0, 0);
ok_dec(Error, 0);
ok_dec(WSAGetLastError(), 0);
MinSize--;
Error = getnameinfo((PSOCKADDR)&LocalAddr, MinSize, TestBuf, sizeof(TestBuf), NULL, 0, 0);
ok_dec(Error, WSAEFAULT);
Error = GetNameInfoA((PSOCKADDR)&LocalAddr, MinSize, TestBuf, sizeof(TestBuf), NULL, 0, 0);
ok_dec(Error, WSAEFAULT);
Error = GetNameInfoW((PSOCKADDR)&LocalAddr, MinSize, TestBufW, sizeof(TestBufW), NULL, 0, 0);
ok_dec(Error, WSAEFAULT);
Error = WSACleanup();
ok_dec(Error, 0);
/* not initialized anymore */
Error = getnameinfo((PSOCKADDR)&LocalAddr, sizeof(LocalAddr), NodeBuffer, 0, ServiceBuffer, 0, 0);
ok_dec(Error, WSANOTINITIALISED);
}