Jacek Caban : itss: Added more protocol tests.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Jan 15 07:43:03 CST 2007
Module: wine
Branch: master
Commit: 6489a1c2423f7153bcf870ed6ca568b7b9996419
URL: http://source.winehq.org/git/wine.git/?a=commit;h=6489a1c2423f7153bcf870ed6ca568b7b9996419
Author: Jacek Caban <jacek at 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();
More information about the wine-cvs
mailing list