public void GetNodesOfTypeWithState()
{
m_treeView.Nodes.Clear();
DummyTreeNode1 dNode = new DummyTreeNode1("d");
DummyTreeNode2 c2Node = new DummyTreeNode2("c2");
DummyTreeNode2 c1Node = new DummyTreeNode2("c1", new TreeNode[] { dNode });
m_bNode = new TreeNode("b", new TreeNode[] { c1Node, c2Node });
m_aNode = new TreeNode("a", new TreeNode[] { m_bNode });
m_treeView.Nodes.Add(m_aNode);
m_treeView.SetChecked(c1Node, TriStateTreeView.CheckState.Checked);
// Get Checked nodes of type DummyTreeNode1.
TreeNode[] list = m_treeView.GetNodesOfTypeWithState(typeof(DummyTreeNode1),
TriStateTreeView.CheckState.Checked);
Assert.AreEqual(1, list.Length);
Assert.AreEqual(list[0], dNode);
Assert.IsNotNull(list[0] as DummyTreeNode1);
// Get Unchecked nodes of type DummyTreeNode2.
list = m_treeView.GetNodesOfTypeWithState(typeof(DummyTreeNode2),
TriStateTreeView.CheckState.Unchecked);
Assert.AreEqual(1, list.Length);
Assert.AreEqual(list[0], c2Node);
Assert.IsNotNull(list[0] as DummyTreeNode2);
// Get nodes of type DummyTreeNode2 regardless of check state (Unchecked, Checked or Greyed).
list = m_treeView.GetNodesOfTypeWithState(typeof(DummyTreeNode2),
TriStateTreeView.CheckState.Unchecked |
TriStateTreeView.CheckState.Checked);
Assert.AreEqual(2, list.Length);
Assert.AreEqual(list[0], c1Node);
Assert.AreEqual(list[1], c2Node);
Assert.IsNotNull(list[0] as DummyTreeNode2);
Assert.IsNotNull(list[1] as DummyTreeNode2);
// Get nodes of type TreeNode regardless of check state (Unchecked, Checked or Greyed).
list = m_treeView.GetNodesOfTypeWithState(typeof(TreeNode),
TriStateTreeView.CheckState.GreyChecked);
Assert.AreEqual(2, list.Length);
Assert.AreEqual(list[0], m_aNode);
Assert.AreEqual(list[1], m_bNode);
Assert.IsNotNull(list[0] as TreeNode);
Assert.IsNotNull(list[1] as TreeNode);
}