André Hentschel : imm32: Add tests for ImmAssociateContextEx.

Alexandre Julliard julliard at winehq.org
Thu Apr 22 11:24:07 CDT 2010


Module: wine
Branch: master
Commit: 699ef11d488c3128d091bfa4309a1e9abca4ca23
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=699ef11d488c3128d091bfa4309a1e9abca4ca23

Author: André Hentschel <nerv at dawncrow.de>
Date:   Thu Apr 22 17:40:15 2010 +0200

imm32: Add tests for ImmAssociateContextEx.

---

 dlls/imm32/tests/imm32.c |   56 +++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 51 insertions(+), 5 deletions(-)

diff --git a/dlls/imm32/tests/imm32.c b/dlls/imm32/tests/imm32.c
index ccbbc06..2d25e53 100644
--- a/dlls/imm32/tests/imm32.c
+++ b/dlls/imm32/tests/imm32.c
@@ -26,6 +26,8 @@
 
 #define NUMELEMS(array) (sizeof((array))/sizeof((array)[0]))
 
+static BOOL (WINAPI *pImmAssociateContextEx)(HWND,HIMC,DWORD);
+
 /*
  * msgspy - record and analyse message traces sent to a certain window
  */
@@ -133,9 +135,13 @@ static void msg_spy_cleanup(void) {
 static const char wndcls[] = "winetest_imm32_wndcls";
 static HWND hwnd;
 
-static int init(void) {
+static BOOL init(void) {
     WNDCLASSEX wc;
     HIMC imc;
+    HMODULE hmod;
+
+    hmod = GetModuleHandleA("imm32.dll");
+    pImmAssociateContextEx = (void*)GetProcAddress(hmod, "ImmAssociateContextEx");
 
     wc.cbSize        = sizeof(WNDCLASSEX);
     wc.style         = 0;
@@ -151,19 +157,19 @@ static int init(void) {
     wc.hIconSm       = LoadIcon(NULL, IDI_APPLICATION);
 
     if (!RegisterClassExA(&wc))
-        return 0;
+        return FALSE;
 
     hwnd = CreateWindowEx(WS_EX_CLIENTEDGE, wndcls, "Wine imm32.dll test",
                           WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT,
                           240, 120, NULL, NULL, GetModuleHandle(0), NULL);
     if (!hwnd)
-        return 0;
+        return FALSE;
 
     imc = ImmGetContext(hwnd);
     if (!imc)
     {
         win_skip("IME support not implemented\n");
-        return 0;
+        return FALSE;
     }
     ImmReleaseContext(hwnd, imc);
 
@@ -172,7 +178,7 @@ static int init(void) {
 
     msg_spy_init(hwnd);
 
-    return 1;
+    return TRUE;
 }
 
 static void cleanup(void) {
@@ -307,6 +313,45 @@ static void test_ImmIME(void)
     ImmReleaseContext(hwnd,imc);
 }
 
+static void test_ImmAssociateContextEx(void)
+{
+    HIMC imc;
+    BOOL rc;
+
+    if (!pImmAssociateContextEx) return;
+
+    imc = ImmGetContext(hwnd);
+    if (imc)
+    {
+        HIMC retimc, newimc;
+
+        newimc = ImmCreateContext();
+        ok(newimc != imc, "handles should not be the same\n");
+        rc = pImmAssociateContextEx(NULL, NULL, 0);
+        ok(!rc, "ImmAssociateContextEx succeeded\n");
+        rc = pImmAssociateContextEx(hwnd, NULL, 0);
+        todo_wine ok(rc, "ImmAssociateContextEx failed\n");
+        rc = pImmAssociateContextEx(NULL, imc, 0);
+        ok(!rc, "ImmAssociateContextEx succeeded\n");
+
+        rc = pImmAssociateContextEx(hwnd, imc, 0);
+        todo_wine ok(rc, "ImmAssociateContextEx failed\n");
+        retimc = ImmGetContext(hwnd);
+        ok(retimc == imc, "handles should be the same\n");
+        ImmReleaseContext(hwnd,retimc);
+
+        rc = pImmAssociateContextEx(hwnd, newimc, 0);
+        todo_wine ok(rc, "ImmAssociateContextEx failed\n");
+        retimc = ImmGetContext(hwnd);
+        todo_wine ok(retimc == newimc, "handles should be the same\n");
+        ImmReleaseContext(hwnd,retimc);
+
+        rc = pImmAssociateContextEx(hwnd, NULL, IACE_DEFAULT);
+        ok(rc, "ImmAssociateContextEx failed\n");
+    }
+    ImmReleaseContext(hwnd,imc);
+}
+
 START_TEST(imm32) {
     if (init())
     {
@@ -314,6 +359,7 @@ START_TEST(imm32) {
         test_ImmGetCompositionString();
         test_ImmSetCompositionString();
         test_ImmIME();
+        test_ImmAssociateContextEx();
     }
     cleanup();
 }




More information about the wine-cvs mailing list