Jacek Caban : urlmon: Added more strict QueryInterface tests.

Alexandre Julliard julliard at winehq.org
Tue Oct 2 06:52:38 CDT 2007


Module: wine
Branch: master
Commit: ef01bdb18a1730fa8318839a75734b1c790a5a7a
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=ef01bdb18a1730fa8318839a75734b1c790a5a7a

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon Oct  1 14:10:36 2007 +0200

urlmon: Added more strict QueryInterface tests.

---

 dlls/urlmon/tests/url.c |   51 +++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 49 insertions(+), 2 deletions(-)

diff --git a/dlls/urlmon/tests/url.c b/dlls/urlmon/tests/url.c
index 595c2ce..36b5dd0 100644
--- a/dlls/urlmon/tests/url.c
+++ b/dlls/urlmon/tests/url.c
@@ -20,6 +20,7 @@
  */
 
 #include <stdarg.h>
+#include <stdio.h>
 
 #define COBJMACROS
 #define CONST_VTABLE
@@ -67,6 +68,11 @@
 
 DEFINE_EXPECT(QueryInterface_IServiceProvider);
 DEFINE_EXPECT(QueryInterface_IHttpNegotiate);
+DEFINE_EXPECT(QueryInterface_IBindStatusCallback);
+DEFINE_EXPECT(QueryInterface_IBindStatusCallbackHolder);
+DEFINE_EXPECT(QueryInterface_IInternetBindInfo);
+DEFINE_EXPECT(QueryInterface_IAuthenticate);
+DEFINE_EXPECT(QueryInterface_IInternetProtocol);
 DEFINE_EXPECT(BeginningTransaction);
 DEFINE_EXPECT(OnResponse);
 DEFINE_EXPECT(QueryInterface_IHttpNegotiate2);
@@ -113,6 +119,8 @@ static BOOL stopped_binding = FALSE, emulate_protocol = FALSE,
 static DWORD read = 0, bindf = 0;
 static CHAR mime_type[512];
 
+extern IID IID_IBindStatusCallbackHolder;
+
 static LPCWSTR urls[] = {
     WINE_ABOUT_URL,
     ABOUT_BLANK,
@@ -135,6 +143,18 @@ static enum {
     END_DOWNLOAD
 } download_state;
 
+static const char *debugstr_guid(REFIID riid)
+{
+    static char buf[50];
+
+    sprintf(buf, "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
+            riid->Data1, riid->Data2, riid->Data3, riid->Data4[0],
+            riid->Data4[1], riid->Data4[2], riid->Data4[3], riid->Data4[4],
+            riid->Data4[5], riid->Data4[6], riid->Data4[7]);
+
+    return buf;
+}
+
 static void test_CreateURLMoniker(LPCWSTR url1, LPCWSTR url2)
 {
     HRESULT hr;
@@ -478,6 +498,7 @@ static IHttpNegotiate2 HttpNegotiate = { &HttpNegotiateVtbl };
 static HRESULT WINAPI statusclb_QueryInterface(IBindStatusCallback *iface, REFIID riid, void **ppv)
 {
     if(IsEqualGUID(&IID_IInternetProtocol, riid)) {
+        CHECK_EXPECT2(QueryInterface_IInternetProtocol);
         if(emulate_protocol) {
             *ppv = &Protocol;
             return S_OK;
@@ -488,6 +509,7 @@ static HRESULT WINAPI statusclb_QueryInterface(IBindStatusCallback *iface, REFII
     else if (IsEqualGUID(&IID_IServiceProvider, riid))
     {
         CHECK_EXPECT(QueryInterface_IServiceProvider);
+        return E_NOINTERFACE;
     }
     else if (IsEqualGUID(&IID_IHttpNegotiate, riid))
     {
@@ -501,6 +523,31 @@ static HRESULT WINAPI statusclb_QueryInterface(IBindStatusCallback *iface, REFII
         *ppv = &HttpNegotiate;
         return S_OK;
     }
+    else if (IsEqualGUID(&IID_IAuthenticate, riid))
+    {
+        CHECK_EXPECT(QueryInterface_IAuthenticate);
+        return E_NOINTERFACE;
+    }
+    else if(IsEqualGUID(&IID_IBindStatusCallback, riid))
+    {
+        CHECK_EXPECT2(QueryInterface_IBindStatusCallback);
+        *ppv = iface;
+        return S_OK;
+    }
+    else if(IsEqualGUID(&IID_IBindStatusCallbackHolder, riid))
+    {
+        CHECK_EXPECT2(QueryInterface_IBindStatusCallbackHolder);
+        return E_NOINTERFACE;
+    }
+    else if(IsEqualGUID(&IID_IInternetBindInfo, riid))
+    {
+        /* TODO */
+        CHECK_EXPECT(QueryInterface_IInternetBindInfo);
+    }
+    else
+    {
+        ok(0, "unexpected interface %s\n", debugstr_guid(riid));
+    }
 
     return E_NOINTERFACE;
 }
@@ -851,8 +898,8 @@ static void test_BindToStorage(int protocol, BOOL emul)
     ok(hres == S_OK, "GetDisplayName failed %08x\n", hres);
     ok(!lstrcmpW(display_name, urls[test_protocol]), "GetDisplayName got wrong name\n");
 
-    SET_EXPECT(QueryInterface_IServiceProvider);
     SET_EXPECT(GetBindInfo);
+    SET_EXPECT(QueryInterface_IInternetProtocol);
     SET_EXPECT(OnStartBinding);
     if(emulate_protocol) {
         SET_EXPECT(Start);
@@ -903,8 +950,8 @@ static void test_BindToStorage(int protocol, BOOL emul)
         DispatchMessage(&msg);
     }
 
-    CHECK_NOT_CALLED(QueryInterface_IServiceProvider);
     CHECK_CALLED(GetBindInfo);
+    CHECK_CALLED(QueryInterface_IInternetProtocol);
     CHECK_CALLED(OnStartBinding);
     if(emulate_protocol) {
         CHECK_CALLED(Start);




More information about the wine-cvs mailing list