From 748c3ea9c9b3ddf9baceccc190e366f10b4349f7 Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Thu, 30 May 2013 17:30:12 +0900 Subject: [PATCH] ole32: Add a couple more defaulthandler tests. --- dlls/ole32/tests/defaulthandler.c | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/dlls/ole32/tests/defaulthandler.c b/dlls/ole32/tests/defaulthandler.c index 0196e514d4e..67fc5e814dc 100644 --- a/dlls/ole32/tests/defaulthandler.c +++ b/dlls/ole32/tests/defaulthandler.c @@ -171,7 +171,7 @@ static ULONG WINAPI test_class_Release(IUnknown *iface) return 1; } -static IUnknownVtbl test_class_vtbl = { +static const IUnknownVtbl test_class_vtbl = { test_class_QueryInterface, test_class_AddRef, test_class_Release, @@ -231,7 +231,7 @@ static HRESULT WINAPI ClassFactory_LockServer(IClassFactory *iface, BOOL fLock) return E_NOTIMPL; } -static IClassFactoryVtbl ClassFactoryVtbl = { +static const IClassFactoryVtbl ClassFactoryVtbl = { ClassFactory_QueryInterface, ClassFactory_AddRef, ClassFactory_Release, @@ -247,6 +247,8 @@ static void test_default_handler_run(void) IUnknown *unk; IRunnableObject *ro; + IOleObject *oleobj; + IPersistStorage *persist; DWORD class_reg; HRESULT hres; @@ -281,6 +283,14 @@ static void test_default_handler_run(void) hres = OleCreateDefaultHandler(&test_server_clsid, NULL, &IID_IUnknown, (void**)&unk); ok(hres == S_OK, "OleCreateDefaultHandler failed: %x\n", hres); + hres = IUnknown_QueryInterface(unk, &IID_IOleObject, (void**)&oleobj); + ok(hres == S_OK, "QueryInterface(IID_IOleObject) failed: %x\n", hres); + + hres = IOleObject_QueryInterface(oleobj, &IID_IPersistStorage, (void**)&persist); + ok(hres == S_OK, "QueryInterface(IID_IPersistStorage) failed: %x\n", hres); + IPersistStorage_Release(persist); + IOleObject_Release(oleobj); + hres = IUnknown_QueryInterface(unk, &IID_IRunnableObject, (void**)&ro); ok(hres == S_OK, "QueryInterface(IRunnableObject) failed: %x\n", hres); IUnknown_Release(unk); @@ -288,11 +298,23 @@ static void test_default_handler_run(void) SET_EXPECT(CF_QueryInterface_ClassFactory); SET_EXPECT(CF_CreateInstance); hres = IRunnableObject_Run(ro, NULL); - todo_wine ok(hres == S_OK, "Run failed: %x\n", hres); +todo_wine + ok(hres == S_OK, "Run failed: %x\n", hres); CHECK_CALLED(CF_QueryInterface_ClassFactory); CHECK_CALLED(CF_CreateInstance); IRunnableObject_Release(ro); + SET_EXPECT(CF_QueryInterface_ClassFactory); + SET_EXPECT(CF_CreateInstance); + hres = CoCreateInstance(&test_server_clsid, NULL, CLSCTX_LOCAL_SERVER, + &IID_IOleObject, (void**)&oleobj); +todo_wine + ok(hres == REGDB_E_CLASSNOTREG, "expected REGDB_E_CLASSNOTREG, got %x\n", hres); +todo_wine + CHECK_NOT_CALLED(CF_QueryInterface_ClassFactory); +todo_wine + CHECK_NOT_CALLED(CF_CreateInstance); + SET_EXPECT(CF_QueryInterface_IMarshal); CoRevokeClassObject(class_reg); todo_wine CHECK_CALLED(CF_QueryInterface_IMarshal);