Nikolay Sivov : ole32/tests: Added a test for OleRun().

Alexandre Julliard julliard at wine.codeweavers.com
Fri May 8 05:21:28 CDT 2015


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

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Thu May  7 18:56:58 2015 +0300

ole32/tests: Added a test for OleRun().

---

 dlls/ole32/tests/ole2.c | 76 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 76 insertions(+)

diff --git a/dlls/ole32/tests/ole2.c b/dlls/ole32/tests/ole2.c
index 0c27bd1..b590d3d 100644
--- a/dlls/ole32/tests/ole2.c
+++ b/dlls/ole32/tests/ole2.c
@@ -2074,14 +2074,90 @@ static const IUnknownVtbl UnknownVtbl =
     Unknown_Release
 };
 
+static HRESULT WINAPI OleRun_QueryInterface(IRunnableObject *iface, REFIID riid, void **ppv)
+{
+    *ppv = NULL;
+
+    if (IsEqualIID(riid, &IID_IUnknown) ||
+        IsEqualIID(riid, &IID_IRunnableObject)) {
+        *ppv = iface;
+    }
+
+    if (*ppv)
+    {
+        IUnknown_AddRef((IUnknown *)*ppv);
+        return S_OK;
+    }
+
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI OleRun_AddRef(IRunnableObject *iface)
+{
+    return 2;
+}
+
+static ULONG WINAPI OleRun_Release(IRunnableObject *iface)
+{
+    return 1;
+}
+
+static HRESULT WINAPI OleRun_GetRunningClass(IRunnableObject *iface, CLSID *clsid)
+{
+    ok(0, "unxpected\n");
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI OleRun_Run(IRunnableObject *iface, LPBINDCTX ctx)
+{
+    ok(ctx == NULL, "got %p\n", ctx);
+    return 0xdeadc0de;
+}
+
+static BOOL WINAPI OleRun_IsRunning(IRunnableObject *iface)
+{
+    ok(0, "unxpected\n");
+    return FALSE;
+}
+
+static HRESULT WINAPI OleRun_LockRunning(IRunnableObject *iface, BOOL lock,
+    BOOL last_unlock_closes)
+{
+    ok(0, "unxpected\n");
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI OleRun_SetContainedObject(IRunnableObject *iface, BOOL contained)
+{
+    ok(0, "unxpected\n");
+    return E_NOTIMPL;
+}
+
+static const IRunnableObjectVtbl oleruntestvtbl =
+{
+    OleRun_QueryInterface,
+    OleRun_AddRef,
+    OleRun_Release,
+    OleRun_GetRunningClass,
+    OleRun_Run,
+    OleRun_IsRunning,
+    OleRun_LockRunning,
+    OleRun_SetContainedObject
+};
+
 static IUnknown unknown = { &UnknownVtbl };
+static IRunnableObject testrunnable = { &oleruntestvtbl };
 
 static void test_OleRun(void)
 {
     HRESULT hr;
 
+    /* doesn't support IRunnableObject */
     hr = OleRun(&unknown);
     ok(hr == S_OK, "OleRun failed 0x%08x\n", hr);
+
+    hr = OleRun((IUnknown*)&testrunnable);
+    ok(hr == 0xdeadc0de, "got 0x%08x\n", hr);
 }
 
 static void test_OleLockRunning(void)




More information about the wine-cvs mailing list