From: Fabian Maurer dark.shadow4@web.de
--- dlls/comctl32/tests/listbox.c | 98 +++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+)
diff --git a/dlls/comctl32/tests/listbox.c b/dlls/comctl32/tests/listbox.c index aba91384d15..b0b1bb8ca8c 100644 --- a/dlls/comctl32/tests/listbox.c +++ b/dlls/comctl32/tests/listbox.c @@ -2752,6 +2752,103 @@ static void test_LB_FINDSTRING(void) DestroyWindow( listbox ); }
+static void get_selected_value(HWND list, char* selected) +{ + int index; + selected[0] = 0; + index = SendMessageA(list, LB_GETCURSEL, 0, 0); + SendMessageA(list, LB_GETTEXT, index, (LPARAM)selected); +} + +static void test_keypresses(void) +{ + HWND list; + int i; + char selected[20]; + const char* strings_to_add[] = { + "b_eta", "a_lpha", "be_ta", "al_pha", "beta", "alpha", "gamma", "epsilon", "le" + }; + + /* Test with an unsorted list */ + + list = CreateWindowA(WC_LISTBOXA, "TestList", (LBS_STANDARD & ~LBS_SORT), 0, 0, 100, 100, NULL, NULL, NULL, 0); + ok(list != NULL, "Failed to create listbox window.\n"); + + for (i = 0; i < ARRAY_SIZE(strings_to_add); i++) + { + SendMessageA(list, LB_ADDSTRING, 0, (LPARAM)strings_to_add[i]); + } + + SendMessageA(list, WM_CHAR, (WPARAM)'a', 0); + get_selected_value(list, selected); + ok(!strcmp(selected, "a_lpha"), "Got %s\n", selected); + + SendMessageA(list, WM_CHAR, (WPARAM)'l', 0); + get_selected_value(list, selected); + ok(!strcmp(selected, "le"), "Got %s\n", selected); + + SendMessageA(list, WM_CHAR, (WPARAM)'p', 0); + get_selected_value(list, selected); + ok(!strcmp(selected, "le"), "Got %s\n", selected); + + SendMessageA(list, WM_CHAR, (WPARAM)'b', 0); + get_selected_value(list, selected); + ok(!strcmp(selected, "b_eta"), "Got %s\n", selected); + + SendMessageA(list, WM_CHAR, (WPARAM)'e', 0); + get_selected_value(list, selected); + ok(!strcmp(selected, "epsilon"), "Got %s\n", selected); + + SendMessageA(list, WM_CHAR, (WPARAM)'t', 0); + get_selected_value(list, selected); + ok(!strcmp(selected, "epsilon"), "Got %s\n", selected); + + DestroyWindow(list); + + /* Test with a sorted list */ + + list = CreateWindowA(WC_LISTBOXA, "TestList", LBS_STANDARD, 0, 0, 100, 100, NULL, NULL, NULL, 0); + + for (i = 0; i < ARRAY_SIZE(strings_to_add); i++) + { + SendMessageA(list, LB_ADDSTRING, 0, (LPARAM)strings_to_add[i]); + } + + SendMessageA(list, WM_CHAR, (WPARAM)'a', 0); + get_selected_value(list, selected); + todo_wine + ok(!strcmp(selected, "a_lpha"), "Got %s\n", selected); + + SendMessageA(list, WM_CHAR, (WPARAM)'l', 0); + get_selected_value(list, selected); + todo_wine + ok(!strcmp(selected, "al_pha"), "Got %s\n", selected); + + SendMessageA(list, WM_CHAR, (WPARAM)'p', 0); + get_selected_value(list, selected); + todo_wine + ok(!strcmp(selected, "alpha"), "Got %s\n", selected); + + /* Windows needs a certain time to pass until it starts a new search */ + + SendMessageA(list, WM_CHAR, (WPARAM)'b', 0); + get_selected_value(list, selected); + todo_wine + ok(!strcmp(selected, "alpha"), "Got %s\n", selected); + + SendMessageA(list, WM_CHAR, (WPARAM)'e', 0); + get_selected_value(list, selected); + todo_wine + ok(!strcmp(selected, "alpha"), "Got %s\n", selected); + + SendMessageA(list, WM_CHAR, (WPARAM)'t', 0); + get_selected_value(list, selected); + todo_wine + ok(!strcmp(selected, "alpha"), "Got %s\n", selected); + + DestroyWindow(list); +} + START_TEST(listbox) { ULONG_PTR ctx_cookie; @@ -2782,6 +2879,7 @@ START_TEST(listbox) test_LB_SETSEL(); test_LBS_NODATA(); test_LB_FINDSTRING(); + test_keypresses();
unload_v6_module(ctx_cookie, hCtx); }