Jacek Caban : oleaut32: Added more tests.

Alexandre Julliard julliard at winehq.org
Mon Aug 20 14:16:20 CDT 2012


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon Aug 20 17:42:53 2012 +0200

oleaut32: Added more tests.

---

 dlls/oleaut32/tests/tmarshal.c         |   56 +++++++++++++++++++++++++++++++-
 dlls/oleaut32/tests/tmarshal.idl       |   12 +++++++
 dlls/oleaut32/tests/tmarshal_dispids.h |    1 +
 3 files changed, 68 insertions(+), 1 deletions(-)

diff --git a/dlls/oleaut32/tests/tmarshal.c b/dlls/oleaut32/tests/tmarshal.c
index 337e911..be8ef94 100644
--- a/dlls/oleaut32/tests/tmarshal.c
+++ b/dlls/oleaut32/tests/tmarshal.c
@@ -153,6 +153,35 @@ static void end_host_object(DWORD tid, HANDLE thread)
 
 static ItestDual TestDual, TestDualDisp;
 
+static HRESULT WINAPI TestSecondIface_QueryInterface(ITestSecondIface *iface, REFIID riid, void **ppv)
+{
+    return ItestDual_QueryInterface(&TestDual, riid, ppv);
+}
+
+static ULONG WINAPI TestSecondIface_AddRef(ITestSecondIface *iface)
+{
+    return 2;
+}
+
+static ULONG WINAPI TestSecondIface_Release(ITestSecondIface *iface)
+{
+    return 1;
+}
+
+static HRESULT WINAPI TestSecondIface_test(ITestSecondIface *iface)
+{
+    return 1;
+}
+
+static const ITestSecondIfaceVtbl TestSecondIfaceVtbl = {
+    TestSecondIface_QueryInterface,
+    TestSecondIface_AddRef,
+    TestSecondIface_Release,
+    TestSecondIface_test
+};
+
+static ITestSecondIface TestSecondIface = { &TestSecondIfaceVtbl };
+
 static HRESULT WINAPI TestDual_QueryInterface(ItestDual *iface, REFIID riid, void **ppvObject)
 {
     if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IDispatch)) {
@@ -161,6 +190,9 @@ static HRESULT WINAPI TestDual_QueryInterface(ItestDual *iface, REFIID riid, voi
     }else if(IsEqualGUID(riid, &IID_ItestDual)) {
         *ppvObject = &TestDual;
         return S_OK;
+    }else if(IsEqualGUID(riid, &IID_ITestSecondIface)) {
+        *ppvObject = &TestSecondIface;
+        return S_OK;
     }
 
     *ppvObject = NULL;
@@ -786,6 +818,13 @@ static HRESULT WINAPI StaticWidget_TestDual(IStaticWidget *iface, ItestDual *p)
     return S_OK;
 }
 
+static HRESULT WINAPI StaticWidget_TestSecondIface(IStaticWidget *iface, ITestSecondIface *p)
+{
+    trace("TestSecondIface()\n");
+    ok(p == &TestSecondIface, "wrong ItestSecondIface\n");
+    return S_OK;
+}
+
 static const IStaticWidgetVtbl StaticWidgetVtbl = {
     StaticWidget_QueryInterface,
     StaticWidget_AddRef,
@@ -794,7 +833,8 @@ static const IStaticWidgetVtbl StaticWidgetVtbl = {
     StaticWidget_GetTypeInfo,
     StaticWidget_GetIDsOfNames,
     StaticWidget_Invoke,
-    StaticWidget_TestDual
+    StaticWidget_TestDual,
+    StaticWidget_TestSecondIface
 };
 
 static IStaticWidget StaticWidget = { &StaticWidgetVtbl };
@@ -1624,6 +1664,20 @@ static void test_StaticWidget(void)
     ok(V_VT(&varresult) == VT_EMPTY, "vt %x\n", V_VT(&varresult));
     VariantClear(&varresult);
 
+    /* call TestSecondIface */
+    dispparams.cNamedArgs = 0;
+    dispparams.cArgs = 1;
+    dispparams.rgdispidNamedArgs = NULL;
+    dispparams.rgvarg = vararg;
+    V_VT(vararg) = VT_DISPATCH;
+    V_DISPATCH(vararg) = (IDispatch*)&TestDualDisp;
+    VariantInit(&varresult);
+    hr = ITypeInfo_Invoke(type_info, &StaticWidget, DISPID_TM_TESTSECONDIFACE, DISPATCH_METHOD,
+            &dispparams, &varresult, &excepinfo, NULL);
+    ok_ole_success(hr, IDispatch_Invoke);
+    ok(V_VT(&varresult) == VT_EMPTY, "vt %x\n", V_VT(&varresult));
+    VariantClear(&varresult);
+
     ITypeInfo_Release(type_info);
 }
 
diff --git a/dlls/oleaut32/tests/tmarshal.idl b/dlls/oleaut32/tests/tmarshal.idl
index a26589d..c589574 100644
--- a/dlls/oleaut32/tests/tmarshal.idl
+++ b/dlls/oleaut32/tests/tmarshal.idl
@@ -66,6 +66,15 @@ library TestTypelib
 
     [
         odl,
+        uuid(3f7e06fe-0bce-46f0-8b7d-3a68393c7968)
+    ]
+    interface ITestSecondIface : IUnknown
+    {
+        HRESULT test();
+    }
+
+    [
+        odl,
         uuid(a1f8cae3-c947-4c5f-b57d-c87b9b5f3586),
         oleautomation,
         dual
@@ -168,6 +177,9 @@ library TestTypelib
     {
         [id(DISPID_TM_TESTDUAL)]
         HRESULT TestDual([in] ItestDual *p);
+
+        [id(DISPID_TM_TESTSECONDIFACE)]
+        HRESULT TestSecondIface([in] ITestSecondIface *p);
     }
 
     [
diff --git a/dlls/oleaut32/tests/tmarshal_dispids.h b/dlls/oleaut32/tests/tmarshal_dispids.h
index 8570fe9..879d974 100644
--- a/dlls/oleaut32/tests/tmarshal_dispids.h
+++ b/dlls/oleaut32/tests/tmarshal_dispids.h
@@ -43,6 +43,7 @@
 #define DISPID_TM_VARCARRAY 24
 #define DISPID_TM_RESTRICTED 25
 #define DISPID_TM_NEG_RESTRICTED -26
+#define DISPID_TM_TESTSECONDIFACE 27
 
 #define DISPID_NOA_BSTRRET 1
 #define DISPID_NOA_ERROR 2




More information about the wine-cvs mailing list