Module: wine Branch: master Commit: 6489a1c2423f7153bcf870ed6ca568b7b9996419 URL: http://source.winehq.org/git/wine.git/?a=commit;h=6489a1c2423f7153bcf870ed6c...
Author: Jacek Caban jacek@codeweavers.com Date: Sat Jan 13 12:47:57 2007 +0100
itss: Added more protocol tests.
---
dlls/itss/tests/protocol.c | 77 ++++++++++++++++++++++++++++++++++++++------ 1 files changed, 67 insertions(+), 10 deletions(-)
diff --git a/dlls/itss/tests/protocol.c b/dlls/itss/tests/protocol.c index 02a0ca0..4b594b2 100644 --- a/dlls/itss/tests/protocol.c +++ b/dlls/itss/tests/protocol.c @@ -60,11 +60,18 @@ DEFINE_EXPECT(GetBindInfo); DEFINE_EXPECT(ReportProgress_BEGINDOWNLOADDATA); DEFINE_EXPECT(ReportProgress_SENDINGREQUEST); DEFINE_EXPECT(ReportProgress_MIMETYPEAVAILABLE); +DEFINE_EXPECT(ReportProgress_CACHEFILENAMEAVAIABLE); +DEFINE_EXPECT(ReportProgress_DIRECTBIND); DEFINE_EXPECT(ReportData); DEFINE_EXPECT(ReportResult);
static HRESULT expect_hrResult;
+static enum { + ITS_PROTOCOL, + MK_PROTOCOL +} test_protocol; + static HRESULT WINAPI ProtocolSink_QueryInterface(IInternetProtocolSink *iface, REFIID riid, void **ppv) { if(IsEqualGUID(&IID_IUnknown, riid) || IsEqualGUID(&IID_IInternetProtocolSink, riid)) { @@ -95,6 +102,8 @@ static HRESULT WINAPI ProtocolSink_Repor { static const WCHAR blank_html[] = {'b','l','a','n','k','.','h','t','m','l',0}; static const WCHAR text_html[] = {'t','e','x','t','/','h','t','m','l',0}; + static const WCHAR cache_file[] = + {'t','e','s','t','.','c','h','m',':',':','/','b','l','a','n','k','.','h','t','m','l',0};
switch(ulStatusCode) { case BINDSTATUS_BEGINDOWNLOADDATA: @@ -103,12 +112,23 @@ static HRESULT WINAPI ProtocolSink_Repor break; case BINDSTATUS_SENDINGREQUEST: CHECK_EXPECT(ReportProgress_SENDINGREQUEST); - ok(!lstrcmpW(szStatusText, blank_html), "unexpected szStatusText\n"); + if(test_protocol == ITS_PROTOCOL) + ok(!lstrcmpW(szStatusText, blank_html), "unexpected szStatusText\n"); + else + ok(szStatusText == NULL, "szStatusText != NULL\n"); break; case BINDSTATUS_MIMETYPEAVAILABLE: CHECK_EXPECT(ReportProgress_MIMETYPEAVAILABLE); ok(!lstrcmpW(szStatusText, text_html), "unexpected szStatusText\n"); break; + case BINDSTATUS_CACHEFILENAMEAVAILABLE: + CHECK_EXPECT(ReportProgress_CACHEFILENAMEAVAIABLE); + ok(!lstrcmpW(szStatusText, cache_file), "unexpected szStatusText\n"); + break; + case BINDSTATUS_DIRECTBIND: + CHECK_EXPECT(ReportProgress_DIRECTBIND); + ok(!szStatusText, "szStatusText != NULL\n"); + break; default: ok(0, "unexpected ulStatusCode %d\n", ulStatusCode); break; @@ -123,7 +143,10 @@ static HRESULT WINAPI ProtocolSink_Repor CHECK_EXPECT(ReportData);
ok(ulProgress == ulProgressMax, "ulProgress != ulProgressMax\n"); - ok(grfBSCF == (BSCF_FIRSTDATANOTIFICATION | BSCF_DATAFULLYAVAILABLE), "grcf = %08x\n", grfBSCF); + if(test_protocol == ITS_PROTOCOL) + ok(grfBSCF == (BSCF_FIRSTDATANOTIFICATION | BSCF_DATAFULLYAVAILABLE), "grcf = %08x\n", grfBSCF); + else + ok(grfBSCF == (BSCF_FIRSTDATANOTIFICATION | BSCF_LASTDATANOTIFICATION), "grcf = %08x\n", grfBSCF);
return S_OK; } @@ -225,10 +248,15 @@ static void protocol_start(IInternetProt HRESULT hres;
SET_EXPECT(GetBindInfo); + if(test_protocol == MK_PROTOCOL) + SET_EXPECT(ReportProgress_DIRECTBIND); SET_EXPECT(ReportProgress_SENDINGREQUEST); SET_EXPECT(ReportProgress_MIMETYPEAVAILABLE); + if(test_protocol == MK_PROTOCOL) + SET_EXPECT(ReportProgress_CACHEFILENAMEAVAIABLE); SET_EXPECT(ReportData); - SET_EXPECT(ReportProgress_BEGINDOWNLOADDATA); + if(test_protocol == ITS_PROTOCOL) + SET_EXPECT(ReportProgress_BEGINDOWNLOADDATA); SET_EXPECT(ReportResult); expect_hrResult = S_OK;
@@ -236,14 +264,19 @@ static void protocol_start(IInternetProt ok(hres == S_OK, "Start failed: %08x\n", hres);
CHECK_CALLED(GetBindInfo); + if(test_protocol == MK_PROTOCOL) + CHECK_CALLED(ReportProgress_DIRECTBIND); CHECK_CALLED(ReportProgress_SENDINGREQUEST); CHECK_CALLED(ReportProgress_MIMETYPEAVAILABLE); + if(test_protocol == MK_PROTOCOL) + SET_EXPECT(ReportProgress_CACHEFILENAMEAVAIABLE); CHECK_CALLED(ReportData); - CHECK_CALLED(ReportProgress_BEGINDOWNLOADDATA); + if(test_protocol == ITS_PROTOCOL) + CHECK_CALLED(ReportProgress_BEGINDOWNLOADDATA); CHECK_CALLED(ReportResult); }
-static void test_its_protocol_url(IClassFactory *factory, LPCWSTR url) +static void test_protocol_url(IClassFactory *factory, LPCWSTR url) { IInternetProtocol *protocol; BYTE buf[512]; @@ -270,8 +303,8 @@ static void test_its_protocol_url(IClass
cb = 0xdeadbeef; hres = IInternetProtocol_Read(protocol, buf, sizeof(buf), &cb); - ok(hres == INET_E_DATA_NOT_AVAILABLE, - "Read returned %08x expected INET_E_DATA_NOT_AVAILABLE\n", hres); + ok(hres == (test_protocol == ITS_PROTOCOL ? INET_E_DATA_NOT_AVAILABLE : E_FAIL), + "Read returned %08x\n", hres); ok(cb == 0xdeadbeef, "cb=%u expected 0xdeadbeef\n", cb);
protocol_start(protocol, url); @@ -358,6 +391,8 @@ static void test_its_protocol(void) static const WCHAR wrong_url5[] = {'f','i','l','e',':', 't','e','s','.','c','h','m',':',':','/','b','l','a','n','k','.','h','t','m','l',0};
+ test_protocol = ITS_PROTOCOL; + hres = CoGetClassObject(&CLSID_ITSProtocol, CLSCTX_INPROC_SERVER, NULL, &IID_IUnknown, (void**)&unk); ok(hres == S_OK, "CoGetClassObject failed: %08x\n", hres); if(!SUCCEEDED(hres)) @@ -386,9 +421,9 @@ static void test_its_protocol(void) ref = IInternetProtocol_Release(protocol); ok(!ref, "protocol ref=%d\n", ref);
- test_its_protocol_url(factory, blank_url1); - test_its_protocol_url(factory, blank_url2); - test_its_protocol_url(factory, blank_url3); + test_protocol_url(factory, blank_url1); + test_protocol_url(factory, blank_url2); + test_protocol_url(factory, blank_url3); }
IClassFactory_Release(factory); @@ -397,6 +432,27 @@ static void test_its_protocol(void) IUnknown_Release(unk); }
+static void test_mk_protocol(void) +{ + IClassFactory *cf; + HRESULT hres; + + static const WCHAR blank_url[] = {'m','k',':','@','M','S','I','T','S','t','o','r','e',':', + 't','e','s','t','.','c','h','m',':',':','/','b','l','a','n','k','.','h','t','m','l',0}; + + test_protocol = MK_PROTOCOL; + + hres = CoGetClassObject(&CLSID_MkProtocol, CLSCTX_INPROC_SERVER, NULL, &IID_IClassFactory, + (void**)&cf); + ok(hres == S_OK, "CoGetClassObject failed: %08x\n", hres); + if(!SUCCEEDED(hres)) + return; + + test_protocol_url(cf, blank_url); + + IClassFactory_Release(cf); +} + static BOOL create_chm(void) { HANDLE file; @@ -433,6 +489,7 @@ START_TEST(protocol) return;
test_its_protocol(); + test_mk_protocol();
delete_chm(); OleUninitialize();