wininet: Added more InternetCloseHandle tests.

This commit is contained in:
Jacek Caban 2011-02-02 22:50:59 +01:00 committed by Alexandre Julliard
parent 968ab5fd28
commit 572c4f7039

View file

@ -3178,6 +3178,74 @@ static void test_async_HttpSendRequestEx(void)
CloseHandle( info.wait );
}
static HINTERNET closetest_session, closetest_req, closetest_conn;
static BOOL closetest_closed;
static void WINAPI closetest_callback(HINTERNET hInternet, DWORD_PTR dwContext, DWORD dwInternetStatus,
LPVOID lpvStatusInformation, DWORD dwStatusInformationLength)
{
DWORD len, type;
BOOL res;
trace("closetest_callback %p: %d\n", hInternet, dwInternetStatus);
ok(hInternet == closetest_session || hInternet == closetest_conn || hInternet == closetest_req,
"Unexpected hInternet %p\n", hInternet);
if(!closetest_closed)
return;
len = sizeof(type);
res = InternetQueryOptionA(closetest_req, INTERNET_OPTION_HANDLE_TYPE, &type, &len);
ok(!res && GetLastError() == ERROR_INVALID_HANDLE,
"InternetQueryOptionA(%p INTERNET_OPTION_HANDLE_TYPE) failed: %x %u, expected TRUE ERROR_INVALID_HANDLE\n",
closetest_req, res, GetLastError());
}
static void test_InternetCloseHandle(void)
{
DWORD len, flags;
BOOL res;
closetest_session = InternetOpenA("", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, INTERNET_FLAG_ASYNC);
ok(closetest_session != NULL,"InternetOpen failed with error %u\n", GetLastError());
pInternetSetStatusCallbackA(closetest_session, closetest_callback);
closetest_conn = InternetConnectA(closetest_session, "source.winehq.org", INTERNET_INVALID_PORT_NUMBER,
NULL, NULL, INTERNET_SERVICE_HTTP, 0x0, 0xdeadbeef);
ok(closetest_conn != NULL,"InternetConnect failed with error %u\n", GetLastError());
closetest_req = HttpOpenRequestA(closetest_conn, "GET", "winegecko.php", NULL, NULL, NULL,
INTERNET_FLAG_KEEP_CONNECTION | INTERNET_FLAG_RESYNCHRONIZE, 0xdeadbead);
res = HttpSendRequestA(closetest_req, NULL, -1, NULL, 0);
ok(!res && (GetLastError() == ERROR_IO_PENDING),
"Asynchronous HttpSendRequest NOT returning 0 with error ERROR_IO_PENDING\n");
len = sizeof(flags);
res = InternetQueryOptionA(closetest_req, INTERNET_OPTION_REQUEST_FLAGS, &flags, &len);
ok(res, "InternetQueryOptionA(%p INTERNET_OPTION_URL) failed: %u\n", closetest_req, GetLastError());
res = InternetCloseHandle(closetest_session);
ok(res, "InternetCloseHandle failed: %u\n", GetLastError());
closetest_closed = TRUE;
trace("Closed session handle\n");
res = InternetCloseHandle(closetest_conn);
ok(!res && GetLastError() == ERROR_INVALID_HANDLE, "InternetCloseConnection(conn) failed: %x %u\n",
res, GetLastError());
res = InternetCloseHandle(closetest_req);
ok(!res && GetLastError() == ERROR_INVALID_HANDLE, "InternetCloseConnection(req) failed: %x %u\n",
res, GetLastError());
len = sizeof(flags);
res = InternetQueryOptionA(closetest_req, INTERNET_OPTION_REQUEST_FLAGS, &flags, &len);
ok(!res && GetLastError() == ERROR_INVALID_HANDLE,
"InternetQueryOptionA(%p INTERNET_OPTION_URL) failed: %x %u, expected TRUE ERROR_INVALID_HANDLE\n",
closetest_req, res, GetLastError());
}
#define STATUS_STRING(status) \
memcpy(status_string[status], #status, sizeof(CHAR) * \
(strlen(#status) < MAX_STATUS_NAME ? \
@ -3232,6 +3300,7 @@ START_TEST(http)
pInternetSetStatusCallbackA = (void*)GetProcAddress(hdll, "InternetSetStatusCallbackA");
init_status_tests();
test_InternetCloseHandle();
InternetReadFile_test(INTERNET_FLAG_ASYNC, &test_data[0]);
InternetReadFile_test(0, &test_data[0]);
first_connection_to_test_url = TRUE;