URLMON: More tests of URLMoniker

Jacek Caban jack at itma.pwr.wroc.pl
Fri Sep 16 07:56:16 CDT 2005


Changelog:
    More tests of URLMoniker
-------------- next part --------------
Index: dlls/urlmon/tests/url.c
===================================================================
RCS file: /home/wine/wine/dlls/urlmon/tests/url.c,v
retrieving revision 1.11
diff -u -p -r1.11 url.c
--- dlls/urlmon/tests/url.c	3 Sep 2005 09:36:12 -0000	1.11
+++ dlls/urlmon/tests/url.c	16 Sep 2005 12:48:03 -0000
@@ -29,6 +29,37 @@
 
 #include "wine/test.h"
 
+#define DEFINE_EXPECT(func) \
+    static BOOL expect_ ## func = FALSE, called_ ## func = FALSE
+
+#define SET_EXPECT(func) \
+    expect_ ## func = TRUE
+
+#define CHECK_EXPECT(func) \
+    ok(expect_ ##func, "unexpected call\n"); \
+    expect_ ## func = FALSE; \
+    called_ ## func = TRUE
+
+#define CHECK_EXPECT2(func) \
+    ok(expect_ ##func, "unexpected call\n"); \
+    called_ ## func = TRUE
+
+#define CHECK_CALLED(func) \
+    ok(called_ ## func, "expected " #func "\n"); \
+    expect_ ## func = called_ ## func = FALSE
+
+DEFINE_EXPECT(GetBindInfo);
+DEFINE_EXPECT(OnStartBinding);
+DEFINE_EXPECT(OnProgress_FINDINGRESOURCE);
+DEFINE_EXPECT(OnProgress_CONNECTING);
+DEFINE_EXPECT(OnProgress_SENDINGREQUEST);
+DEFINE_EXPECT(OnProgress_MIMETYPEAVAILABLE);
+DEFINE_EXPECT(OnProgress_BEGINDOWNLOADDATA);
+DEFINE_EXPECT(OnProgress_DOWNLOADINGDATA);
+DEFINE_EXPECT(OnProgress_ENDDOWNLOADDATA);
+DEFINE_EXPECT(OnStopBinding);
+DEFINE_EXPECT(OnDataAvailable);
+
 static const WCHAR TEST_URL_1[] = {'h','t','t','p',':','/','/','w','w','w','.','w','i','n','e','h','q','.','o','r','g','/','\0'};
 static const WCHAR TEST_PART_URL_1[] = {'/','t','e','s','t','/','\0'};
 
@@ -84,12 +115,15 @@ static ULONG WINAPI statusclb_Release(IB
     return ref;
 }
 
-static HRESULT WINAPI statusclb_OnStartBinding(IBindStatusCallback *iface, DWORD dwReserved, IBinding *pib)
+static HRESULT WINAPI statusclb_OnStartBinding(IBindStatusCallback *iface, DWORD dwReserved,
+        IBinding *pib)
 {
     statusclb *This = (statusclb*)iface;
     HRESULT hres;
     IMoniker *mon;
 
+    CHECK_EXPECT(OnStartBinding);
+
     This->pbind = pib;
     ok(pib != NULL, "pib should not be NULL\n");
     if(pib)
@@ -105,17 +139,44 @@ static HRESULT WINAPI statusclb_OnStartB
 
 static HRESULT WINAPI statusclb_GetPriority(IBindStatusCallback *iface, LONG *pnPriority)
 {
+    ok(0, "unexpected call\n");
     return E_NOTIMPL;
 }
 
 static HRESULT WINAPI statusclb_OnLowResource(IBindStatusCallback *iface, DWORD reserved)
 {
+    ok(0, "unexpected call\n");
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI statusclb_OnProgress(IBindStatusCallback *iface, ULONG ulProgress, ULONG ulProgressMax,
-                           ULONG ulStatusCode, LPCWSTR szStatusText)
+static HRESULT WINAPI statusclb_OnProgress(IBindStatusCallback *iface, ULONG ulProgress,
+        ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR szStatusText)
 {
+    switch(ulStatusCode) {
+    case BINDSTATUS_FINDINGRESOURCE:
+        CHECK_EXPECT(OnProgress_FINDINGRESOURCE);
+        break;
+    case BINDSTATUS_CONNECTING:
+        CHECK_EXPECT(OnProgress_CONNECTING);
+        break;
+    case BINDSTATUS_SENDINGREQUEST:
+        CHECK_EXPECT(OnProgress_SENDINGREQUEST);
+        break;
+    case BINDSTATUS_MIMETYPEAVAILABLE:
+        CHECK_EXPECT(OnProgress_MIMETYPEAVAILABLE);
+        break;
+    case BINDSTATUS_BEGINDOWNLOADDATA:
+        CHECK_EXPECT(OnProgress_BEGINDOWNLOADDATA);
+        break;
+    case BINDSTATUS_DOWNLOADINGDATA:
+        CHECK_EXPECT2(OnProgress_DOWNLOADINGDATA);
+        break;
+    case BINDSTATUS_ENDDOWNLOADDATA:
+        CHECK_EXPECT(OnProgress_ENDDOWNLOADDATA);
+        break;
+    default:
+        todo_wine { ok(0, "unexpexted code %ld\n", ulStatusCode); }
+    };
     return S_OK;
 }
 
@@ -123,6 +184,8 @@ static HRESULT WINAPI statusclb_OnStopBi
 {
     statusclb *This = (statusclb*)iface;
 
+    CHECK_EXPECT(OnStopBinding);
+
     ok(SUCCEEDED(hresult), "Download failed: %08lx\n", hresult);
     ok(szError == NULL, "szError should be NULL\n");
     stopped_binding = TRUE;
@@ -138,6 +201,8 @@ static HRESULT WINAPI statusclb_GetBindI
 {
     DWORD cbSize;
 
+    CHECK_EXPECT(GetBindInfo);
+
     *grfBINDF = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA;
     cbSize = pbindinfo->cbSize;
     memset(pbindinfo, 0, cbSize);
@@ -153,6 +218,9 @@ static HRESULT WINAPI statusclb_OnDataAv
     HRESULT hres;
     DWORD readed;
     BYTE buf[512];
+
+    CHECK_EXPECT2(OnDataAvailable);
+
     if(!This->pstr) {
         ok(grfBSCF & BSCF_FIRSTDATANOTIFICATION, "pstr should be set when BSCF_FIRSTDATANOTIFICATION\n");
         This->pstr = U(*pstgmed).pstm;
@@ -169,6 +237,7 @@ static HRESULT WINAPI statusclb_OnDataAv
 
 static HRESULT WINAPI statusclb_OnObjectAvailable(IBindStatusCallback *iface, REFIID riid, IUnknown *punk)
 {
+    ok(0, "unexpected call\n");
     return E_NOTIMPL;
 }
 
@@ -334,6 +403,18 @@ static void test_BindToStorage(void)
     ok(SUCCEEDED(hres), "GetDisplayName failed %08lx\n", hres);
     ok(!lstrcmpW(display_name, WINE_ABOUT_URL), "GetDisplayName got wrong name\n");
 
+    SET_EXPECT(GetBindInfo);
+    SET_EXPECT(OnStartBinding);
+    SET_EXPECT(OnProgress_FINDINGRESOURCE);
+    SET_EXPECT(OnProgress_CONNECTING);
+    SET_EXPECT(OnProgress_SENDINGREQUEST);
+    SET_EXPECT(OnProgress_MIMETYPEAVAILABLE);
+    SET_EXPECT(OnProgress_BEGINDOWNLOADDATA);
+    SET_EXPECT(OnDataAvailable);
+    SET_EXPECT(OnProgress_DOWNLOADINGDATA);
+    SET_EXPECT(OnProgress_ENDDOWNLOADDATA);
+    SET_EXPECT(OnStopBinding);
+
     hres = IMoniker_BindToStorage(mon, bctx, NULL, &IID_IStream, (void**)&unk);
     ok(SUCCEEDED(hres), "IMoniker_BindToStorage failed: %08lx\n", hres);
     todo_wine {
@@ -352,6 +433,18 @@ static void test_BindToStorage(void)
         DispatchMessage(&msg);
     }
 
+    CHECK_CALLED(GetBindInfo);
+    CHECK_CALLED(OnStartBinding);
+    CHECK_CALLED(OnProgress_FINDINGRESOURCE);
+    CHECK_CALLED(OnProgress_CONNECTING);
+    CHECK_CALLED(OnProgress_SENDINGREQUEST);
+    todo_wine { CHECK_CALLED(OnProgress_MIMETYPEAVAILABLE); }
+    CHECK_CALLED(OnProgress_BEGINDOWNLOADDATA);
+    CHECK_CALLED(OnDataAvailable);
+    CHECK_CALLED(OnProgress_DOWNLOADINGDATA);
+    CHECK_CALLED(OnProgress_ENDDOWNLOADDATA);
+    CHECK_CALLED(OnStopBinding);
+
     ok(IMoniker_Release(mon) == 0, "mon should be destroyed here\n");
     ok(IBindCtx_Release(bctx) == 0, "bctx should be destroyed here\n");
     ok(IBindStatusCallback_Release(sclb) == 0, "scbl should be destroyed here\n");


More information about the wine-patches mailing list