public void TestEmulateSelectItemEventAsync()
 {
     NativeTree tree = new NativeTree(testDlg.IdentifyFromDialogId(1042));
     Async async = new Async();
     tree.EmulateSelectItem(tree.FindNode(0, 0), async);
     Assert.IsTrue(0 < MessageBoxUtility.CloseAll(testDlg, async));
 }
        public void TestEnsureVisible()
        {
            NativeTree tree = new NativeTree(testDlg.IdentifyFromDialogId(1041));
            tree.EmulateExpand(tree.Nodes[1], true);
            IntPtr node = tree.FindNode(1, 99);
            RECT native = new RECT();
            NativeMethods.GetWindowRect(tree.Handle, out native);

            Rectangle rect = new Rectangle(0, 0, native.Right - native.Left + 1, native.Bottom - native.Top + 1);
            Assert.IsFalse(rect.Contains(tree.GetItemRect(node, false)));
            Assert.IsTrue(tree.EnsureVisible(node));
            Assert.IsTrue(rect.Contains(tree.GetItemRect(node, false)));
        }
        public void TestSetGetItem()
        {
            NativeTree tree = new NativeTree(testDlg.IdentifyFromDialogId(1041));
            TVITEMEX item = new TVITEMEX();
            foreach (TVIF element in (TVIF[])Enum.GetValues(typeof(TVIF)))
            {
                item.mask |= element;
            }
            foreach (TVIS element in (TVIS[])Enum.GetValues(typeof(TVIS)))
            {
                item.stateMask |= element;
            }

            //アイテムのすべての情報が正常に取得できることを確認。
            item.hItem = tree.Nodes[0];
            tree.GetItem(item);
            Assert.AreEqual("0", item.pszText);
            Assert.AreEqual(0, item.iImage);
            Assert.AreEqual(4, item.iSelectedImage);
            Assert.AreEqual(1, item.cChildren);
            Assert.AreEqual(new IntPtr(100), item.lParam);
            Assert.AreEqual((TVIS)0, (item.state & TVIS.EXPANDED));
            tree.EmulateExpand(item.hItem, true);
            tree.GetItem(item);
            Assert.AreEqual(TVIS.EXPANDED, (item.state & TVIS.EXPANDED));
            item.hItem = tree.FindNode(0, 0); //iImageは上記では0確認であるため、念のため、値の入ったアイテムでもテスト。
            tree.GetItem(item);
            Assert.AreEqual(1, item.iImage);

            //全ての情報情報を設定できることを確認。
            item.hItem = tree.Nodes[0];
            tree.GetItem(item);//もとに戻す用
            TVITEMEX newItem = new TVITEMEX();
            newItem.hItem = item.hItem;
            newItem.mask = item.mask;
            newItem.pszText = "xxx";
            newItem.iImage = 1;
            newItem.iSelectedImage = 2;
            newItem.cChildren = 0;
            newItem.lParam = new IntPtr(200);
            newItem.stateMask = TVIS.SELECTED;
            newItem.state = TVIS.SELECTED;
            tree.EmulateChangeItem(newItem);

            TVITEMEX check = new TVITEMEX();
            check.hItem = item.hItem;
            check.mask = item.mask;
            check.stateMask = item.stateMask;
            tree.GetItem(check);
            Assert.AreEqual("xxx", check.pszText);
            Assert.AreEqual(1, check.iImage);
            Assert.AreEqual(2, check.iSelectedImage);
            Assert.AreEqual(0, check.cChildren);
            Assert.AreEqual(new IntPtr(200), check.lParam);
            Assert.AreEqual(TVIS.SELECTED, check.state & TVIS.SELECTED);
        }
        public void TestGetBrotherNodes()
        {
            NativeTree tree = new NativeTree(testDlg.IdentifyFromDialogId(1041));
            AssertEx.AreEqual(tree.Nodes, tree.GetBrotherNodes(tree.Nodes[0]));
            IntPtr[] brother = tree.GetBrotherNodes(tree.FindNode(0, 0));
            Assert.AreEqual("1", tree.GetItemText(brother[0]));
            Assert.AreEqual("2", tree.GetItemText(brother[1]));

            //途中から取得してもすべて列挙されること
            brother = tree.GetBrotherNodes(tree.FindNode(0, 1));
            Assert.AreEqual("1", tree.GetItemText(brother[0]));
            Assert.AreEqual("2", tree.GetItemText(brother[1]));
        }
 public void TestFindNode()
 {
     NativeTree tree = new NativeTree(testDlg.IdentifyFromDialogId(1041));
     Assert.AreEqual("2", tree.GetItemText(tree.FindNode(0, 1)));
     Assert.AreEqual("1", tree.GetItemText(tree.FindNode("0", "1")));
 }
        public void TestSelectedItem()
        {
            NativeTree tree = new NativeTree(testDlg.IdentifyFromDialogId(1041));
            tree.EmulateSelectItem(tree.FindNode(0, 1));
            Assert.AreEqual("2", tree.GetItemText(tree.SelectedItem));

            //非同期でも同様の効果があることの確認。
            Async a = new Async();
            tree.EmulateSelectItem(tree.FindNode(1, 0), a);
            while (!a.IsCompleted)
            {
                Thread.Sleep(10);
            }
            Assert.AreEqual("0", tree.GetItemText(tree.SelectedItem));
        }