Module: wine Branch: master Commit: 05230781b006ed94cbf5e34bc6366595f55d0d8e URL: http://source.winehq.org/git/wine.git/?a=commit;h=05230781b006ed94cbf5e34bc6...
Author: Rob Shearman rob@codeweavers.com Date: Tue May 22 10:31:45 2007 +0100
ole32: Add more tests for global interface table functions.
---
dlls/ole32/tests/marshal.c | 28 +++++++++++++++++++++++++++- 1 files changed, 27 insertions(+), 1 deletions(-)
diff --git a/dlls/ole32/tests/marshal.c b/dlls/ole32/tests/marshal.c index 1fd2fbb..d0735fc 100644 --- a/dlls/ole32/tests/marshal.c +++ b/dlls/ole32/tests/marshal.c @@ -2588,10 +2588,11 @@ static DWORD CALLBACK get_global_interface_proc(LPVOID pv) hr);
CoInitialize(NULL); + hr = IGlobalInterfaceTable_GetInterfaceFromGlobal(params->git, params->cookie, &IID_IClassFactory, (void **)&cf); ok_ole_success(hr, IGlobalInterfaceTable_GetInterfaceFromGlobal);
- IGlobalInterfaceTable_Release(params->git); + IClassFactory_Release(cf);
CoUninitialize();
@@ -2607,6 +2608,10 @@ static void test_globalinterfacetable(void) DWORD tid; struct git_params params; DWORD ret; + IUnknown *object; + + trace("test_globalinterfacetable\n"); + cLocks = 0;
hr = CoCreateInstance(&CLSID_StdGlobalInterfaceTable, NULL, CLSCTX_INPROC_SERVER, &IID_IGlobalInterfaceTable, (void **)&git); ok_ole_success(hr, CoCreateInstance); @@ -2614,6 +2619,8 @@ static void test_globalinterfacetable(void) hr = IGlobalInterfaceTable_RegisterInterfaceInGlobal(git, (IUnknown *)&Test_ClassFactory, &IID_IClassFactory, &cookie); ok_ole_success(hr, IGlobalInterfaceTable_RegisterInterfaceInGlobal);
+ ok_more_than_one_lock(); + params.cookie = cookie; params.git = git; /* note: params is on stack so we MUST wait for get_global_interface_proc @@ -2630,6 +2637,25 @@ static void test_globalinterfacetable(void) }
CloseHandle(thread); + + /* test getting interface from global with different iid */ + hr = IGlobalInterfaceTable_GetInterfaceFromGlobal(git, cookie, &IID_IUnknown, (void **)&object); + todo_wine + ok_ole_success(hr, IGlobalInterfaceTable_GetInterfaceFromGlobal); + if (SUCCEEDED(hr)) IUnknown_Release(object); + + /* test getting interface from global with same iid */ + hr = IGlobalInterfaceTable_GetInterfaceFromGlobal(git, cookie, &IID_IClassFactory, (void **)&object); + ok_ole_success(hr, IGlobalInterfaceTable_GetInterfaceFromGlobal); + IUnknown_Release(object); + + hr = IGlobalInterfaceTable_RevokeInterfaceFromGlobal(git, cookie); + ok_ole_success(hr, IGlobalInterfaceTable_RevokeInterfaceFromGlobal); + + todo_wine + ok_no_locks(); + + IGlobalInterfaceTable_Release(git); }
static const char *debugstr_iid(REFIID riid)