From 723aceb20f8b759340074592da7d3ca4d201fe0b Mon Sep 17 00:00:00 2001 From: Robert Shearman Date: Wed, 28 Jun 2006 21:24:58 +0100 Subject: [PATCH] ole32: Add a test for CoCreateInstance doing object hosting by automatically creating an appropriate apartment for the object and returning a proxy to it. --- dlls/ole32/tests/marshal.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/dlls/ole32/tests/marshal.c b/dlls/ole32/tests/marshal.c index a1be2c3152..24f9268561 100644 --- a/dlls/ole32/tests/marshal.c +++ b/dlls/ole32/tests/marshal.c @@ -26,6 +26,7 @@ #include "windef.h" #include "winbase.h" #include "objbase.h" +#include "shlguid.h" #include "wine/test.h" @@ -59,6 +60,26 @@ static void test_CoGetPSClsid(void) hr); } +static void test_cocreateinstance_proxy(void) +{ + IUnknown *pProxy; + IMultiQI *pMQI; + HRESULT hr; + + pCoInitializeEx(NULL, COINIT_MULTITHREADED); + + hr = CoCreateInstance(&CLSID_ShellDesktop, NULL, CLSCTX_INPROC, &IID_IUnknown, (void **)&pProxy); + ok_ole_success(hr, CoCreateInstance); + hr = IUnknown_QueryInterface(pProxy, &IID_IMultiQI, (void **)&pMQI); + todo_wine + ok(hr == S_OK, "created object is not a proxy, so was created in the wrong apartment\n"); + if (hr == S_OK) + IMultiQI_Release(pMQI); + IUnknown_Release(pProxy); + + CoUninitialize(); +} + static const LARGE_INTEGER ullZero; static LONG cLocks; @@ -2214,6 +2235,8 @@ START_TEST(marshal) wndclass.lpszClassName = "WineCOMTest"; RegisterClass(&wndclass); + test_cocreateinstance_proxy(); + pCoInitializeEx(NULL, COINIT_APARTMENTTHREADED); /* FIXME: test CoCreateInstanceEx */