comctl32/tests: Existing items aren't resorted after LVS_SORTASCENDING added.

This commit is contained in:
Nikolay Sivov 2009-04-23 16:10:49 +04:00 committed by Alexandre Julliard
parent d3bfd6d570
commit d30df7de06
1 changed files with 85 additions and 0 deletions

View File

@ -1578,6 +1578,9 @@ static void test_sorting(void)
HWND hwnd;
LVITEMA item = {0};
DWORD r;
LONG_PTR style;
static CHAR names[][4] = {"A", "B", "C", "D"};
CHAR buff[10];
hwnd = create_listview_control(0);
ok(hwnd != NULL, "failed to create a listview window\n");
@ -1627,6 +1630,88 @@ static void test_sorting(void)
expect(LVIS_SELECTED, r);
DestroyWindow(hwnd);
/* switch to LVS_SORTASCENDING when some items added */
hwnd = create_listview_control(0);
ok(hwnd != NULL, "failed to create a listview window\n");
item.mask = LVIF_TEXT;
item.iItem = 0;
item.iSubItem = 0;
item.pszText = names[1];
r = SendMessage(hwnd, LVM_INSERTITEM, 0, (LPARAM) &item);
expect(0, r);
item.mask = LVIF_TEXT;
item.iItem = 1;
item.iSubItem = 0;
item.pszText = names[2];
r = SendMessage(hwnd, LVM_INSERTITEM, 0, (LPARAM) &item);
expect(1, r);
item.mask = LVIF_TEXT;
item.iItem = 2;
item.iSubItem = 0;
item.pszText = names[0];
r = SendMessage(hwnd, LVM_INSERTITEM, 0, (LPARAM) &item);
expect(2, r);
style = GetWindowLongPtrA(hwnd, GWL_STYLE);
SetWindowLongPtrA(hwnd, GWL_STYLE, style | LVS_SORTASCENDING);
style = GetWindowLongPtrA(hwnd, GWL_STYLE);
ok(style & LVS_SORTASCENDING, "Expected LVS_SORTASCENDING to be set\n");
/* no sorting performed when switched to LVS_SORTASCENDING */
item.mask = LVIF_TEXT;
item.iItem = 0;
item.pszText = buff;
item.cchTextMax = sizeof(buff);
r = SendMessage(hwnd, LVM_GETITEM, 0, (LPARAM) &item);
expect(TRUE, r);
ok(lstrcmp(buff, names[1]) == 0, "Expected '%s', got '%s'\n", names[1], buff);
item.iItem = 1;
r = SendMessage(hwnd, LVM_GETITEM, 0, (LPARAM) &item);
expect(TRUE, r);
ok(lstrcmp(buff, names[2]) == 0, "Expected '%s', got '%s'\n", names[2], buff);
item.iItem = 2;
r = SendMessage(hwnd, LVM_GETITEM, 0, (LPARAM) &item);
expect(TRUE, r);
ok(lstrcmp(buff, names[0]) == 0, "Expected '%s', got '%s'\n", names[0], buff);
/* adding new item doesn't resort list */
item.mask = LVIF_TEXT;
item.iItem = 3;
item.iSubItem = 0;
item.pszText = names[3];
r = SendMessage(hwnd, LVM_INSERTITEM, 0, (LPARAM) &item);
expect(3, r);
item.mask = LVIF_TEXT;
item.iItem = 0;
item.pszText = buff;
item.cchTextMax = sizeof(buff);
r = SendMessage(hwnd, LVM_GETITEM, 0, (LPARAM) &item);
expect(TRUE, r);
todo_wine ok(lstrcmp(buff, names[1]) == 0, "Expected '%s', got '%s'\n", names[1], buff);
item.iItem = 1;
r = SendMessage(hwnd, LVM_GETITEM, 0, (LPARAM) &item);
expect(TRUE, r);
todo_wine ok(lstrcmp(buff, names[2]) == 0, "Expected '%s', got '%s'\n", names[2], buff);
item.iItem = 2;
r = SendMessage(hwnd, LVM_GETITEM, 0, (LPARAM) &item);
expect(TRUE, r);
todo_wine ok(lstrcmp(buff, names[0]) == 0, "Expected '%s', got '%s'\n", names[0], buff);
item.iItem = 3;
r = SendMessage(hwnd, LVM_GETITEM, 0, (LPARAM) &item);
expect(TRUE, r);
ok(lstrcmp(buff, names[3]) == 0, "Expected '%s', got '%s'\n", names[3], buff);
DestroyWindow(hwnd);
}
static void test_ownerdata(void)