shell32/tests: Test the amount of enumerator resets for AutoComplete.

Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
oldstable
Gabriel Ivăncescu 2018-11-02 16:50:41 +02:00 committed by Alexandre Julliard
parent 9a41584c49
commit d5e7655555
1 changed files with 16 additions and 0 deletions

View File

@ -274,6 +274,7 @@ struct string_enumerator
WCHAR **data;
int data_len;
int cur;
UINT num_resets;
UINT num_expand;
WCHAR last_expand[32];
};
@ -349,6 +350,7 @@ static HRESULT WINAPI string_enumerator_Reset(IEnumString *iface)
struct string_enumerator *this = impl_from_IEnumString(iface);
this->cur = 0;
this->num_resets++;
return S_OK;
}
@ -456,6 +458,7 @@ static void test_aclist_expand(HWND hwnd_edit, void *enumerator)
static WCHAR str2[] = {'t','e','s','t','\\','f','o','o','\\','b','a','r','\\','b','a',0};
static WCHAR str2a[] = {'t','e','s','t','\\','f','o','o','\\','b','a','r','\\',0};
static WCHAR str2b[] = {'t','e','s','t','\\','f','o','o','\\','b','a','r','\\','b','a','z','_','b','b','q','\\',0};
obj->num_resets = 0;
ok(obj->num_expand == 0, "Expected 0 expansions, got %u\n", obj->num_expand);
SendMessageW(hwnd_edit, WM_SETTEXT, 0, (LPARAM)str1);
@ -464,12 +467,14 @@ static void test_aclist_expand(HWND hwnd_edit, void *enumerator)
dispatch_messages();
ok(obj->num_expand == 1, "Expected 1 expansion, got %u\n", obj->num_expand);
ok(lstrcmpW(obj->last_expand, str1a) == 0, "Expected %s, got %s\n", wine_dbgstr_w(str1a), wine_dbgstr_w(obj->last_expand));
ok(obj->num_resets == 1, "Expected 1 reset, got %u\n", obj->num_resets);
SendMessageW(hwnd_edit, WM_SETTEXT, 0, (LPARAM)str2);
SendMessageW(hwnd_edit, EM_SETSEL, ARRAY_SIZE(str2) - 1, ARRAY_SIZE(str2) - 1);
SendMessageW(hwnd_edit, WM_CHAR, 'z', 1);
dispatch_messages();
ok(obj->num_expand == 2, "Expected 2 expansions, got %u\n", obj->num_expand);
ok(lstrcmpW(obj->last_expand, str2a) == 0, "Expected %s, got %s\n", wine_dbgstr_w(str2a), wine_dbgstr_w(obj->last_expand));
ok(obj->num_resets == 2, "Expected 2 resets, got %u\n", obj->num_resets);
SetFocus(hwnd_edit);
SendMessageW(hwnd_edit, WM_CHAR, '_', 1);
SendMessageW(hwnd_edit, WM_CHAR, 'b', 1);
@ -479,20 +484,24 @@ static void test_aclist_expand(HWND hwnd_edit, void *enumerator)
SendMessageW(hwnd_edit, WM_CHAR, 'q', 1);
dispatch_messages();
ok(obj->num_expand == 2, "Expected 2 expansions, got %u\n", obj->num_expand);
ok(obj->num_resets == 2, "Expected 2 resets, got %u\n", obj->num_resets);
SendMessageW(hwnd_edit, WM_CHAR, '\\', 1);
dispatch_messages();
ok(obj->num_expand == 3, "Expected 3 expansions, got %u\n", obj->num_expand);
ok(lstrcmpW(obj->last_expand, str2b) == 0, "Expected %s, got %s\n", wine_dbgstr_w(str2b), wine_dbgstr_w(obj->last_expand));
ok(obj->num_resets == 3, "Expected 3 resets, got %u\n", obj->num_resets);
SendMessageW(hwnd_edit, EM_SETSEL, ARRAY_SIZE(str1a) - 1, -1);
SendMessageW(hwnd_edit, WM_CHAR, 'x', 1);
SendMessageW(hwnd_edit, WM_CHAR, 'y', 1);
dispatch_messages();
ok(obj->num_expand == 4, "Expected 4 expansions, got %u\n", obj->num_expand);
ok(lstrcmpW(obj->last_expand, str1a) == 0, "Expected %s, got %s\n", wine_dbgstr_w(str1a), wine_dbgstr_w(obj->last_expand));
ok(obj->num_resets == 4, "Expected 4 resets, got %u\n", obj->num_resets);
SendMessageW(hwnd_edit, EM_SETSEL, ARRAY_SIZE(str1) - 1, -1);
SendMessageW(hwnd_edit, WM_CHAR, 'x', 1);
dispatch_messages();
ok(obj->num_expand == 4, "Expected 4 expansions, got %u\n", obj->num_expand);
ok(obj->num_resets == 5, "Expected 5 resets, got %u\n", obj->num_resets);
}
static void test_custom_source(void)
@ -502,6 +511,7 @@ static void test_custom_source(void)
static WCHAR str_beta[] = {'a','u','t','o',' ','c','o','m','p','l','e','t','e',0};
static WCHAR str_au[] = {'a','u',0};
static WCHAR *suggestions[] = { str_alpha, str_alpha2, str_beta };
struct string_enumerator *obj;
IUnknown *enumerator;
IAutoComplete2 *autocomplete;
HWND hwnd_edit;
@ -516,6 +526,7 @@ static void test_custom_source(void)
ok(hr == S_OK, "CoCreateInstance failed: %x\n", hr);
string_enumerator_create((void**)&enumerator, suggestions, ARRAY_SIZE(suggestions));
obj = (struct string_enumerator*)enumerator;
hr = IAutoComplete2_SetOptions(autocomplete, ACO_AUTOSUGGEST | ACO_AUTOAPPEND);
ok(hr == S_OK, "IAutoComplete2_SetOptions failed: %x\n", hr);
@ -528,11 +539,14 @@ static void test_custom_source(void)
dispatch_messages();
SendMessageW(hwnd_edit, WM_GETTEXT, ARRAY_SIZE(buffer), (LPARAM)buffer);
ok(lstrcmpW(str_beta, buffer) == 0, "Expected %s, got %s\n", wine_dbgstr_w(str_beta), wine_dbgstr_w(buffer));
ok(obj->num_resets == 1, "Expected 1 reset, got %u\n", obj->num_resets);
SendMessageW(hwnd_edit, EM_SETSEL, 0, -1);
SendMessageW(hwnd_edit, WM_CHAR, '\b', 1);
dispatch_messages();
SendMessageW(hwnd_edit, WM_GETTEXT, ARRAY_SIZE(buffer), (LPARAM)buffer);
ok(buffer[0] == '\0', "Expected empty string, got %s\n", wine_dbgstr_w(buffer));
ok(obj->num_resets == 1, "Expected 1 reset, got %u\n", obj->num_resets);
obj->num_resets = 0;
/* hijack the window procedure */
HijackerWndProc_prev = (WNDPROC)SetWindowLongPtrW(hwnd_edit, GWLP_WNDPROC, (LONG_PTR)HijackerWndProc);
@ -545,6 +559,7 @@ static void test_custom_source(void)
dispatch_messages();
SendMessageW(hwnd_edit, WM_GETTEXT, ARRAY_SIZE(buffer), (LPARAM)buffer);
ok(lstrcmpW(str_au, buffer) == 0, "Expected %s, got %s\n", wine_dbgstr_w(str_au), wine_dbgstr_w(buffer));
ok(obj->num_resets == 1, "Expected 1 reset, got %u\n", obj->num_resets);
SendMessageW(hwnd_edit, EM_SETSEL, 0, -1);
SendMessageW(hwnd_edit, WM_CHAR, '\b', 1);
dispatch_messages();
@ -558,6 +573,7 @@ static void test_custom_source(void)
dispatch_messages();
SendMessageW(hwnd_edit, WM_GETTEXT, ARRAY_SIZE(buffer), (LPARAM)buffer);
ok(lstrcmpW(str_beta, buffer) == 0, "Expected %s, got %s\n", wine_dbgstr_w(str_beta), wine_dbgstr_w(buffer));
ok(obj->num_resets == 2, "Expected 2 resets, got %u\n", obj->num_resets);
/* end of hijacks */
test_aclist_expand(hwnd_edit, enumerator);