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