Module: wine Branch: master Commit: e91de3952191b1a5775b00adb62d5ef320b3d01f URL: http://source.winehq.org/git/wine.git/?a=commit;h=e91de3952191b1a5775b00adb6...
Author: Lei Zhang thestig@google.com Date: Mon Apr 7 13:32:36 2008 -0700
user32: Add more tests for single line edit control inside a dialog.
---
dlls/user32/tests/edit.c | 182 +++++++++++++++++++++++++++++++++++++++++ dlls/user32/tests/resource.rc | 20 +++++ 2 files changed, 202 insertions(+), 0 deletions(-)
diff --git a/dlls/user32/tests/edit.c b/dlls/user32/tests/edit.c index c226131..9ca687b 100644 --- a/dlls/user32/tests/edit.c +++ b/dlls/user32/tests/edit.c @@ -284,6 +284,134 @@ static INT_PTR CALLBACK edit_dialog_proc(HWND hdlg, UINT msg, WPARAM wparam, LPA return FALSE; }
+static INT_PTR CALLBACK edit_singleline_dialog_proc(HWND hdlg, UINT msg, WPARAM wparam, LPARAM lparam) +{ + switch (msg) + { + case WM_INITDIALOG: + { + HWND hedit = GetDlgItem(hdlg, 1000); + SetFocus(hedit); + switch (lparam) + { + /* test cases for WM_KEYDOWN */ + case 0: + PostMessage(hedit, WM_KEYDOWN, VK_ESCAPE, 0x10001); + break; + case 1: + PostMessage(hedit, WM_KEYDOWN, VK_RETURN, 0x1c0001); + /* needed so the test does not wait for user input */ + PostMessage(hdlg, WM_USER, 0xfeedbeef, 0); + break; + case 2: + PostMessage(hedit, WM_KEYDOWN, VK_TAB, 0xf0001); + PostMessage(hdlg, WM_USER, 0xdeadbeef, 1); + break; + + /* test cases for WM_CHAR */ + case 3: + PostMessage(hedit, WM_CHAR, VK_ESCAPE, 0x10001); + PostMessage(hdlg, WM_USER, 0xdeadbeef, 0); + break; + case 4: + PostMessage(hedit, WM_CHAR, VK_RETURN, 0x1c0001); + PostMessage(hdlg, WM_USER, 0xdeadbeef, 0); + break; + case 5: + PostMessage(hedit, WM_CHAR, VK_TAB, 0xf0001); + PostMessage(hdlg, WM_USER, 0xdeadbeef, 0); + break; + + /* test cases for WM_KEYDOWN + WM_CHAR */ + case 6: + PostMessage(hedit, WM_KEYDOWN, VK_ESCAPE, 0x10001); + PostMessage(hedit, WM_CHAR, VK_ESCAPE, 0x10001); + break; + case 7: + PostMessage(hedit, WM_KEYDOWN, VK_RETURN, 0x1c0001); + PostMessage(hedit, WM_CHAR, VK_RETURN, 0x1c0001); + /* needed so the test does not wait for user input */ + PostMessage(hdlg, WM_USER, 0xfeedbeef, 0); + break; + case 8: + PostMessage(hedit, WM_KEYDOWN, VK_TAB, 0xf0001); + PostMessage(hedit, WM_CHAR, VK_TAB, 0xf0001); + PostMessage(hdlg, WM_USER, 0xdeadbeef, 1); + break; + + default: + break; + } + break; + } + + case WM_COMMAND: + if (HIWORD(wparam) != BN_CLICKED) + break; + + switch (LOWORD(wparam)) + { + case IDOK: + EndDialog(hdlg, 111); + break; + + case IDCANCEL: + EndDialog(hdlg, 222); + break; + + default: + break; + } + break; + + case WM_USER: + { + HWND hok = GetDlgItem(hdlg, IDOK); + HWND hedit = GetDlgItem(hdlg, 1000); + HWND hfocus = GetFocus(); + int len = SendMessage(hedit, WM_GETTEXTLENGTH, 0, 0); + + if (wparam == 0xfeedbeef) + { + EndDialog(hdlg, 66); + break; + } + if (wparam != 0xdeadbeef) + break; + + switch (lparam) + { + case 0: + if ((hfocus == hedit) && len == 0) + EndDialog(hdlg, 444); + else + EndDialog(hdlg, 555); + break; + + case 1: + if ((hfocus == hok) && len == 0) + EndDialog(hdlg, 444); + else + EndDialog(hdlg, 555); + break; + + default: + EndDialog(hdlg, 55); + } + break; + } + + case WM_CLOSE: + EndDialog(hdlg, 333); + break; + + default: + break; + } + + return FALSE; +} + static INT_PTR CALLBACK edit_wantreturn_dialog_proc(HWND hdlg, UINT msg, WPARAM wparam, LPARAM lparam) { switch (msg) @@ -1613,6 +1741,59 @@ static void test_wantreturn_edit_dialog(void) ok(444 == r, "Expected %d, got %d\n", 444, r); }
+static void test_singleline_wantreturn_edit_dialog(void) +{ + int r; + + /* tests for WM_KEYDOWN */ + r = DialogBoxParam(hinst, "EDIT_SINGLELINE_DIALOG", NULL, (DLGPROC)edit_singleline_dialog_proc, 0); + todo_wine ok(222 == r, "Expected %d, got %d\n", 222, r); + r = DialogBoxParam(hinst, "EDIT_SINGLELINE_DIALOG", NULL, (DLGPROC)edit_singleline_dialog_proc, 1); + ok(111 == r, "Expected %d, got %d\n", 111, r); + r = DialogBoxParam(hinst, "EDIT_SINGLELINE_DIALOG", NULL, (DLGPROC)edit_singleline_dialog_proc, 2); + ok(444 == r, "Expected %d, got %d\n", 444, r); + + /* tests for WM_CHAR */ + r = DialogBoxParam(hinst, "EDIT_SINGLELINE_DIALOG", NULL, (DLGPROC)edit_singleline_dialog_proc, 3); + ok(444 == r, "Expected %d, got %d\n", 444, r); + r = DialogBoxParam(hinst, "EDIT_SINGLELINE_DIALOG", NULL, (DLGPROC)edit_singleline_dialog_proc, 4); + ok(444 == r, "Expected %d, got %d\n", 444, r); + r = DialogBoxParam(hinst, "EDIT_SINGLELINE_DIALOG", NULL, (DLGPROC)edit_singleline_dialog_proc, 5); + ok(444 == r, "Expected %d, got %d\n", 444, r); + + /* tests for WM_KEYDOWN + WM_CHAR */ + r = DialogBoxParam(hinst, "EDIT_SINGLELINE_DIALOG", NULL, (DLGPROC)edit_singleline_dialog_proc, 6); + todo_wine ok(222 == r, "Expected %d, got %d\n", 222, r); + r = DialogBoxParam(hinst, "EDIT_SINGLELINE_DIALOG", NULL, (DLGPROC)edit_singleline_dialog_proc, 7); + ok(111 == r, "Expected %d, got %d\n", 111, r); + r = DialogBoxParam(hinst, "EDIT_SINGLELINE_DIALOG", NULL, (DLGPROC)edit_singleline_dialog_proc, 8); + ok(444 == r, "Expected %d, got %d\n", 444, r); + + /* tests for WM_KEYDOWN */ + r = DialogBoxParam(hinst, "EDIT_SINGLELINE_WANTRETURN_DIALOG", NULL, (DLGPROC)edit_singleline_dialog_proc, 0); + todo_wine ok(222 == r, "Expected %d, got %d\n", 222, r); + r = DialogBoxParam(hinst, "EDIT_SINGLELINE_WANTRETURN_DIALOG", NULL, (DLGPROC)edit_singleline_dialog_proc, 1); + todo_wine ok(111 == r, "Expected %d, got %d\n", 111, r); + r = DialogBoxParam(hinst, "EDIT_SINGLELINE_WANTRETURN_DIALOG", NULL, (DLGPROC)edit_singleline_dialog_proc, 2); + ok(444 == r, "Expected %d, got %d\n", 444, r); + + /* tests for WM_CHAR */ + r = DialogBoxParam(hinst, "EDIT_SINGLELINE_WANTRETURN_DIALOG", NULL, (DLGPROC)edit_singleline_dialog_proc, 3); + ok(444 == r, "Expected %d, got %d\n", 444, r); + r = DialogBoxParam(hinst, "EDIT_SINGLELINE_WANTRETURN_DIALOG", NULL, (DLGPROC)edit_singleline_dialog_proc, 4); + ok(444 == r, "Expected %d, got %d\n", 444, r); + r = DialogBoxParam(hinst, "EDIT_SINGLELINE_WANTRETURN_DIALOG", NULL, (DLGPROC)edit_singleline_dialog_proc, 5); + ok(444 == r, "Expected %d, got %d\n", 444, r); + + /* tests for WM_KEYDOWN + WM_CHAR */ + r = DialogBoxParam(hinst, "EDIT_SINGLELINE_WANTRETURN_DIALOG", NULL, (DLGPROC)edit_singleline_dialog_proc, 6); + todo_wine ok(222 == r, "Expected %d, got %d\n", 222, r); + r = DialogBoxParam(hinst, "EDIT_SINGLELINE_WANTRETURN_DIALOG", NULL, (DLGPROC)edit_singleline_dialog_proc, 7); + todo_wine ok(111 == r, "Expected %d, got %d\n", 111, r); + r = DialogBoxParam(hinst, "EDIT_SINGLELINE_WANTRETURN_DIALOG", NULL, (DLGPROC)edit_singleline_dialog_proc, 8); + ok(444 == r, "Expected %d, got %d\n", 444, r); +} + static BOOL RegisterWindowClasses (void) { WNDCLASSA test2; @@ -1684,6 +1865,7 @@ START_TEST(edit) test_edit_dialog(); test_multi_edit_dialog(); test_wantreturn_edit_dialog(); + test_singleline_wantreturn_edit_dialog();
UnregisterWindowClasses(); } diff --git a/dlls/user32/tests/resource.rc b/dlls/user32/tests/resource.rc index 833797d..7da8a6c 100644 --- a/dlls/user32/tests/resource.rc +++ b/dlls/user32/tests/resource.rc @@ -118,6 +118,26 @@ FONT 8, "MS Shell Dlg" EDITTEXT 1000, 5, 5, 150, 50, WS_CHILD | WS_VISIBLE | WS_TABSTOP | ES_MULTILINE | WS_VSCROLL | ES_AUTOVSCROLL }
+EDIT_SINGLELINE_DIALOG DIALOG DISCARDABLE 0, 0, 160, 80 +STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | DS_CENTER +CAPTION "Edit Test" +FONT 8, "MS Shell Dlg" +{ + PUSHBUTTON "Ok", IDOK, 20, 60, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "Cancel", IDCANCEL, 100, 60, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + EDITTEXT 1000, 5, 5, 150, 50, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL | ES_AUTOVSCROLL +} + +EDIT_SINGLELINE_WANTRETURN_DIALOG DIALOG DISCARDABLE 0, 0, 160, 80 +STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | DS_CENTER +CAPTION "Edit Test" +FONT 8, "MS Shell Dlg" +{ + PUSHBUTTON "Ok", IDOK, 20, 60, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "Cancel", IDCANCEL, 100, 60, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + EDITTEXT 1000, 5, 5, 150, 50, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL | ES_AUTOVSCROLL | ES_WANTRETURN +} + EDIT_WANTRETURN_DIALOG DIALOG DISCARDABLE 0, 0, 160, 80 STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | DS_CENTER CAPTION "Edit Test"