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
17 struct hostent
*(WINAPI
*pgethostbyname
)(const char *);
18 int (WINAPI
*pWSACancelBlockingCall
)(void);
19 int (WINAPI
*pWSAGetLastError
)(void);
21 HINTERNET (WINAPI
*pInternetOpen
)(LPCTSTR
, DWORD
, LPCTSTR
, LPCTSTR
, DWORD
);
22 BOOL (WINAPI
*pInternetCloseHandle
)(HINTERNET
);
31 ModuleHandle
= GetModuleHandleW(L
"ws2_32");
34 return GetProcAddress(ModuleHandle
, FunctionName
);
37 #define PROC(name) (p##name = GetProc(#name))
43 return GetModuleHandleW(L
"ws2_32") != NULL
;
48 IsWinsockInitialized(VOID
)
50 struct hostent
*Hostent
;
52 if (!PROC(gethostbyname
) || !PROC(WSAGetLastError
))
55 Hostent
= pgethostbyname("localhost");
57 ok_dec(pWSAGetLastError(), WSANOTINITIALISED
);
58 return Hostent
!= NULL
;
63 AreLegacyFunctionsSupported(VOID
)
67 if (!PROC(WSACancelBlockingCall
) || !PROC(WSAGetLastError
))
70 Error
= pWSACancelBlockingCall();
71 ok(Error
== SOCKET_ERROR
, "Error = %d\n", Error
);
72 ok(pWSAGetLastError() == WSAEOPNOTSUPP
||
73 pWSAGetLastError() == WSAEINVAL
, "WSAGetLastError = %d\n", pWSAGetLastError());
75 return pWSAGetLastError() != WSAEOPNOTSUPP
;
78 START_TEST(InternetOpen
)
81 HINTERNET InternetHandle
;
84 ok(!IsWinsockLoaded(), "Winsock loaded on startup\n");
85 ok(!IsWinsockInitialized(), "Winsock initialized on startup\n");
87 ModuleHandle
= GetModuleHandleW(L
"wininet");
88 ok_ptr(ModuleHandle
, NULL
);
89 ModuleHandle
= LoadLibraryW(L
"wininet");
90 ok(ModuleHandle
!= NULL
, "LoadLibrary failed, error %lu\n", GetLastError());
92 pInternetOpen
= (PVOID
)GetProcAddress(ModuleHandle
, "InternetOpenW");
93 pInternetCloseHandle
= (PVOID
)GetProcAddress(ModuleHandle
, "InternetCloseHandle");
95 ok(!IsWinsockLoaded(), "Winsock loaded after wininet load\n");
96 ok(!IsWinsockInitialized(), "Winsock initialized after wininet load\n");
98 InternetHandle
= pInternetOpen(NULL
, INTERNET_OPEN_TYPE_DIRECT
, NULL
, NULL
, 0);
99 ok(InternetHandle
!= NULL
, "InternetHandle = NULL\n");
101 if (InternetHandle
!= NULL
)
103 ok(IsWinsockLoaded(), "Winsock not loaded after InternetOpen\n");
104 ok(IsWinsockInitialized(), "Winsock not initialized after InternetOpen\n");
105 ok(!AreLegacyFunctionsSupported(), "Winsock initialized with version 1\n");
106 Success
= pInternetCloseHandle(InternetHandle
);
107 ok(Success
, "InternetCloseHandle failed, error %lu\n", GetLastError());
110 ok(IsWinsockLoaded(), "Winsock unloaded after handle close\n");
111 ok(IsWinsockInitialized(), "Winsock uninitialized after handle close\n");
113 FreeLibrary(ModuleHandle
);
115 ok(IsWinsockLoaded(), "Winsock unloaded after wininet unload\n");
116 trace("Winsock %sinitialized after wininet unload (should be uninitialized in 2003, still initialized in 7)\n",
117 IsWinsockInitialized() ? "" : "un");