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