Module: wine Branch: master Commit: a411ef99fcee102dfb1a5426af2f9f6697643a67 URL: http://source.winehq.org/git/wine.git/?a=commit;h=a411ef99fcee102dfb1a5426af...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Thu Mar 10 10:33:31 2016 +0300
ole32/tests: A test to show data cache QI problems.
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com Signed-off-by: Huw Davies huw@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/ole32/tests/ole2.c | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-)
diff --git a/dlls/ole32/tests/ole2.c b/dlls/ole32/tests/ole2.c index 2167f66..d58105c 100644 --- a/dlls/ole32/tests/ole2.c +++ b/dlls/ole32/tests/ole2.c @@ -1505,13 +1505,11 @@ static HRESULT WINAPI Unknown_QueryInterface(IUnknown *iface, REFIID riid, void
static ULONG WINAPI Unknown_AddRef(IUnknown *iface) { - ok(0, "unexpected AddRef\n"); return 2; }
static ULONG WINAPI Unknown_Release(IUnknown *iface) { - ok(0, "unexpected Release\n"); return 1; }
@@ -1528,7 +1526,9 @@ static void test_data_cache(void) { HRESULT hr; IOleCache2 *pOleCache; + IOleCache *olecache; IStorage *pStorage; + IUnknown *unk; IPersistStorage *pPS; IViewObject *pViewObject; IOleCacheControl *pOleCacheControl; @@ -1601,9 +1601,32 @@ static void test_data_cache(void) todo_wine ok(hr == E_INVALIDARG, "got 0x%08x\n", hr);
- hr = CreateDataCache(&unknown, &CLSID_NULL, &IID_IUnknown, (void**)&pOleCache); + hr = CreateDataCache(&unknown, &CLSID_NULL, &IID_IUnknown, (void**)&unk); + ok(hr == S_OK, "got 0x%08x\n", hr); + + hr = IUnknown_QueryInterface(unk, &IID_IOleCache, (void**)&olecache); + ok(hr == S_OK, "got 0x%08x\n", hr); + hr = IUnknown_QueryInterface(unk, &IID_IOleCache2, (void**)&pOleCache); + ok(hr == S_OK, "got 0x%08x\n", hr); + ok(unk != (IUnknown*)olecache, "got %p, expected %p\n", olecache, unk); + ok(unk != (IUnknown*)pOleCache, "got %p, expected %p\n", pOleCache, unk); + IOleCache2_Release(pOleCache); + IOleCache_Release(olecache); + IUnknown_Release(unk); + + hr = CreateDataCache(NULL, &CLSID_NULL, &IID_IUnknown, (void**)&unk); + ok(hr == S_OK, "got 0x%08x\n", hr); + hr = IUnknown_QueryInterface(unk, &IID_IOleCache, (void**)&olecache); ok(hr == S_OK, "got 0x%08x\n", hr); + hr = IUnknown_QueryInterface(unk, &IID_IOleCache2, (void**)&pOleCache); + ok(hr == S_OK, "got 0x%08x\n", hr); +todo_wine { + ok(unk == (IUnknown*)olecache, "got %p, expected %p\n", olecache, unk); + ok(unk == (IUnknown*)pOleCache, "got %p, expected %p\n", pOleCache, unk); +} IOleCache2_Release(pOleCache); + IOleCache_Release(olecache); + IUnknown_Release(unk);
/* Test with new data */