Jacek Caban : msctf: Added Push/Pop context tests.
Module: wine Branch: stable Commit: 1eb046bc37a24584f69acf3f31cd1c4de0287d74 URL: http://source.winehq.org/git/wine.git/?a=commit;h=1eb046bc37a24584f69acf3f31... Author: Jacek Caban <jacek(a)codeweavers.com> Date: Fri May 27 18:35:35 2016 +0200 msctf: Added Push/Pop context tests. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> (cherry picked from commit bc645ca71a7e2575e9808d54b78a97f84f9ffe66) Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org> --- dlls/msctf/tests/inputprocessor.c | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/dlls/msctf/tests/inputprocessor.c b/dlls/msctf/tests/inputprocessor.c index 6cb08fe..2d0c6c0 100644 --- a/dlls/msctf/tests/inputprocessor.c +++ b/dlls/msctf/tests/inputprocessor.c @@ -73,6 +73,7 @@ static INT test_OnPushContext = SINK_UNEXPECTED; static INT test_OnPopContext = SINK_UNEXPECTED; static INT test_KEV_OnSetFocus = SINK_UNEXPECTED; static INT test_ACP_AdviseSink = SINK_UNEXPECTED; +static INT test_ACP_UnadviseSink = SINK_UNEXPECTED; static INT test_ACP_GetStatus = SINK_UNEXPECTED; static INT test_ACP_RequestLock = SINK_UNEXPECTED; static INT test_ACP_GetEndACP = SINK_UNEXPECTED; @@ -235,6 +236,9 @@ static HRESULT WINAPI TextStoreACP_AdviseSink(ITextStoreACP *iface, sink_fire_ok(&test_ACP_AdviseSink,"TextStoreACP_AdviseSink"); + if(ACPSink) + return S_OK; + hr = IUnknown_QueryInterface(punk, &IID_ITextStoreACPSink, (void**)&ACPSink); ok(SUCCEEDED(hr),"Unable to QueryInterface on sink\n"); @@ -248,7 +252,7 @@ static HRESULT WINAPI TextStoreACP_AdviseSink(ITextStoreACP *iface, static HRESULT WINAPI TextStoreACP_UnadviseSink(ITextStoreACP *iface, IUnknown *punk) { - trace("\n"); + sink_fire_ok(&test_ACP_UnadviseSink,"TextStoreACP_UnadviseSink"); return S_OK; } @@ -1413,7 +1417,7 @@ static void test_startSession(void) DWORD editCookie; ITfDocumentMgr *dmtest; ITfContext *cxt,*cxt2,*cxt3,*cxtTest; - ITextStoreACP *ts; + ITextStoreACP *ts = NULL; TfClientId cid2 = 0; ITfThreadMgrEx *tmex; @@ -1577,6 +1581,8 @@ static void test_startSession(void) ok(hr == S_FALSE, "ITfContext_GetDocumentMgr wrong rc %x\n",hr); ok(dmtest == NULL,"returned documentmgr should be null\n"); + ITfContext_Release(cxt2); + hr = ITfDocumentMgr_GetTop(g_dm, &cxtTest); ok(SUCCEEDED(hr),"GetTop Failed\n"); ok(cxtTest == cxt, "Wrong context on top\n"); @@ -1587,6 +1593,25 @@ static void test_startSession(void) ok(cxtTest == cxt, "Wrong context on base\n"); ITfContext_Release(cxtTest); + hr = ITfDocumentMgr_CreateContext(g_dm, cid, 0, (IUnknown*)ts, &cxt2, &editCookie); + ok(hr == S_OK,"CreateContext Failed\n"); + + test_OnPushContext = SINK_EXPECTED; + test_ACP_AdviseSink = SINK_EXPECTED; + hr = ITfDocumentMgr_Push(g_dm, cxt2); + ok(hr == S_OK,"Push Failed\n"); + sink_check_ok(&test_OnPushContext,"OnPushContext"); + sink_check_ok(&test_ACP_AdviseSink,"TextStoreACP_AdviseSink"); + + test_ACP_UnadviseSink = SINK_EXPECTED; + cnt = check_context_refcount(cxt2); + test_OnPopContext = SINK_EXPECTED; + hr = ITfDocumentMgr_Pop(g_dm, 0); + ok(hr == S_OK,"Pop Failed\n"); + ok(check_context_refcount(cxt2) < cnt, "Ref count did not decrease\n"); + sink_check_ok(&test_OnPopContext,"OnPopContext"); + sink_check_ok(&test_ACP_UnadviseSink,"TextStoreACP_AdviseSink"); + hr = ITfDocumentMgr_Pop(g_dm, 0); ok(FAILED(hr),"Pop Succeeded\n");
participants (1)
-
Alexandre Julliard