Module: wine Branch: refs/heads/master Commit: 023ad38914080453d0b2536d77ce36eb0152a7cd URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=023ad38914080453d0b2536d...
Author: Robert Shearman rob@codeweavers.com Date: Mon Feb 20 11:16:08 2006 +0100
ole: Test the behaviour of CoCreateInstance with an uninitialized apartment.
---
dlls/ole32/tests/compobj.c | 22 ++++++++++++++++++++++ 1 files changed, 22 insertions(+), 0 deletions(-)
diff --git a/dlls/ole32/tests/compobj.c b/dlls/ole32/tests/compobj.c index ef043b1..8882d28 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(); }