Module: wine Branch: master Commit: 08786270710f5186a8c81540f33205f184b72b38 URL: http://source.winehq.org/git/wine.git/?a=commit;h=08786270710f5186a8c81540f3...
Author: Misha Koshelev mk144210@bcm.edu Date: Wed Jul 18 19:59:06 2007 -0500
urlmon/tests: Fix http_protocol tests to succeed when called more than once.
---
dlls/urlmon/tests/protocol.c | 43 +++++++++++++++++++++++++++++++++++------ 1 files changed, 36 insertions(+), 7 deletions(-)
diff --git a/dlls/urlmon/tests/protocol.c b/dlls/urlmon/tests/protocol.c index abcc1cc..278c093 100644 --- a/dlls/urlmon/tests/protocol.c +++ b/dlls/urlmon/tests/protocol.c @@ -54,6 +54,12 @@ expect_ ## func = called_ ## func = FALSE; \ }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) \ expect_ ## func = called_ ## func = FALSE
@@ -89,7 +95,7 @@ static const WCHAR index_url[] = static HRESULT expect_hrResult; static LPCWSTR file_name, http_url, expect_wsz; 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 int state = 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 got_user_agent = FALSE; HRESULT hres;
first_data_notif = TRUE; + state = 0;
SET_EXPECT(GetBindInfo); SET_EXPECT(GetBindString_USER_AGENT); @@ -1065,7 +1073,16 @@ static BOOL http_protocol_start(LPCWSTR url, BOOL is_first) return FALSE;
CHECK_CALLED(GetBindInfo); - CHECK_CALLED(GetBindString_USER_AGENT); + if (!got_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(QueryService_HttpNegotiate); CHECK_CALLED(BeginningTransaction); @@ -1075,7 +1092,9 @@ static BOOL http_protocol_start(LPCWSTR url, BOOL is_first) 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; IClassFactory *factory; @@ -1084,6 +1103,7 @@ static void test_http_protocol_url(LPCWSTR url)
trace("Testing http protocol...\n"); http_url = url; + http_is_first = is_first;
hres = CoGetClassObject(&CLSID_HttpProtocol, CLSCTX_INPROC_SERVER, NULL, &IID_IUnknown, (void**)&unk); @@ -1118,7 +1138,7 @@ static void test_http_protocol_url(LPCWSTR url) SET_EXPECT(ReportProgress_CONNECTING); SET_EXPECT(ReportProgress_SENDINGREQUEST);
- if(!http_protocol_start(url, TRUE)) + if(!http_protocol_start(url, is_first)) return;
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};
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); if(!state) { - CHECK_CALLED(ReportProgress_FINDINGRESOURCE); - CHECK_CALLED(ReportProgress_CONNECTING); + if (http_is_first) + { + CHECK_CALLED(ReportProgress_FINDINGRESOURCE); + CHECK_CALLED(ReportProgress_CONNECTING); + } + else todo_wine + { + CHECK_NOT_CALLED(ReportProgress_FINDINGRESOURCE); + CHECK_NOT_CALLED(ReportProgress_CONNECTING); + } CHECK_CALLED(ReportProgress_SENDINGREQUEST);
SET_EXPECT(OnResponse);