[PATCH 1/2] comctl32/tests: Test expanding of a invisible sub tree.

Florian Köberle florian at fkoeberle.de
Wed Apr 15 05:04:01 CDT 2009


---
 dlls/comctl32/tests/treeview.c |   80 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 80 insertions(+), 0 deletions(-)

diff --git a/dlls/comctl32/tests/treeview.c b/dlls/comctl32/tests/treeview.c
index 5f310b5..7d9fcfa 100644
--- a/dlls/comctl32/tests/treeview.c
+++ b/dlls/comctl32/tests/treeview.c
@@ -748,6 +748,84 @@ static LRESULT CALLBACK MyWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lPa
     return 0L;
 }
 
+static void TestExpandInvisible(void)
+{
+    static CHAR nodeRText[]  = "R",
+                nodeIText[]  = "I",
+                nodeIIText[] = "II",
+                node1Text[]  = "1",
+                node2Text[]  = "2";
+    TVINSERTSTRUCTA ins;
+    HTREEITEM nodeR;
+    HTREEITEM nodeI;
+    HTREEITEM nodeII;
+    HTREEITEM node1;
+    HTREEITEM node2;
+    RECT dummyRect;
+    BOOL nodeIVisible;
+    BOOL nodeIIVisible;
+    BOOL node1Visible;
+    BOOL node2Visible;
+    HWND window = CreateWindowExA(0, "MyTestWnd", "treeview: TestExpandInvisible", WS_OVERLAPPEDWINDOW,
+        CW_USEDEFAULT, CW_USEDEFAULT, 130, 105, NULL, NULL, GetModuleHandleA(NULL), 0);
+
+    HWND tree = CreateWindowExA(WS_EX_CLIENTEDGE, WC_TREEVIEWA, NULL, WS_CHILD|WS_VISIBLE|
+        TVS_LINESATROOT|TVS_HASLINES|TVS_HASBUTTONS|TVS_EDITLABELS,
+        0, 0, 120, 100, window, (HMENU)100, GetModuleHandleA(0), 0);
+
+
+    ins.hParent = TVI_ROOT;
+    ins.hInsertAfter = TVI_ROOT;
+    U(ins).item.mask = TVIF_TEXT;
+    U(ins).item.pszText = nodeRText;
+    nodeR = TreeView_InsertItem(tree, &ins);
+    assert(nodeR);
+
+    ins.hInsertAfter = TVI_LAST;
+    U(ins).item.mask = TVIF_TEXT;
+    ins.hParent = nodeR;
+
+    U(ins).item.pszText = nodeIText;
+    nodeI = TreeView_InsertItem(tree, &ins);
+    assert(nodeI);
+    U(ins).item.pszText = nodeIIText;
+    nodeII = TreeView_InsertItem(tree, &ins);
+    assert(nodeII);
+
+    ins.hParent = nodeI;
+
+    U(ins).item.pszText = node1Text;
+    node1 = TreeView_InsertItem(tree, &ins);
+    assert(node1);
+    U(ins).item.pszText = node2Text;
+    node2 = TreeView_InsertItem(tree, &ins);
+    assert(node1);
+
+    nodeIVisible = TreeView_GetItemRect(tree, nodeI, &dummyRect, FALSE);
+    ok(!nodeIVisible, "Node I should not be visible.\n");
+    node1Visible = TreeView_GetItemRect(tree, node1, &dummyRect, FALSE);
+    ok(!node1Visible, "Node 1 should not be visible.\n");
+    node2Visible = TreeView_GetItemRect(tree, node2, &dummyRect, FALSE);
+    ok(!node2Visible, "Node 2 should not be visible.\n");
+    nodeIIVisible = TreeView_GetItemRect(tree, nodeII, &dummyRect, FALSE);
+    ok(!nodeIIVisible, "Node II should not be visible.\n");
+
+    ok(TreeView_Expand(tree, nodeI, TVE_EXPAND), "Expand of node I failed.\n");
+
+    nodeIVisible = TreeView_GetItemRect(tree, nodeI, &dummyRect, FALSE);
+    ok(!nodeIVisible, "Node I should not be visible.\n");
+    node1Visible = TreeView_GetItemRect(tree, node1, &dummyRect, FALSE);
+todo_wine
+    ok(!node1Visible, "Node 1 should not be visible.\n");
+    node2Visible = TreeView_GetItemRect(tree, node2, &dummyRect, FALSE);
+todo_wine
+    ok(!node2Visible, "Node 2 should not be visible.\n");
+    nodeIIVisible = TreeView_GetItemRect(tree, nodeII, &dummyRect, FALSE);
+todo_wine
+    ok(!nodeIIVisible, "Node II should not be visible.\n");
+}
+
+
 START_TEST(treeview)
 {
     HMODULE hComctl32;
@@ -819,4 +897,6 @@ START_TEST(treeview)
         TranslateMessage(&msg);
         DispatchMessageA(&msg);
     }
+
+    TestExpandInvisible();
 }
-- 
1.5.4.3




More information about the wine-patches mailing list