From 72186db5fe5ac509d5404b73a5c6590d6fbbca00 Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Mon, 29 Jan 2018 14:20:40 +0300 Subject: [PATCH] comctl32/tests: Add more tests for tab focus. Signed-off-by: Nikolay Sivov Signed-off-by: Alexandre Julliard --- dlls/comctl32/tests/tab.c | 70 +++++++++++++++++++++++++++++++-------- 1 file changed, 57 insertions(+), 13 deletions(-) diff --git a/dlls/comctl32/tests/tab.c b/dlls/comctl32/tests/tab.c index a54dbb5de0a..d3e0e0c6cf9 100644 --- a/dlls/comctl32/tests/tab.c +++ b/dlls/comctl32/tests/tab.c @@ -215,6 +215,11 @@ static const struct message selchange_parent_seq[] = { { 0 } }; +static const struct message setfocus_parent_seq[] = { + { WM_NOTIFY, sent|id, 0, 0, TCN_FOCUSCHANGE }, + { 0 } +}; + static HWND create_tabcontrol (DWORD style, DWORD mask) { @@ -593,7 +598,7 @@ static void test_width(void) static void test_curfocus(void) { const INT nTabs = 5; - INT focusIndex; + INT ret; HWND hTab; hTab = createFilledTabControl(parent_wnd, TCS_FIXEDWIDTH, TCIF_TEXT|TCIF_IMAGE, nTabs); @@ -602,24 +607,63 @@ static void test_curfocus(void) flush_sequences(sequences, NUM_MSG_SEQUENCES); /* Testing CurFocus with largest appropriate value */ - SendMessageA(hTab, TCM_SETCURFOCUS, nTabs - 1, 0); - focusIndex = SendMessageA(hTab, TCM_GETCURFOCUS, 0, 0); - expect(nTabs-1, focusIndex); + ret = SendMessageA(hTab, TCM_SETCURFOCUS, nTabs - 1, 0); + ok(ret == 0, "Unexpected ret value %d.\n", ret); + ret = SendMessageA(hTab, TCM_GETCURFOCUS, 0, 0); + ok(ret == nTabs - 1, "Unexpected focus index %d.\n", ret); /* Testing CurFocus with negative value */ - SendMessageA(hTab, TCM_SETCURFOCUS, -10, 0); - focusIndex = SendMessageA(hTab, TCM_GETCURFOCUS, 0, 0); - expect(-1, focusIndex); + ret = SendMessageA(hTab, TCM_SETCURFOCUS, -10, 0); + ok(ret == 0, "Unexpected ret value %d.\n", ret); + ret = SendMessageA(hTab, TCM_GETCURFOCUS, 0, 0); + ok(ret == -1, "Unexpected focus index %d.\n", ret); /* Testing CurFocus with value larger than number of tabs */ - focusIndex = SendMessageA(hTab, TCM_SETCURSEL, 1, 0); - expect(-1, focusIndex); + ret = SendMessageA(hTab, TCM_SETCURSEL, 1, 0); + ok(ret == -1, "Unexpected focus index %d.\n", ret); - SendMessageA(hTab, TCM_SETCURFOCUS, nTabs + 1, 0); - focusIndex = SendMessageA(hTab, TCM_GETCURFOCUS, 0, 0); - expect(1, focusIndex); + ret = SendMessageA(hTab, TCM_SETCURFOCUS, nTabs + 1, 0); + ok(ret == 0, "Unexpected ret value %d.\n", ret); + ret = SendMessageA(hTab, TCM_GETCURFOCUS, 0, 0); + ok(ret == 1, "Unexpected focus index %d.\n", ret); - ok_sequence(sequences, TAB_SEQ_INDEX, getset_cur_focus_seq, "Getset curFoc test sequence", FALSE); + ok_sequence(sequences, TAB_SEQ_INDEX, getset_cur_focus_seq, "Set focused tab sequence", FALSE); + ok_sequence(sequences, PARENT_SEQ_INDEX, empty_sequence, "Set focused tab parent sequence", TRUE); + + DestroyWindow(hTab); + + /* TCS_BUTTONS */ + hTab = createFilledTabControl(parent_wnd, TCS_BUTTONS, TCIF_TEXT|TCIF_IMAGE, nTabs); + ok(hTab != NULL, "Failed to create tab control\n"); + + flush_sequences(sequences, NUM_MSG_SEQUENCES); + + /* Testing CurFocus with largest appropriate value */ + ret = SendMessageA(hTab, TCM_SETCURFOCUS, nTabs - 1, 0); + ok(ret == 0, "Unexpected ret value %d.\n", ret); + ret = SendMessageA(hTab, TCM_GETCURFOCUS, 0, 0); + ok(ret == nTabs - 1, "Unexpected focus index %d.\n", ret); + + /* Testing CurFocus with negative value */ + ret = SendMessageA(hTab, TCM_SETCURFOCUS, -10, 0); + ok(ret == 0, "Unexpected ret value %d.\n", ret); + ret = SendMessageA(hTab, TCM_GETCURFOCUS, 0, 0); +todo_wine + ok(ret == nTabs - 1, "Unexpected focus index %d.\n", ret); + + /* Testing CurFocus with value larger than number of tabs */ + ret = SendMessageA(hTab, TCM_SETCURSEL, 1, 0); +todo_wine + ok(ret == 0, "Unexpected focus index %d.\n", ret); + + ret = SendMessageA(hTab, TCM_SETCURFOCUS, nTabs + 1, 0); + ok(ret == 0, "Unexpected ret value %d.\n", ret); + ret = SendMessageA(hTab, TCM_GETCURFOCUS, 0, 0); +todo_wine + ok(ret == nTabs - 1, "Unexpected focus index %d.\n", ret); + + ok_sequence(sequences, TAB_SEQ_INDEX, getset_cur_focus_seq, "TCS_BUTTONS: set focused tab sequence", FALSE); + ok_sequence(sequences, PARENT_SEQ_INDEX, setfocus_parent_seq, "TCS_BUTTONS: set focused tab parent sequence", TRUE); DestroyWindow(hTab); }