imm32/tests: Test the effect of CPS_CANCEL and CPS_COMPLETE.
This commit is contained in:
parent
faa342a2f1
commit
0d9e6adada
1 changed files with 290 additions and 0 deletions
|
@ -7407,6 +7407,77 @@ static void test_ga_na_da(void)
|
|||
{.hkl = default_hkl, .himc = 0/*himc*/, .func = MSG_TEST_WIN, .message = {.msg = WM_IME_KEYDOWN, .wparam = 0xd, .lparam = 0x1c0001}},
|
||||
{0},
|
||||
};
|
||||
struct ime_call cancel_seq[] =
|
||||
{
|
||||
/* G */
|
||||
{.hkl = default_hkl, .himc = 0/*himc*/, .func = MSG_TEST_WIN, .message = {.msg = WM_IME_STARTCOMPOSITION, .wparam = 0, .lparam = 0}},
|
||||
{
|
||||
.hkl = default_hkl, .himc = 0/*himc*/, .func = MSG_TEST_WIN, .comp = L"\u3131", .result = L"",
|
||||
.message = {.msg = WM_IME_COMPOSITION, .wparam = 0x3131, .lparam = GCS_COMPSTR|GCS_COMPATTR|CS_INSERTCHAR|CS_NOMOVECARET},
|
||||
},
|
||||
/* A */
|
||||
{
|
||||
.hkl = default_hkl, .himc = 0/*himc*/, .func = MSG_TEST_WIN, .comp = L"\uac00", .result = L"",
|
||||
.message = {.msg = WM_IME_COMPOSITION, .wparam = 0xac00, .lparam = GCS_COMPSTR|GCS_COMPATTR|CS_INSERTCHAR|CS_NOMOVECARET},
|
||||
},
|
||||
/* N */
|
||||
{
|
||||
.hkl = default_hkl, .himc = 0/*himc*/, .func = MSG_TEST_WIN, .comp = L"\uac04", .result = L"",
|
||||
.message = {.msg = WM_IME_COMPOSITION, .wparam = 0xac04, .lparam = GCS_COMPSTR|GCS_COMPATTR|CS_INSERTCHAR|CS_NOMOVECARET},
|
||||
},
|
||||
/* A */
|
||||
{
|
||||
.hkl = default_hkl, .himc = 0/*himc*/, .func = MSG_TEST_WIN, .comp = L"\ub098", .result = L"\uac00",
|
||||
.message = {.msg = WM_IME_COMPOSITION, .wparam = 0xac00, .lparam = GCS_RESULTSTR},
|
||||
},
|
||||
{.hkl = default_hkl, .himc = 0/*himc*/, .func = MSG_TEST_WIN, .message = {.msg = WM_IME_CHAR, .wparam = 0xac00, .lparam = 0x1}},
|
||||
{
|
||||
.hkl = default_hkl, .himc = 0/*himc*/, .func = MSG_TEST_WIN, .comp = L"\ub098", .result = L"\uac00",
|
||||
.message = {.msg = WM_IME_COMPOSITION, .wparam = 0xb098, .lparam = GCS_COMPSTR|GCS_COMPATTR|CS_INSERTCHAR|CS_NOMOVECARET},
|
||||
},
|
||||
|
||||
/* CPS_CANCEL */
|
||||
{.hkl = default_hkl, .himc = 0/*himc*/, .func = MSG_TEST_WIN, .message = {.msg = WM_IME_ENDCOMPOSITION, .wparam = 0, .lparam = 0}},
|
||||
{0},
|
||||
};
|
||||
struct ime_call closed_seq[] =
|
||||
{
|
||||
/* G */
|
||||
{.hkl = default_hkl, .himc = 0/*himc*/, .func = MSG_TEST_WIN, .message = {.msg = WM_IME_STARTCOMPOSITION, .wparam = 0, .lparam = 0}},
|
||||
{
|
||||
.hkl = default_hkl, .himc = 0/*himc*/, .func = MSG_TEST_WIN, .comp = L"\u3131", .result = L"",
|
||||
.message = {.msg = WM_IME_COMPOSITION, .wparam = 0x3131, .lparam = GCS_COMPSTR|GCS_COMPATTR|CS_INSERTCHAR|CS_NOMOVECARET},
|
||||
},
|
||||
/* A */
|
||||
{
|
||||
.hkl = default_hkl, .himc = 0/*himc*/, .func = MSG_TEST_WIN, .comp = L"\uac00", .result = L"",
|
||||
.message = {.msg = WM_IME_COMPOSITION, .wparam = 0xac00, .lparam = GCS_COMPSTR|GCS_COMPATTR|CS_INSERTCHAR|CS_NOMOVECARET},
|
||||
},
|
||||
/* N */
|
||||
{
|
||||
.hkl = default_hkl, .himc = 0/*himc*/, .func = MSG_TEST_WIN, .comp = L"\uac04", .result = L"",
|
||||
.message = {.msg = WM_IME_COMPOSITION, .wparam = 0xac04, .lparam = GCS_COMPSTR|GCS_COMPATTR|CS_INSERTCHAR|CS_NOMOVECARET},
|
||||
},
|
||||
/* A */
|
||||
{
|
||||
.hkl = default_hkl, .himc = 0/*himc*/, .func = MSG_TEST_WIN, .comp = L"\ub098", .result = L"\uac00",
|
||||
.message = {.msg = WM_IME_COMPOSITION, .wparam = 0xac00, .lparam = GCS_RESULTSTR},
|
||||
},
|
||||
{.hkl = default_hkl, .himc = 0/*himc*/, .func = MSG_TEST_WIN, .message = {.msg = WM_IME_CHAR, .wparam = 0xac00, .lparam = 0x1}},
|
||||
{
|
||||
.hkl = default_hkl, .himc = 0/*himc*/, .func = MSG_TEST_WIN, .comp = L"\ub098", .result = L"\uac00",
|
||||
.message = {.msg = WM_IME_COMPOSITION, .wparam = 0xb098, .lparam = GCS_COMPSTR|GCS_COMPATTR|CS_INSERTCHAR|CS_NOMOVECARET},
|
||||
},
|
||||
|
||||
/* CPS_COMPLETE */
|
||||
{.hkl = default_hkl, .himc = 0/*himc*/, .func = MSG_TEST_WIN, .message = {.msg = WM_IME_ENDCOMPOSITION, .wparam = 0, .lparam = 0}},
|
||||
{
|
||||
.hkl = default_hkl, .himc = 0/*himc*/, .func = MSG_TEST_WIN, .comp = L"", .result = L"\ub098",
|
||||
.message = {.msg = WM_IME_COMPOSITION, .wparam = 0xb098, .lparam = GCS_RESULTSTR},
|
||||
},
|
||||
{.hkl = default_hkl, .himc = 0/*himc*/, .func = MSG_TEST_WIN, .message = {.msg = WM_IME_CHAR, .wparam = 0xb098, .lparam = 0x1}},
|
||||
{0},
|
||||
};
|
||||
|
||||
INPUTCONTEXT *ctx;
|
||||
HWND hwnd;
|
||||
|
@ -7445,6 +7516,8 @@ static void test_ga_na_da(void)
|
|||
for (i = 0; i < ARRAY_SIZE(partial_d_seq); i++) partial_d_seq[i].himc = himc;
|
||||
for (i = 0; i < ARRAY_SIZE(partial_da_seq); i++) partial_da_seq[i].himc = himc;
|
||||
for (i = 0; i < ARRAY_SIZE(partial_return_seq); i++) partial_return_seq[i].himc = himc;
|
||||
for (i = 0; i < ARRAY_SIZE(cancel_seq); i++) cancel_seq[i].himc = himc;
|
||||
for (i = 0; i < ARRAY_SIZE(closed_seq); i++) closed_seq[i].himc = himc;
|
||||
|
||||
keybd_event( 'R', 0x13, 0, 0 );
|
||||
flush_events();
|
||||
|
@ -7532,6 +7605,84 @@ static void test_ga_na_da(void)
|
|||
todo_wine ok_seq( partial_return_seq );
|
||||
|
||||
|
||||
ignore_WM_IME_NOTIFY = TRUE;
|
||||
|
||||
/* cancelling clears the composition string */
|
||||
|
||||
keybd_event( 'R', 0x13, 0, 0 );
|
||||
flush_events();
|
||||
keybd_event( 'R', 0x13, KEYEVENTF_KEYUP, 0 );
|
||||
|
||||
keybd_event( 'K', 0x25, 0, 0 );
|
||||
flush_events();
|
||||
keybd_event( 'K', 0x25, KEYEVENTF_KEYUP, 0 );
|
||||
|
||||
keybd_event( 'S', 0x1f, 0, 0 );
|
||||
flush_events();
|
||||
keybd_event( 'S', 0x1f, KEYEVENTF_KEYUP, 0 );
|
||||
|
||||
keybd_event( 'K', 0x25, 0, 0 );
|
||||
flush_events();
|
||||
keybd_event( 'K', 0x25, KEYEVENTF_KEYUP, 0 );
|
||||
|
||||
ok_ret( 1, ImmNotifyIME( himc, NI_COMPOSITIONSTR, CPS_CANCEL, 0 ) );
|
||||
|
||||
flush_events();
|
||||
todo_wine ok_seq( cancel_seq );
|
||||
|
||||
|
||||
/* CPS_COMPLETE and ImmSetOpenStatus( himc, FALSE ) do the same thing */
|
||||
|
||||
keybd_event( 'R', 0x13, 0, 0 );
|
||||
flush_events();
|
||||
keybd_event( 'R', 0x13, KEYEVENTF_KEYUP, 0 );
|
||||
|
||||
keybd_event( 'K', 0x25, 0, 0 );
|
||||
flush_events();
|
||||
keybd_event( 'K', 0x25, KEYEVENTF_KEYUP, 0 );
|
||||
|
||||
keybd_event( 'S', 0x1f, 0, 0 );
|
||||
flush_events();
|
||||
keybd_event( 'S', 0x1f, KEYEVENTF_KEYUP, 0 );
|
||||
|
||||
keybd_event( 'K', 0x25, 0, 0 );
|
||||
flush_events();
|
||||
keybd_event( 'K', 0x25, KEYEVENTF_KEYUP, 0 );
|
||||
|
||||
ok_ret( 1, ImmNotifyIME( himc, NI_COMPOSITIONSTR, CPS_COMPLETE, 0 ) );
|
||||
|
||||
flush_events();
|
||||
todo_wine ok_seq( closed_seq );
|
||||
|
||||
|
||||
keybd_event( 'R', 0x13, 0, 0 );
|
||||
flush_events();
|
||||
keybd_event( 'R', 0x13, KEYEVENTF_KEYUP, 0 );
|
||||
|
||||
keybd_event( 'K', 0x25, 0, 0 );
|
||||
flush_events();
|
||||
keybd_event( 'K', 0x25, KEYEVENTF_KEYUP, 0 );
|
||||
|
||||
/* does nothing, already open */
|
||||
ok_ret( 1, ImmSetOpenStatus( himc, TRUE ) );
|
||||
|
||||
keybd_event( 'S', 0x1f, 0, 0 );
|
||||
flush_events();
|
||||
keybd_event( 'S', 0x1f, KEYEVENTF_KEYUP, 0 );
|
||||
|
||||
keybd_event( 'K', 0x25, 0, 0 );
|
||||
flush_events();
|
||||
keybd_event( 'K', 0x25, KEYEVENTF_KEYUP, 0 );
|
||||
|
||||
ok_ret( 1, ImmSetOpenStatus( himc, FALSE ) );
|
||||
|
||||
flush_events();
|
||||
todo_wine ok_seq( closed_seq );
|
||||
|
||||
ignore_WM_IME_NOTIFY = FALSE;
|
||||
|
||||
|
||||
|
||||
ok_ret( 1, ImmSetConversionStatus( himc, 0, IME_SMODE_PHRASEPREDICT ) );
|
||||
ok_ret( 1, ImmSetOpenStatus( himc, FALSE ) );
|
||||
|
||||
|
@ -7610,6 +7761,61 @@ static void test_nihongo_no(void)
|
|||
{0},
|
||||
};
|
||||
|
||||
struct ime_call cancel_seq[] =
|
||||
{
|
||||
{.hkl = default_hkl, .himc = 0/*himc*/, .func = MSG_TEST_WIN, .message = {.msg = WM_IME_STARTCOMPOSITION, .wparam = 0, .lparam = 0}},
|
||||
{
|
||||
.hkl = default_hkl, .himc = 0/*himc*/, .func = MSG_TEST_WIN, .comp = L"\uff4e", .result = L"",
|
||||
.message = {.msg = WM_IME_COMPOSITION, .wparam = 0xff4e, .lparam = GCS_COMPSTR|GCS_COMPCLAUSE|GCS_COMPATTR|GCS_COMPREADSTR|GCS_DELTASTART|GCS_CURSORPOS},
|
||||
},
|
||||
{
|
||||
.hkl = default_hkl, .himc = 0/*himc*/, .func = MSG_TEST_WIN, .comp = L"\u306b", .result = L"",
|
||||
.message = {.msg = WM_IME_COMPOSITION, .wparam = 0x306b, .lparam = GCS_COMPSTR|GCS_COMPCLAUSE|GCS_COMPATTR|GCS_COMPREADSTR|GCS_DELTASTART|GCS_CURSORPOS},
|
||||
},
|
||||
{
|
||||
.hkl = default_hkl, .himc = 0/*himc*/, .func = MSG_TEST_WIN, .comp = L"\u306b\uff48", .result = L"",
|
||||
.message = {.msg = WM_IME_COMPOSITION, .wparam = 0x306b, .lparam = GCS_COMPSTR|GCS_COMPCLAUSE|GCS_COMPATTR|GCS_COMPREADSTR|GCS_DELTASTART|GCS_CURSORPOS},
|
||||
},
|
||||
{
|
||||
.hkl = default_hkl, .himc = 0/*himc*/, .func = MSG_TEST_WIN, .comp = L"\u306b\u307b", .result = L"",
|
||||
.message = {.msg = WM_IME_COMPOSITION, .wparam = 0x306b, .lparam = GCS_COMPSTR|GCS_COMPCLAUSE|GCS_COMPATTR|GCS_COMPREADSTR|GCS_DELTASTART|GCS_CURSORPOS},
|
||||
},
|
||||
|
||||
/* CPS_CANCEL */
|
||||
{.hkl = default_hkl, .himc = 0/*himc*/, .func = MSG_TEST_WIN, .message = {.msg = WM_IME_ENDCOMPOSITION, .wparam = 0, .lparam = 0}},
|
||||
{0},
|
||||
};
|
||||
struct ime_call closed_seq[] =
|
||||
{
|
||||
{.hkl = default_hkl, .himc = 0/*himc*/, .func = MSG_TEST_WIN, .message = {.msg = WM_IME_STARTCOMPOSITION, .wparam = 0, .lparam = 0}},
|
||||
{
|
||||
.hkl = default_hkl, .himc = 0/*himc*/, .func = MSG_TEST_WIN, .comp = L"\uff4e", .result = L"",
|
||||
.message = {.msg = WM_IME_COMPOSITION, .wparam = 0xff4e, .lparam = GCS_COMPSTR|GCS_COMPCLAUSE|GCS_COMPATTR|GCS_COMPREADSTR|GCS_DELTASTART|GCS_CURSORPOS},
|
||||
},
|
||||
{
|
||||
.hkl = default_hkl, .himc = 0/*himc*/, .func = MSG_TEST_WIN, .comp = L"\u306b", .result = L"",
|
||||
.message = {.msg = WM_IME_COMPOSITION, .wparam = 0x306b, .lparam = GCS_COMPSTR|GCS_COMPCLAUSE|GCS_COMPATTR|GCS_COMPREADSTR|GCS_DELTASTART|GCS_CURSORPOS},
|
||||
},
|
||||
{
|
||||
.hkl = default_hkl, .himc = 0/*himc*/, .func = MSG_TEST_WIN, .comp = L"\u306b\uff48", .result = L"",
|
||||
.message = {.msg = WM_IME_COMPOSITION, .wparam = 0x306b, .lparam = GCS_COMPSTR|GCS_COMPCLAUSE|GCS_COMPATTR|GCS_COMPREADSTR|GCS_DELTASTART|GCS_CURSORPOS},
|
||||
},
|
||||
{
|
||||
.hkl = default_hkl, .himc = 0/*himc*/, .func = MSG_TEST_WIN, .comp = L"\u306b\u307b", .result = L"",
|
||||
.message = {.msg = WM_IME_COMPOSITION, .wparam = 0x306b, .lparam = GCS_COMPSTR|GCS_COMPCLAUSE|GCS_COMPATTR|GCS_COMPREADSTR|GCS_DELTASTART|GCS_CURSORPOS},
|
||||
},
|
||||
|
||||
/* CPS_COMPLETE */
|
||||
{
|
||||
.hkl = default_hkl, .himc = 0/*himc*/, .func = MSG_TEST_WIN, .comp = L"", .result = L"\u306b\u307b",
|
||||
.message = {.msg = WM_IME_COMPOSITION, .wparam = 0x306b, .lparam = GCS_RESULTSTR|GCS_RESULTCLAUSE|GCS_RESULTREADSTR|GCS_RESULTREADCLAUSE},
|
||||
},
|
||||
{.hkl = default_hkl, .himc = 0/*himc*/, .func = MSG_TEST_WIN, .message = {.msg = WM_IME_CHAR, .wparam = 0x306b, .lparam = 1}},
|
||||
{.hkl = default_hkl, .himc = 0/*himc*/, .func = MSG_TEST_WIN, .message = {.msg = WM_IME_CHAR, .wparam = 0x307b, .lparam = 1}},
|
||||
{.hkl = default_hkl, .himc = 0/*himc*/, .func = MSG_TEST_WIN, .message = {.msg = WM_IME_ENDCOMPOSITION, .wparam = 0, .lparam = 0}},
|
||||
{0},
|
||||
};
|
||||
|
||||
INPUTCONTEXT *ctx;
|
||||
HWND hwnd;
|
||||
HIMC himc;
|
||||
|
@ -7639,6 +7845,8 @@ static void test_nihongo_no(void)
|
|||
ime_call_count = 0;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(complete_seq); i++) complete_seq[i].himc = himc;
|
||||
for (i = 0; i < ARRAY_SIZE(cancel_seq); i++) cancel_seq[i].himc = himc;
|
||||
for (i = 0; i < ARRAY_SIZE(closed_seq); i++) closed_seq[i].himc = himc;
|
||||
ignore_WM_IME_REQUEST = TRUE;
|
||||
ignore_WM_IME_NOTIFY = TRUE;
|
||||
|
||||
|
@ -7704,6 +7912,88 @@ static void test_nihongo_no(void)
|
|||
ok_seq( empty_sequence );
|
||||
|
||||
|
||||
/* changing the open status completes the composition string */
|
||||
|
||||
ignore_WM_IME_REQUEST = TRUE;
|
||||
ignore_WM_IME_NOTIFY = TRUE;
|
||||
|
||||
|
||||
/* cancelling clears the composition string */
|
||||
|
||||
keybd_event( 'N', 0x31, 0, 0 );
|
||||
flush_events();
|
||||
keybd_event( 'N', 0x31, KEYEVENTF_KEYUP, 0 );
|
||||
|
||||
keybd_event( 'I', 0x17, 0, 0 );
|
||||
flush_events();
|
||||
keybd_event( 'I', 0x17, KEYEVENTF_KEYUP, 0 );
|
||||
|
||||
keybd_event( 'H', 0x23, 0, 0 );
|
||||
flush_events();
|
||||
keybd_event( 'H', 0x23, KEYEVENTF_KEYUP, 0 );
|
||||
|
||||
keybd_event( 'O', 0x18, 0, 0 );
|
||||
flush_events();
|
||||
keybd_event( 'O', 0x18, KEYEVENTF_KEYUP, 0 );
|
||||
|
||||
ok_ret( 1, ImmNotifyIME( himc, NI_COMPOSITIONSTR, CPS_CANCEL, 0 ) );
|
||||
|
||||
flush_events();
|
||||
todo_wine ok_seq( cancel_seq );
|
||||
|
||||
|
||||
/* CPS_COMPLETE and ImmSetOpenStatus( himc, FALSE ) do the same thing */
|
||||
|
||||
keybd_event( 'N', 0x31, 0, 0 );
|
||||
flush_events();
|
||||
keybd_event( 'N', 0x31, KEYEVENTF_KEYUP, 0 );
|
||||
|
||||
keybd_event( 'I', 0x17, 0, 0 );
|
||||
flush_events();
|
||||
keybd_event( 'I', 0x17, KEYEVENTF_KEYUP, 0 );
|
||||
|
||||
keybd_event( 'H', 0x23, 0, 0 );
|
||||
flush_events();
|
||||
keybd_event( 'H', 0x23, KEYEVENTF_KEYUP, 0 );
|
||||
|
||||
keybd_event( 'O', 0x18, 0, 0 );
|
||||
flush_events();
|
||||
keybd_event( 'O', 0x18, KEYEVENTF_KEYUP, 0 );
|
||||
|
||||
ok_ret( 1, ImmNotifyIME( himc, NI_COMPOSITIONSTR, CPS_COMPLETE, 0 ) );
|
||||
|
||||
flush_events();
|
||||
todo_wine ok_seq( closed_seq );
|
||||
|
||||
|
||||
keybd_event( 'N', 0x31, 0, 0 );
|
||||
flush_events();
|
||||
keybd_event( 'N', 0x31, KEYEVENTF_KEYUP, 0 );
|
||||
|
||||
keybd_event( 'I', 0x17, 0, 0 );
|
||||
flush_events();
|
||||
keybd_event( 'I', 0x17, KEYEVENTF_KEYUP, 0 );
|
||||
|
||||
/* does nothing, already open */
|
||||
ok_ret( 1, ImmSetOpenStatus( himc, TRUE ) );
|
||||
|
||||
keybd_event( 'H', 0x23, 0, 0 );
|
||||
flush_events();
|
||||
keybd_event( 'H', 0x23, KEYEVENTF_KEYUP, 0 );
|
||||
|
||||
keybd_event( 'O', 0x18, 0, 0 );
|
||||
flush_events();
|
||||
keybd_event( 'O', 0x18, KEYEVENTF_KEYUP, 0 );
|
||||
|
||||
ok_ret( 1, ImmSetOpenStatus( himc, FALSE ) );
|
||||
|
||||
flush_events();
|
||||
todo_wine ok_seq( closed_seq );
|
||||
|
||||
ignore_WM_IME_REQUEST = FALSE;
|
||||
ignore_WM_IME_NOTIFY = FALSE;
|
||||
|
||||
|
||||
ok_ret( 1, ImmSetConversionStatus( himc, 0, IME_SMODE_PHRASEPREDICT ) );
|
||||
ok_ret( 1, ImmSetOpenStatus( himc, FALSE ) );
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue