[MSCTF_WINETEST] Sync with Wine Staging 1.7.55. CORE-10536
[reactos.git] / rostests / winetests / msctf / inputprocessor.c
index 89d1e1a..58d4d26 100644 (file)
@@ -921,6 +921,7 @@ static void test_EnumInputProcessorInfo(void)
             if(IsEqualGUID(&g,&CLSID_FakeService))
                 found = TRUE;
         }
+        IEnumGUID_Release(ppEnum);
     }
     ok(found,"Did not find registered text service\n");
 }
@@ -943,6 +944,7 @@ static void test_EnumLanguageProfiles(void)
                 ok(IsEqualGUID(&profile.guidProfile,&CLSID_FakeService), "guidProfile Incorrect\n");
             }
         }
+        IEnumTfLanguageProfiles_Release(ppEnum);
     }
     ok(found,"Registered text service not found\n");
 }
@@ -1407,6 +1409,7 @@ static void test_startSession(void)
     ITfContext *cxt,*cxt2,*cxt3,*cxtTest;
     ITextStoreACP *ts;
     TfClientId cid2 = 0;
+    ITfThreadMgrEx *tmex;
 
     hr = ITfThreadMgr_Deactivate(g_tm);
     ok(hr == E_UNEXPECTED,"Deactivate should have failed with E_UNEXPECTED\n");
@@ -1419,10 +1422,21 @@ static void test_startSession(void)
     test_ShouldActivate = FALSE;
     hr = ITfThreadMgr_Activate(g_tm,&cid2);
     ok(SUCCEEDED(hr),"Failed to Activate\n");
-    ok (cid == cid2, "Second activate client ID does not match\n");
+    ok(cid == cid2, "Second activate client ID does not match\n");
+
+    hr = ITfThreadMgr_QueryInterface(g_tm, &IID_ITfThreadMgrEx, (void **)&tmex);
+    ok(SUCCEEDED(hr), "Unable to acquire ITfThreadMgrEx interface\n");
+
+    hr = ITfThreadMgrEx_ActivateEx(tmex, &cid2, 0);
+    ok(SUCCEEDED(hr), "Failed to Activate\n");
+    ok(cid == cid2, "ActivateEx client ID does not match\n");
+
+    ITfThreadMgrEx_Release(tmex);
 
     hr = ITfThreadMgr_Deactivate(g_tm);
-    ok(SUCCEEDED(hr),"Failed to Deactivate\n");
+    ok(SUCCEEDED(hr), "Failed to Deactivate\n");
+    hr = ITfThreadMgr_Deactivate(g_tm);
+    ok(SUCCEEDED(hr), "Failed to Deactivate\n");
 
     test_EnumDocumentMgr(g_tm,NULL,NULL);
 
@@ -2174,7 +2188,6 @@ static void test_AssociateFocus(void)
     test_PrevFocus = FOCUS_IGNORE;
     DestroyWindow(wnd1);
     DestroyWindow(wnd2);
-    test_OnSetFocus = SINK_UNEXPECTED;
     test_OnPopContext = SINK_OPTIONAL; /* Vista and greater */
     test_OnSetFocus = SINK_OPTIONAL; /* Vista and greater */
     ITfThreadMgr_GetFocus(g_tm, &test_PrevFocus);
@@ -2186,6 +2199,28 @@ static void test_AssociateFocus(void)
     sink_check_ok(&test_OnPopContext,"OnPopContext");
 }
 
+static void test_profile_mgr(void)
+{
+    IEnumTfInputProcessorProfiles *enum_profiles;
+    ITfInputProcessorProfileMgr *ipp_mgr;
+    HRESULT hres;
+
+    hres = ITfInputProcessorProfiles_QueryInterface(g_ipp, &IID_ITfInputProcessorProfileMgr, (void**)&ipp_mgr);
+    if (hres != S_OK)
+    {
+        win_skip("ITfInputProcessorProfileMgr is not supported.\n");
+        return;
+    }
+    ok(hres == S_OK, "Could not get ITfInputProcessorProfileMgr iface: %08x\n", hres);
+
+    hres = ITfInputProcessorProfileMgr_EnumProfiles(ipp_mgr, 0, &enum_profiles);
+    ok(hres == S_OK, "EnumProfiles failed: %08x\n", hres);
+
+    IEnumTfInputProcessorProfiles_Release(enum_profiles);
+
+    ITfInputProcessorProfileMgr_Release(ipp_mgr);
+}
+
 START_TEST(inputprocessor)
 {
     if (SUCCEEDED(initialize()))
@@ -2212,6 +2247,7 @@ START_TEST(inputprocessor)
         test_ThreadMgrUnadviseSinks();
         test_UnregisterCategory();
         test_Unregister();
+        test_profile_mgr();
     }
     else
         skip("Unable to create InputProcessor\n");