From: Rémi Bernon rbernon@codeweavers.com
--- dlls/imm32/tests/imm32.c | 41 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+)
diff --git a/dlls/imm32/tests/imm32.c b/dlls/imm32/tests/imm32.c index ea0154ef4f1..cb2e687af05 100644 --- a/dlls/imm32/tests/imm32.c +++ b/dlls/imm32/tests/imm32.c @@ -7084,6 +7084,30 @@ static void test_ImmTranslateMessage( BOOL kbd_char_first ) }, {0}, }; + struct ime_call key_down_seq[] = + { + { + .hkl = expect_ime, .himc = 0/*himc*/, .func = IME_PROCESS_KEY, + .process_key = {.vkey = 'Q', .lparam = MAKELONG(1, 0x10)}, + }, + { + .hkl = expect_ime, .himc = 0/*himc*/, .func = IME_TO_ASCII_EX, + .to_ascii_ex = {.vkey = 'Q', .vsc = 0x10}, + }, + {0}, + }; + struct ime_call key_up_seq[] = + { + { + .hkl = expect_ime, .himc = 0/*himc*/, .func = IME_PROCESS_KEY, + .process_key = {.vkey = 'Q', .lparam = MAKELONG(1, 0xc010)}, + }, + { + .hkl = expect_ime, .himc = 0/*himc*/, .func = IME_TO_ASCII_EX, + .to_ascii_ex = {.vkey = 'Q', .vsc = 0xc010}, + }, + {0}, + }; struct ime_call post_messages[] = { {.hkl = expect_ime, .himc = 0/*himc*/, .func = MSG_TEST_WIN, .message = {.msg = WM_IME_STARTCOMPOSITION, .wparam = 1}}, @@ -7166,6 +7190,8 @@ static void test_ImmTranslateMessage( BOOL kbd_char_first ) for (i = 0; i < ARRAY_SIZE(to_ascii_ex_3); i++) to_ascii_ex_3[i].himc = himc; for (i = 0; i < ARRAY_SIZE(post_messages); i++) post_messages[i].himc = himc; for (i = 0; i < ARRAY_SIZE(sent_messages); i++) sent_messages[i].himc = himc; + for (i = 0; i < ARRAY_SIZE(key_down_seq); i++) key_down_seq[i].himc = himc; + for (i = 0; i < ARRAY_SIZE(key_up_seq); i++) key_up_seq[i].himc = himc; memset( ime_calls, 0, sizeof(ime_calls) ); ime_call_count = 0;
@@ -7206,6 +7232,21 @@ static void test_ImmTranslateMessage( BOOL kbd_char_first ) ok_ret( 1, ImmGenerateMessage( himc ) ); ok_seq( empty_sequence );
+ + if (!kbd_char_first) /* kbd_char_first has an additional IME_NOTIFY message */ + { + keybd_event( 'Q', 0x10, 0, 0 ); + flush_events(); + process_messages_( hwnd ); + ok_seq( key_down_seq ); + + keybd_event( 'Q', 0x10, KEYEVENTF_KEYUP, 0 ); + flush_events(); + process_messages_( hwnd ); + todo_wine ok_seq( key_up_seq ); + } + + ok_ret( 1, ImmUnlockIMC( himc ) ); ok_ret( 1, ImmDestroyContext( himc ) );