Jacek Caban : msctf: Added Push/Pop context tests.

Alexandre Julliard julliard at winehq.org
Mon Dec 19 13:10:37 CST 2016


Module: wine
Branch: stable
Commit: 1eb046bc37a24584f69acf3f31cd1c4de0287d74
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=1eb046bc37a24584f69acf3f31cd1c4de0287d74

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri May 27 18:35:35 2016 +0200

msctf: Added Push/Pop context tests.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
(cherry picked from commit bc645ca71a7e2575e9808d54b78a97f84f9ffe66)
Signed-off-by: Michael Stefaniuc <mstefani at 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");
 




More information about the wine-cvs mailing list