urlmon/tests: Fix http_protocol tests to succeed when called more than once.

This commit is contained in:
Misha Koshelev 2007-07-18 19:59:06 -05:00 committed by Alexandre Julliard
parent e2726effe2
commit 0878627071
1 changed files with 36 additions and 7 deletions

View File

@ -54,6 +54,12 @@
expect_ ## func = called_ ## func = FALSE; \ expect_ ## func = called_ ## func = FALSE; \
}while(0) }while(0)
#define CHECK_NOT_CALLED(func) \
do { \
ok(!called_ ## func, "unexpected " #func "\n"); \
expect_ ## func = called_ ## func = FALSE; \
}while(0)
#define CLEAR_CALLED(func) \ #define CLEAR_CALLED(func) \
expect_ ## func = called_ ## func = FALSE expect_ ## func = called_ ## func = FALSE
@ -89,7 +95,7 @@ static const WCHAR index_url[] =
static HRESULT expect_hrResult; static HRESULT expect_hrResult;
static LPCWSTR file_name, http_url, expect_wsz; static LPCWSTR file_name, http_url, expect_wsz;
static IInternetProtocol *http_protocol = NULL; static IInternetProtocol *http_protocol = NULL;
static BOOL first_data_notif = FALSE; static BOOL first_data_notif = FALSE, http_is_first = FALSE;
static HWND protocol_hwnd; static HWND protocol_hwnd;
static int state = 0; static int state = 0;
static DWORD bindf = 0; static DWORD bindf = 0;
@ -1048,9 +1054,11 @@ static void test_file_protocol(void) {
static BOOL http_protocol_start(LPCWSTR url, BOOL is_first) static BOOL http_protocol_start(LPCWSTR url, BOOL is_first)
{ {
static BOOL got_user_agent = FALSE;
HRESULT hres; HRESULT hres;
first_data_notif = TRUE; first_data_notif = TRUE;
state = 0;
SET_EXPECT(GetBindInfo); SET_EXPECT(GetBindInfo);
SET_EXPECT(GetBindString_USER_AGENT); SET_EXPECT(GetBindString_USER_AGENT);
@ -1065,7 +1073,16 @@ static BOOL http_protocol_start(LPCWSTR url, BOOL is_first)
return FALSE; return FALSE;
CHECK_CALLED(GetBindInfo); CHECK_CALLED(GetBindInfo);
if (!got_user_agent)
{
CHECK_CALLED(GetBindString_USER_AGENT); CHECK_CALLED(GetBindString_USER_AGENT);
got_user_agent = TRUE;
}
else todo_wine
{
/* user agent only retrieved once, even with different URLs */
CHECK_NOT_CALLED(GetBindString_USER_AGENT);
}
CHECK_CALLED(GetBindString_ACCEPT_MIMES); CHECK_CALLED(GetBindString_ACCEPT_MIMES);
CHECK_CALLED(QueryService_HttpNegotiate); CHECK_CALLED(QueryService_HttpNegotiate);
CHECK_CALLED(BeginningTransaction); CHECK_CALLED(BeginningTransaction);
@ -1075,7 +1092,9 @@ static BOOL http_protocol_start(LPCWSTR url, BOOL is_first)
return TRUE; return TRUE;
} }
static void test_http_protocol_url(LPCWSTR url) /* is_first refers to whether this is the first call to this function
* _for this url_ */
static void test_http_protocol_url(LPCWSTR url, BOOL is_first)
{ {
IInternetProtocolInfo *protocol_info; IInternetProtocolInfo *protocol_info;
IClassFactory *factory; IClassFactory *factory;
@ -1084,6 +1103,7 @@ static void test_http_protocol_url(LPCWSTR url)
trace("Testing http protocol...\n"); trace("Testing http protocol...\n");
http_url = url; http_url = url;
http_is_first = is_first;
hres = CoGetClassObject(&CLSID_HttpProtocol, CLSCTX_INPROC_SERVER, NULL, hres = CoGetClassObject(&CLSID_HttpProtocol, CLSCTX_INPROC_SERVER, NULL,
&IID_IUnknown, (void**)&unk); &IID_IUnknown, (void**)&unk);
@ -1118,7 +1138,7 @@ static void test_http_protocol_url(LPCWSTR url)
SET_EXPECT(ReportProgress_CONNECTING); SET_EXPECT(ReportProgress_CONNECTING);
SET_EXPECT(ReportProgress_SENDINGREQUEST); SET_EXPECT(ReportProgress_SENDINGREQUEST);
if(!http_protocol_start(url, TRUE)) if(!http_protocol_start(url, is_first))
return; return;
hres = IInternetProtocol_Read(http_protocol, buf, 2, &cb); hres = IInternetProtocol_Read(http_protocol, buf, 2, &cb);
@ -1147,7 +1167,8 @@ static void test_http_protocol(void)
'o','r','g','/','s','i','t','e','/','a','b','o','u','t',0}; 'o','r','g','/','s','i','t','e','/','a','b','o','u','t',0};
tested_protocol = HTTP_TEST; tested_protocol = HTTP_TEST;
test_http_protocol_url(winehq_url); test_http_protocol_url(winehq_url, TRUE);
test_http_protocol_url(winehq_url, FALSE);
} }
@ -1160,8 +1181,16 @@ static LRESULT WINAPI wnd_proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam
SET_EXPECT(ReportData); SET_EXPECT(ReportData);
if(!state) { if(!state) {
if (http_is_first)
{
CHECK_CALLED(ReportProgress_FINDINGRESOURCE); CHECK_CALLED(ReportProgress_FINDINGRESOURCE);
CHECK_CALLED(ReportProgress_CONNECTING); CHECK_CALLED(ReportProgress_CONNECTING);
}
else todo_wine
{
CHECK_NOT_CALLED(ReportProgress_FINDINGRESOURCE);
CHECK_NOT_CALLED(ReportProgress_CONNECTING);
}
CHECK_CALLED(ReportProgress_SENDINGREQUEST); CHECK_CALLED(ReportProgress_SENDINGREQUEST);
SET_EXPECT(OnResponse); SET_EXPECT(OnResponse);