2 * PROJECT: ReactOS api tests
3 * LICENSE: GPLv2+ - See COPYING in the top level directory
4 * PURPOSE: Test for InternetOpen
5 * PROGRAMMER: Thomas Faber <thfabba@gmx.de>
10 #define WIN32_NO_STATUS
12 #define COM_NO_WINDOWS_H
15 #include <wine/test.h>
18 struct hostent
*(WINAPI
*pgethostbyname
)(const char *);
19 int (WINAPI
*pWSACancelBlockingCall
)(void);
20 int (WINAPI
*pWSAGetLastError
)(void);
22 HINTERNET (WINAPI
*pInternetOpen
)(LPCTSTR
, DWORD
, LPCTSTR
, LPCTSTR
, DWORD
);
23 BOOL (WINAPI
*pInternetCloseHandle
)(HINTERNET
);
32 ModuleHandle
= GetModuleHandle(L
"ws2_32");
35 return GetProcAddress(ModuleHandle
, FunctionName
);
38 #define PROC(name) (p##name = GetProc(#name))
44 return GetModuleHandle(L
"ws2_32") != NULL
;
49 IsWinsockInitialized(VOID
)
51 struct hostent
*Hostent
;
53 if (!PROC(gethostbyname
) || !PROC(WSAGetLastError
))
56 Hostent
= pgethostbyname("localhost");
58 ok_dec(pWSAGetLastError(), WSANOTINITIALISED
);
59 return Hostent
!= NULL
;
64 AreLegacyFunctionsSupported(VOID
)
68 if (!PROC(WSACancelBlockingCall
) || !PROC(WSAGetLastError
))
71 Error
= pWSACancelBlockingCall();
72 ok(Error
== SOCKET_ERROR
, "Error = %d\n", Error
);
73 ok(pWSAGetLastError() == WSAEOPNOTSUPP
||
74 pWSAGetLastError() == WSAEINVAL
, "WSAGetLastError = %d\n", pWSAGetLastError());
76 return pWSAGetLastError() != WSAEOPNOTSUPP
;
79 START_TEST(InternetOpen
)
82 HINTERNET InternetHandle
;
85 ok(!IsWinsockLoaded(), "Winsock loaded on startup\n");
86 ok(!IsWinsockInitialized(), "Winsock initialized on startup\n");
88 ModuleHandle
= GetModuleHandle(L
"wininet");
89 ok_ptr(ModuleHandle
, NULL
);
90 ModuleHandle
= LoadLibrary(L
"wininet");
91 ok(ModuleHandle
!= NULL
, "LoadLibrary failed, error %lu\n", GetLastError());
93 pInternetOpen
= (PVOID
)GetProcAddress(ModuleHandle
, "InternetOpenW");
94 pInternetCloseHandle
= (PVOID
)GetProcAddress(ModuleHandle
, "InternetCloseHandle");
96 ok(!IsWinsockLoaded(), "Winsock loaded after wininet load\n");
97 ok(!IsWinsockInitialized(), "Winsock initialized after wininet load\n");
99 InternetHandle
= pInternetOpen(NULL
, INTERNET_OPEN_TYPE_DIRECT
, NULL
, NULL
, 0);
100 ok(InternetHandle
!= NULL
, "InternetHandle = NULL\n");
102 if (InternetHandle
!= NULL
)
104 ok(IsWinsockLoaded(), "Winsock not loaded after InternetOpen\n");
105 ok(IsWinsockInitialized(), "Winsock not initialized after InternetOpen\n");
106 ok(!AreLegacyFunctionsSupported(), "Winsock initialized with version 1\n");
107 Success
= pInternetCloseHandle(InternetHandle
);
108 ok(Success
, "InternetCloseHandle failed, error %lu\n", GetLastError());
111 ok(IsWinsockLoaded(), "Winsock unloaded after handle close\n");
112 ok(IsWinsockInitialized(), "Winsock uninitialized after handle close\n");
114 FreeLibrary(ModuleHandle
);
116 ok(IsWinsockLoaded(), "Winsock unloaded after wininet unload\n");
117 trace("Winsock %sinitialized after wininet unload (should be uninitialized in 2003, still initialized in 7)\n",
118 IsWinsockInitialized() ? "" : "un");