Module: wine Branch: master Commit: d66af9c185985bae3fc804c2adff7ceb7ec91f65 URL: http://source.winehq.org/git/wine.git/?a=commit;h=d66af9c185985bae3fc804c2ad...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Thu Dec 24 13:33:59 2015 +0300
ole32/tests: Simple test for aggregation in CreateDataCache().
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/ole32/tests/ole2.c | 73 +++++++++++++++++++++++++++++-------------------- 1 file changed, 44 insertions(+), 29 deletions(-)
diff --git a/dlls/ole32/tests/ole2.c b/dlls/ole32/tests/ole2.c index 058e5ec..3845ec2 100644 --- a/dlls/ole32/tests/ole2.c +++ b/dlls/ole32/tests/ole2.c @@ -1496,6 +1496,39 @@ static IDataObjectVtbl DataObjectVtbl =
static IDataObject DataObject = { &DataObjectVtbl };
+static HRESULT WINAPI Unknown_QueryInterface(IUnknown *iface, REFIID riid, void **ppv) +{ + *ppv = NULL; + if (IsEqualIID(riid, &IID_IUnknown)) *ppv = iface; + if (*ppv) + { + IUnknown_AddRef((IUnknown *)*ppv); + return S_OK; + } + return E_NOINTERFACE; +} + +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; +} + +static const IUnknownVtbl UnknownVtbl = +{ + Unknown_QueryInterface, + Unknown_AddRef, + Unknown_Release +}; + +static IUnknown unknown = { &UnknownVtbl }; + static void test_data_cache(void) { HRESULT hr; @@ -1566,6 +1599,17 @@ static void test_data_cache(void) hr = StgCreateDocfile(NULL, STGM_READWRITE | STGM_CREATE | STGM_SHARE_EXCLUSIVE | STGM_DELETEONRELEASE, 0, &pStorage); ok_ole_success(hr, "StgCreateDocfile");
+ /* aggregation */ + + /* requested is not IUnknown */ + hr = CreateDataCache(&unknown, &CLSID_NULL, &IID_IOleCache2, (void**)&pOleCache); +todo_wine + ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + + hr = CreateDataCache(&unknown, &CLSID_NULL, &IID_IUnknown, (void**)&pOleCache); + ok(hr == S_OK, "got 0x%08x\n", hr); + IOleCache2_Release(pOleCache); + /* Test with new data */
hr = CreateDataCache(NULL, &CLSID_NULL, &IID_IOleCache2, (LPVOID *)&pOleCache); @@ -2214,34 +2258,6 @@ static void test_runnable(void) g_showRunnable = TRUE; }
-static HRESULT WINAPI Unknown_QueryInterface(IUnknown *iface, REFIID riid, void **ppv) -{ - *ppv = NULL; - if (IsEqualIID(riid, &IID_IUnknown)) *ppv = iface; - if (*ppv) - { - IUnknown_AddRef((IUnknown *)*ppv); - return S_OK; - } - return E_NOINTERFACE; -} - -static ULONG WINAPI Unknown_AddRef(IUnknown *iface) -{ - return 2; -} - -static ULONG WINAPI Unknown_Release(IUnknown *iface) -{ - return 1; -} - -static const IUnknownVtbl UnknownVtbl = -{ - Unknown_QueryInterface, - Unknown_AddRef, - Unknown_Release -};
static HRESULT WINAPI OleRun_QueryInterface(IRunnableObject *iface, REFIID riid, void **ppv) { @@ -2314,7 +2330,6 @@ static const IRunnableObjectVtbl oleruntestvtbl = OleRun_SetContainedObject };
-static IUnknown unknown = { &UnknownVtbl }; static IRunnableObject testrunnable = { &oleruntestvtbl };
static void test_OleRun(void)