From 023ad38914080453d0b2536d77ce36eb0152a7cd Mon Sep 17 00:00:00 2001 From: Robert Shearman Date: Mon, 20 Feb 2006 11:16:08 +0100 Subject: [PATCH] ole: Test the behaviour of CoCreateInstance with an uninitialized apartment. --- dlls/ole32/tests/compobj.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/dlls/ole32/tests/compobj.c b/dlls/ole32/tests/compobj.c index ef043b141fb..8882d28fe3f 100644 --- a/dlls/ole32/tests/compobj.c +++ b/dlls/ole32/tests/compobj.c @@ -25,6 +25,7 @@ #include "windef.h" #include "winbase.h" #include "objbase.h" +#include "shlguid.h" #include "wine/test.h" @@ -81,9 +82,30 @@ static void test_CLSIDFromString(void) ok(IsEqualCLSID(&clsid, &CLSID_CDeviceMoniker), "clsid wasn't equal to CLSID_CDeviceMoniker\n"); } +static void test_CoCreateInstance(void) +{ + REFCLSID rclsid = &CLSID_MyComputer; + IUnknown *pUnk = (IUnknown *)0xdeadbeef; + HRESULT hr = CoCreateInstance(rclsid, NULL, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void **)&pUnk); + ok(hr == CO_E_NOTINITIALIZED, "CoCreateInstance should have return CO_E_NOTINITIALIZED instead of 0x%08lx", hr); + todo_wine { + ok(pUnk == NULL, "CoCreateInstance should have changed the passed in pointer to NULL, instead of %p\n", pUnk); + } + + OleInitialize(NULL); + hr = CoCreateInstance(rclsid, NULL, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void **)&pUnk); + ok_ole_success(hr, "CoCreateInstance"); + IUnknown_Release(pUnk); + OleUninitialize(); + + hr = CoCreateInstance(rclsid, NULL, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void **)&pUnk); + ok(hr == CO_E_NOTINITIALIZED, "CoCreateInstance should have return CO_E_NOTINITIALIZED instead of 0x%08lx", hr); +} + START_TEST(compobj) { test_ProgIDFromCLSID(); test_CLSIDFromProgID(); test_CLSIDFromString(); + test_CoCreateInstance(); }