diff --git a/dlls/comctl32/tests/.gitignore b/dlls/comctl32/tests/.gitignore index e6d715ee80..58fe16d44c 100644 --- a/dlls/comctl32/tests/.gitignore +++ b/dlls/comctl32/tests/.gitignore @@ -3,6 +3,7 @@ comboex.ok dpa.ok header.ok imagelist.ok +listview.ok monthcal.ok mru.ok progress.ok diff --git a/dlls/comctl32/tests/Makefile.in b/dlls/comctl32/tests/Makefile.in index c277bd40c4..9d2a56b6d8 100644 --- a/dlls/comctl32/tests/Makefile.in +++ b/dlls/comctl32/tests/Makefile.in @@ -10,6 +10,7 @@ CTESTS = \ dpa.c \ header.c \ imagelist.c \ + listview.c \ monthcal.c \ mru.c \ progress.c \ diff --git a/dlls/comctl32/tests/listview.c b/dlls/comctl32/tests/listview.c new file mode 100644 index 0000000000..c929ed554c --- /dev/null +++ b/dlls/comctl32/tests/listview.c @@ -0,0 +1,97 @@ +/* + * ListView tests + * + * Copyright 2006 Mike McCormack for CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include +#include +#include + +#include "wine/test.h" + +START_TEST(listview) +{ + HWND hwnd, hwndparent = 0; + INITCOMMONCONTROLSEX icc; + DWORD r; + LVITEM item; + HIMAGELIST himl; + HBITMAP hbmp; + RECT r1, r2; + + icc.dwICC = 0; + icc.dwSize = sizeof icc; + InitCommonControlsEx(&icc); + + himl = ImageList_Create(40, 40, 0, 4, 4); + ok(himl != NULL, "failed to create imagelist\n"); + + hbmp = CreateBitmap(40, 40, 1, 1, NULL); + ok(hbmp != NULL, "failed to create bitmap\n"); + + r = ImageList_Add(himl, hbmp, 0); + ok(r == 0, "should be zero\n"); + + hwnd = CreateWindowEx(0, "SysListView32", "foo", LVS_OWNERDRAWFIXED, + 10, 10, 100, 200, hwndparent, NULL, NULL, NULL); + ok(hwnd != NULL, "failed to create listview window\n"); + + r = SendMessage(hwnd, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, 0x940); + ok(r == 0, "should return zero\n"); + + r = SendMessage(hwnd, LVM_SETIMAGELIST, 0, (LPARAM)himl); + ok(r == 0, "should return zero\n"); + + r = SendMessage(hwnd, LVM_SETICONSPACING, 0, MAKELONG(100,50)); + /* returns dimensions */ + + r = SendMessage(hwnd, LVM_GETITEMCOUNT, 0, 0); + ok(r == 0, "should be zero items\n"); + + item.mask = LVIF_IMAGE | LVIF_TEXT; + item.iItem = 0; + item.iSubItem = 1; + item.iImage = 0; + r = SendMessage(hwnd, LVM_INSERTITEM, 0, (LPARAM) &item); + ok(r == -1, "should fail\n"); + + item.iSubItem = 0; + item.pszText = "hello"; + r = SendMessage(hwnd, LVM_INSERTITEM, 0, (LPARAM) &item); + ok(r == 0, "should not fail\n"); + + memset(&r1, 0, sizeof r1); + r1.left = LVIR_ICON; + r = SendMessage(hwnd, LVM_GETITEMRECT, 0, (LPARAM) &r1); + + r = SendMessage(hwnd, LVM_DELETEALLITEMS, 0, 0); + ok(r == TRUE, "should not fail\n"); + + item.iSubItem = 0; + item.pszText = "hello"; + r = SendMessage(hwnd, LVM_INSERTITEM, 0, (LPARAM) &item); + ok(r == 0, "should not fail\n"); + + memset(&r2, 0, sizeof r2); + r2.left = LVIR_ICON; + r = SendMessage(hwnd, LVM_GETITEMRECT, 0, (LPARAM) &r2); + + ok(!memcmp(&r1, &r2, sizeof r1), "rectangle should be the same\n"); + + DestroyWindow(hwnd); +}