2009/4/15 Florian Köberle <florian(a)fkoeberle.de>:
> ---
> 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
>
>
>
>
Hi Florian,
I think you should use already created dialog and treeview.
Place your new function just after TestCallback(), clear tree view and
fill it, then just test visibility of expandable items.
--
Nicolas Le Cam