2 using System.Collections;
4 using System.Globalization;
5 using System.Windows.Forms;
9 namespace MonoTests.System.Windows.Forms
12 public class TreeViewTest : TestHelper
15 public void ClientRectangle_Borders ()
17 TreeView tv = new TreeView ();
19 Assert.AreEqual (tv.ClientRectangle, new TreeView ().ClientRectangle);
23 public void CollapseAll_NoNodes ()
25 TreeView tv = new TreeView ();
30 public void DefaultCtor ()
32 TreeView tv = new TreeView ();
33 Assert.AreEqual (121, tv.Width, "#1");
34 Assert.AreEqual (97, tv.Height, "#2");
36 Assert.IsTrue (tv.Scrollable, "#3");
37 Assert.AreEqual (tv.SelectedNode, null, "#4");
42 public void DoubleBuffered ()
44 MockTreeView tv = new MockTreeView ();
45 Assert.IsFalse (tv.IsDoubleBuffered, "#A1");
46 Assert.IsTrue (tv.GetControlStyle (ControlStyles.AllPaintingInWmPaint), "#A2");
47 Assert.IsFalse (tv.GetControlStyle (ControlStyles.DoubleBuffer), "#A3");
48 Assert.IsFalse (tv.GetControlStyle (ControlStyles.OptimizedDoubleBuffer), "#A4");
49 Assert.IsFalse (tv.GetControlStyle (ControlStyles.UserPaint), "#A5");
50 Assert.IsFalse (tv.GetControlStyle (ControlStyles.StandardClick), "#A6");
52 tv.IsDoubleBuffered = true;
53 Assert.IsTrue (tv.IsDoubleBuffered, "#B1");
54 Assert.IsTrue (tv.GetControlStyle (ControlStyles.AllPaintingInWmPaint), "#B2");
55 Assert.IsFalse (tv.GetControlStyle (ControlStyles.DoubleBuffer), "#B3");
56 Assert.IsTrue (tv.GetControlStyle (ControlStyles.OptimizedDoubleBuffer), "#B4");
57 Assert.IsFalse (tv.GetControlStyle (ControlStyles.UserPaint), "#B5");
62 public void SimpleShowTest ()
65 f.ShowInTaskbar = false;
66 TreeView tv = new TreeView ();
67 //tv.BorderStyle = BorderStyle.FixedSingle;
68 tv.Location = new Point (20, 20);
69 //tv.Text = "adssssss";
77 public void NodeAddIndex ()
79 TreeView tv = new TreeView ();
81 TreeNode tn1 = new TreeNode ("blah");
82 TreeNode tn2 = new TreeNode ("blah2");
83 TreeNode tn3 = new TreeNode ("blah3");
85 Assert.AreEqual (0, tv.Nodes.Add (tn1), "A1");
86 Assert.AreEqual (1, tv.Nodes.Add (tn2), "A2");
87 Assert.AreEqual (2, tv.Nodes.Add (tn3), "A3");
91 public void NodesCopyToTest ()
93 TreeView tv = new TreeView();
94 TreeNode one = new TreeNode ("one");
95 TreeNode two = new TreeNode ("two");
96 TreeNode three = new TreeNode ("three");
100 tv.Nodes.Add (three);
102 ArrayList al = new ArrayList (tv.Nodes);
104 Assert.AreEqual (al [0], tv.Nodes [0], "A1");
105 Assert.AreEqual (al [1], tv.Nodes [1], "A2");
106 Assert.AreEqual (al [2], tv.Nodes [2], "A3");
110 public void ExpandAll_Flat_Created ()
112 TreeView tv = new TreeView ();
113 tv.Size = new Size (300, 100);
115 for (int i = 0; i <= 100; i++)
116 tv.Nodes.Add (i.ToString (CultureInfo.InvariantCulture));
118 Form form = new Form ();
119 form.ShowInTaskbar = false;
120 form.Controls.Add (tv);
123 Assert.IsFalse (tv.Nodes [0].IsExpanded, "#A1");
124 Assert.IsFalse (tv.Nodes [99].IsExpanded, "#A2");
126 Assert.IsTrue (tv.Nodes [0].IsVisible, "#B1");
127 Assert.IsFalse (tv.Nodes [99].IsVisible, "#B2");
131 Assert.IsFalse (tv.Nodes [0].IsExpanded, "#C1");
132 Assert.IsFalse (tv.Nodes [99].IsExpanded, "#C2");
134 Assert.IsTrue (tv.Nodes [0].IsVisible, "#D1");
135 Assert.IsFalse (tv.Nodes [99].IsVisible, "#D2");
141 public void ExpandAll_Tree_Created ()
143 TreeView tv = new TreeView ();
144 tv.Size = new Size (300, 100);
146 for (int i = 0; i <= 100; i++) {
147 TreeNode node = tv.Nodes.Add (i.ToString (CultureInfo.InvariantCulture));
148 node.Nodes.Add ("child");
151 Form form = new Form ();
152 form.ShowInTaskbar = false;
153 form.Controls.Add (tv);
156 Assert.IsFalse (tv.Nodes [0].IsExpanded, "#A1");
157 Assert.IsFalse (tv.Nodes [99].IsExpanded, "#A2");
159 Assert.IsTrue (tv.Nodes [0].IsVisible, "#B1");
160 Assert.IsFalse (tv.Nodes [99].IsVisible, "#B2");
164 Assert.IsTrue (tv.Nodes [0].IsExpanded, "#C1");
165 Assert.IsTrue (tv.Nodes [99].IsExpanded, "#C2");
167 Assert.IsFalse (tv.Nodes [0].IsVisible, "#D1");
168 Assert.IsTrue (tv.Nodes [99].IsVisible, "#D2");
174 public void ExpandAll_Flat_NotCreated ()
176 TreeView tv = new TreeView ();
177 tv.Size = new Size (300, 100);
179 for (int i = 0; i <= 100; i++)
180 tv.Nodes.Add (i.ToString (CultureInfo.InvariantCulture));
182 Assert.IsFalse (tv.Nodes [0].IsExpanded, "#A1");
183 Assert.IsFalse (tv.Nodes [99].IsExpanded, "#A2");
185 Assert.IsFalse (tv.Nodes [0].IsVisible, "#B1");
186 Assert.IsFalse (tv.Nodes [99].IsVisible, "#B2");
190 Assert.IsTrue (tv.Nodes [0].IsExpanded, "#C1");
191 Assert.IsTrue (tv.Nodes [99].IsExpanded, "#C2");
193 Assert.IsFalse (tv.Nodes [0].IsVisible, "#D1");
194 Assert.IsFalse (tv.Nodes [99].IsVisible, "#D2");
196 Form form = new Form ();
197 form.ShowInTaskbar = false;
198 form.Controls.Add (tv);
201 Assert.IsFalse (tv.Nodes [0].IsExpanded, "#E1");
202 Assert.IsFalse (tv.Nodes [99].IsExpanded, "#E2");
204 Assert.IsTrue (tv.Nodes [0].IsVisible, "#F1");
205 Assert.IsFalse (tv.Nodes [99].IsVisible, "#F2");
211 public void ExpandAll_Tree_NotCreated ()
213 TreeView tv = new TreeView ();
214 tv.Size = new Size (300, 100);
216 for (int i = 0; i <= 100; i++) {
217 TreeNode node = tv.Nodes.Add (i.ToString (CultureInfo.InvariantCulture));
218 node.Nodes.Add ("child");
221 Assert.IsFalse (tv.Nodes [0].IsExpanded, "#A1");
222 Assert.IsFalse (tv.Nodes [99].IsExpanded, "#A2");
224 Assert.IsFalse (tv.Nodes [0].IsVisible, "#B1");
225 Assert.IsFalse (tv.Nodes [99].IsVisible, "#B2");
229 Assert.IsTrue (tv.Nodes [0].IsExpanded, "#C1");
230 Assert.IsTrue (tv.Nodes [99].IsExpanded, "#C2");
232 Assert.IsFalse (tv.Nodes [0].IsVisible, "#D1");
233 Assert.IsFalse (tv.Nodes [99].IsVisible, "#D2");
235 Form form = new Form ();
236 form.ShowInTaskbar = false;
237 form.Controls.Add (tv);
240 Assert.IsTrue (tv.Nodes [0].IsExpanded, "#E1");
241 Assert.IsTrue (tv.Nodes [99].IsExpanded, "#E2");
244 Assert.IsTrue (tv.Nodes [0].IsVisible, "#F1");
245 Assert.IsFalse (tv.Nodes [99].IsVisible, "#F2");
247 Assert.IsFalse (tv.Nodes [0].IsVisible, "#F1");
248 Assert.IsTrue (tv.Nodes [99].IsVisible, "#F2");
254 class MockTreeView : TreeView
256 public bool GetControlStyle (ControlStyles style)
258 return base.GetStyle (style);
262 public bool IsDoubleBuffered {
263 get { return DoubleBuffered; }
264 set { DoubleBuffered = value; }
270 public void MethodIsInputChar ()
272 // Basically, show that this method always returns true
273 InputCharControl m = new InputCharControl ();
276 for (int i = 0; i < 256; i++)
277 result &= m.PublicIsInputChar ((char)i);
279 Assert.AreEqual (true, result, "I1");
282 private class InputCharControl : TreeView
284 public bool PublicIsInputChar (char charCode)
286 return base.IsInputChar (charCode);
292 public void SelectedNodeNullTest ()
294 Form f = new Form ();
295 f.ShowInTaskbar = false;
297 TreeView tv = new TreeView ();
298 tv.Nodes.Add ("Node 1");
303 tv.BeforeSelect += new TreeViewCancelEventHandler (delegate (object sender, TreeViewCancelEventArgs e) { if (e.Node == null) Assert.Fail ("BeforeSelect should not be called with a null node"); });
304 tv.AfterSelect += new TreeViewEventHandler (delegate (object sender, TreeViewEventArgs e) { if (e.Node == null) Assert.Fail ("AfterSelect should not be called with a null node"); });
306 tv.SelectedNode = null;
312 public void SortChangesSorted ()
314 TreeView tv = new TreeView ();
316 Assert.AreEqual (false, tv.Sorted, "A1");
319 Assert.AreEqual (true, tv.Sorted, "A2");
323 public void SortedBeforeNodeAdd ()
325 TreeView tv = new TreeView ();
328 tv.Nodes.Add ("bbb");
329 tv.Nodes.Add ("aaa");
331 Assert.AreEqual ("aaa", tv.Nodes[0].Text, "A1");
335 public void SortBeginUpdate ()
337 TreeView tv = new TreeView ();
344 // Even if BeginUpdate was called, Sort is called.
345 Assert.AreEqual ("a", tv.Nodes [0].Text, "#A1");
346 Assert.AreEqual ("f", tv.Nodes [1].Text, "#A2");
347 Assert.AreEqual ("x", tv.Nodes [2].Text, "#A3");
352 public void MethodToString ()
354 TreeView tv = new TreeView ();
356 Assert.AreEqual (@"System.Windows.Forms.TreeView, Nodes.Count: 0", tv.ToString (), "A1");
361 Assert.AreEqual (@"System.Windows.Forms.TreeView, Nodes.Count: 2, Nodes[0]: TreeNode: A", tv.ToString (), "A2");
366 public class BeforeSelectEvent : TestHelper
369 TreeViewCancelEventArgs cancelEventArgs;
372 public void TreeView_BeforeSelect (object sender, TreeViewCancelEventArgs e)
381 protected override void SetUp () {
383 cancelEventArgs = null;
389 [Category ("NotWorking")]
390 public void CancelBeforeCreationOfHandle ()
392 TreeView tvw = new TreeView ();
393 tvw.BeforeSelect += new TreeViewCancelEventHandler (TreeView_BeforeSelect);
396 TreeNode nodeA = tvw.Nodes.Add ("A");
397 Assert.AreEqual (0, beforeSelect, "#A1");
398 tvw.SelectedNode = nodeA;
399 Assert.AreEqual (0, beforeSelect, "#A2");
400 Assert.IsNull (cancelEventArgs, "#A3");
401 Assert.IsFalse (nodeA.IsSelected, "#A4");
402 Assert.AreSame (nodeA, tvw.SelectedNode, "#A5");
404 TreeNode nodeB = tvw.Nodes.Add ("B");
405 Assert.AreEqual (0, beforeSelect, "#B1");
406 tvw.SelectedNode = nodeB;
407 Assert.AreEqual (0, beforeSelect, "#B2");
408 Assert.IsNull (cancelEventArgs, "#B3");
409 Assert.IsFalse (nodeB.IsSelected, "#B4");
410 Assert.AreSame (nodeB, tvw.SelectedNode, "#B5");
412 Form form = new Form ();
413 form.ShowInTaskbar = false;
414 form.Controls.Add (tvw);
417 Assert.AreEqual (2, beforeSelect, "#C1");
418 Assert.IsNotNull (cancelEventArgs, "#C2");
419 Assert.AreEqual (TreeViewAction.Unknown, cancelEventArgs.Action, "#C3");
420 Assert.AreSame (nodeA, cancelEventArgs.Node, "#C4");
421 Assert.IsFalse (nodeA.IsSelected, "#C5");
422 Assert.IsFalse (nodeB.IsSelected, "#C6");
423 Assert.IsNull (tvw.SelectedNode, "#C7");
427 public void SelectBeforeCreationOfHandle ()
429 TreeView tvw = new TreeView ();
430 tvw.BeforeSelect += new TreeViewCancelEventHandler (TreeView_BeforeSelect);
432 TreeNode nodeA = tvw.Nodes.Add ("A");
433 Assert.AreEqual (0, beforeSelect, "#A1");
434 tvw.SelectedNode = nodeA;
435 Assert.AreEqual (0, beforeSelect, "#A2");
436 Assert.IsNull (cancelEventArgs, "#A3");
437 Assert.IsFalse (nodeA.IsSelected, "#A4");
438 Assert.AreSame (nodeA, tvw.SelectedNode, "#A5");
440 TreeNode nodeB = tvw.Nodes.Add ("B");
441 Assert.AreEqual (0, beforeSelect, "#B1");
442 tvw.SelectedNode = nodeB;
443 Assert.AreEqual (0, beforeSelect, "#B2");
444 Assert.IsNull (cancelEventArgs, "#B3");
445 Assert.IsFalse (nodeB.IsSelected, "#B4");
446 Assert.AreSame (nodeB, tvw.SelectedNode, "#B5");
448 Form form = new Form ();
449 form.ShowInTaskbar = false;
450 form.Controls.Add (tvw);
453 Assert.AreEqual (1, beforeSelect, "#C1");
454 Assert.IsNotNull (cancelEventArgs, "#C2");
455 Assert.AreEqual (TreeViewAction.Unknown, cancelEventArgs.Action, "#C3");
456 Assert.AreSame (nodeB, cancelEventArgs.Node, "#C4");
457 Assert.IsFalse (nodeA.IsSelected, "#C5");
458 Assert.IsTrue (nodeB.IsSelected, "#C6");
459 Assert.AreSame (nodeB, tvw.SelectedNode, "#C7");
464 public void CancelAfterCreationOfHandle ()
466 TreeView tvw = new TreeView ();
467 tvw.BeforeSelect += new TreeViewCancelEventHandler (TreeView_BeforeSelect);
470 Form form = new Form ();
471 form.ShowInTaskbar = false;
472 form.Controls.Add (tvw);
475 TreeNode nodeA = tvw.Nodes.Add ("A");
476 Assert.AreEqual (0, beforeSelect, "#A1");
477 tvw.SelectedNode = nodeA;
478 Assert.AreEqual (1, beforeSelect, "#A2");
479 Assert.IsNotNull (cancelEventArgs, "#A3");
480 Assert.AreEqual (TreeViewAction.Unknown, cancelEventArgs.Action, "#A4");
481 Assert.AreSame (nodeA, cancelEventArgs.Node, "#A5");
482 Assert.IsFalse (nodeA.IsSelected, "#A6");
483 Assert.IsNull (tvw.SelectedNode, "#A7");
485 TreeNode nodeB = tvw.Nodes.Add ("B");
486 Assert.AreEqual (1, beforeSelect, "#B1");
487 tvw.SelectedNode = nodeB;
488 Assert.AreEqual (2, beforeSelect, "#B2");
489 Assert.IsNotNull (cancelEventArgs, "#B3");
490 Assert.AreEqual (TreeViewAction.Unknown, cancelEventArgs.Action, "#B4");
491 Assert.AreSame (nodeB, cancelEventArgs.Node, "#B5");
492 Assert.IsFalse (nodeB.IsSelected, "#B6");
493 Assert.IsNull (tvw.SelectedNode, "#B7");
498 [Category ("NotWorking")]
499 public void SelectAfterCreationOfHandle ()
501 TreeView tvw = new TreeView ();
502 tvw.BeforeSelect += new TreeViewCancelEventHandler (TreeView_BeforeSelect);
504 Form form = new Form ();
505 form.ShowInTaskbar = false;
506 form.Controls.Add (tvw);
509 TreeNode nodeA = tvw.Nodes.Add ("A");
510 Assert.AreEqual (0, beforeSelect, "#A1");
511 tvw.SelectedNode = nodeA;
512 Assert.AreEqual (1, beforeSelect, "#A2");
513 Assert.IsNotNull (cancelEventArgs, "#A3");
514 Assert.AreEqual (TreeViewAction.Unknown, cancelEventArgs.Action, "#A4");
515 Assert.AreSame (nodeA, cancelEventArgs.Node, "#A5");
516 Assert.IsTrue (nodeA.IsSelected, "#A6");
517 Assert.AreSame (nodeA, tvw.SelectedNode, "#A7");
519 TreeNode nodeB = tvw.Nodes.Add ("B");
520 Assert.AreEqual (1, beforeSelect, "#B1");
521 tvw.SelectedNode = nodeB;
522 Assert.AreEqual (2, beforeSelect, "#B2");
523 Assert.IsNotNull (cancelEventArgs, "#B3");
524 Assert.AreEqual (TreeViewAction.Unknown, cancelEventArgs.Action, "#B4");
525 Assert.AreSame (nodeB, cancelEventArgs.Node, "#B5");
526 Assert.IsTrue (nodeB.IsSelected, "#B6");
527 Assert.AreSame (nodeB, tvw.SelectedNode, "#B7");
532 public class AfterSelectEvent : TestHelper
535 protected override void SetUp () {
541 [Category ("NotWorking")]
542 public void SelectedNode_Created ()
544 TreeView tv = new TreeView ();
545 tv.AfterSelect += new TreeViewEventHandler (TreeView_AfterSelect);
546 TreeNode one = new TreeNode ("one");
547 TreeNode two = new TreeNode ("two");
552 Form form = new Form ();
553 form.ShowInTaskbar = false;
554 form.Controls.Add (tv);
557 Assert.IsNotNull (tv.SelectedNode, "#A1");
558 Assert.AreSame (one, tv.SelectedNode, "#A2");
559 Assert.IsTrue (one.IsSelected, "#A3");
560 Assert.IsFalse (two.IsSelected, "#A4");
561 Assert.AreEqual (1, afterSelect, "#A5");
563 tv.SelectedNode = null;
564 Assert.IsNull (tv.SelectedNode, "#C1");
565 Assert.IsFalse (one.IsSelected, "#C2");
566 Assert.IsFalse (two.IsSelected, "#C3");
567 Assert.AreEqual (1, afterSelect, "#C4");
569 tv.SelectedNode = two;
570 Assert.IsNotNull (tv.SelectedNode, "#D1");
571 Assert.AreSame (two, tv.SelectedNode, "#D2");
572 Assert.IsFalse (one.IsSelected, "#D3");
573 Assert.IsTrue (two.IsSelected, "#D4");
574 Assert.AreEqual (2, afterSelect, "#D5");
580 public void SelectedNode_NotCreated ()
582 TreeView tv = new TreeView ();
583 tv.AfterSelect += new TreeViewEventHandler (TreeView_AfterSelect);
584 TreeNode one = new TreeNode ("one");
585 TreeNode two = new TreeNode ("two");
590 Assert.IsNull (tv.SelectedNode, "#A1");
591 Assert.IsFalse (one.IsSelected, "#A2");
592 Assert.IsFalse (two.IsSelected, "#A3");
593 Assert.AreEqual (0, afterSelect, "#A4");
595 tv.SelectedNode = two;
596 Assert.IsNotNull (tv.SelectedNode, "#B1");
597 Assert.AreSame (two, tv.SelectedNode, "#B2");
598 Assert.IsFalse (one.IsSelected, "#B3");
599 Assert.IsFalse (two.IsSelected, "#B4");
600 Assert.AreEqual (0, afterSelect, "#B5");
602 tv.SelectedNode = null;
603 Assert.IsNull (tv.SelectedNode, "#C1");
604 Assert.IsFalse (one.IsSelected, "#C2");
605 Assert.IsFalse (two.IsSelected, "#C3");
606 Assert.AreEqual (0, afterSelect, "#C4");
608 tv.SelectedNode = one;
609 Assert.IsNotNull (tv.SelectedNode, "#D1");
610 Assert.AreSame (one, tv.SelectedNode, "#D2");
611 Assert.IsFalse (one.IsSelected, "#D3");
612 Assert.IsFalse (two.IsSelected, "#D4");
613 Assert.AreEqual (0, afterSelect, "#D5");
616 void TreeView_AfterSelect (object sender, TreeViewEventArgs e)
626 public class TreeViewNodeSorterTest : TestHelper {
627 static bool node_sorter_called;
630 public void SortedAfterTreeViewNodeSorterIsSetToSomething() {
631 TreeView t = new TreeView();
632 t.TreeViewNodeSorter = new NodeSorter();
633 Assert.IsTrue(t.Sorted);
637 public void SortedAfterTreeViewNodeSorterIsSetToNull() {
638 TreeView t = new TreeView();
639 t.TreeViewNodeSorter = null;
640 Assert.IsFalse(t.Sorted);
644 public void NormalTreeViewNodeSorter() {
645 TreeView t = new TreeView();
648 node_sorter_called = false;
649 t.TreeViewNodeSorter = new NodeSorter();
650 Assert.IsTrue(node_sorter_called, "Node sorter called");
651 Assert.IsTrue(t.Nodes[0].Text == "2", "Order");
655 public void NormalSorted() {
656 TreeView t = new TreeView();
660 Assert.IsTrue(t.Nodes[0].Text == "1", "Order");
664 public void SortedDoesNotSortWhenTreeViewNodeSorterIsSet() {
665 TreeView t = new TreeView();
668 t.TreeViewNodeSorter = new NodeSorter();
671 Assert.IsTrue(t.Nodes[0].Text == "2", "Order");
675 public void SortedDoesNotSortWhenItIsAlreadyTrue() {
676 TreeView t = new TreeView();
679 t.TreeViewNodeSorter = new NodeSorter();
680 t.TreeViewNodeSorter = null;
682 Assert.IsTrue(t.Nodes[0].Text == "2", "Order");
686 public void SortedSorts() {
687 TreeView t = new TreeView();
690 t.TreeViewNodeSorter = new NodeSorter();
691 t.TreeViewNodeSorter = null;
694 Assert.IsTrue(t.Nodes[0].Text == "1", "Order");
697 class NodeSorter : IComparer {
698 public int Compare(object x, object y) {
699 node_sorter_called = true;
702 return ((TreeNode)x).Text == "2" ? -1 : 1;
707 public void SortedRecursive ()
709 TreeView tv = new TreeView ();
710 tv.TreeViewNodeSorter = new InverseNodeSorter ();
712 TreeNode root_node = tv.Nodes.Add ("Root");
713 for (char c = 'a'; c <= 'f'; c++) {
714 TreeNode node = new TreeNode (c.ToString ());
715 for (int i = 0; i < 3; i++)
716 node.Nodes.Add (i.ToString ());
718 root_node.Nodes.Add (node);
722 // Make sure we are sorted
725 Assert.AreEqual ("f", root_node.Nodes [0].Text, "#A1");
726 Assert.AreEqual ("e", root_node.Nodes [1].Text, "#A2");
727 Assert.AreEqual ("d", root_node.Nodes [2].Text, "#A3");
728 Assert.AreEqual ("c", root_node.Nodes [3].Text, "#A4");
729 Assert.AreEqual ("b", root_node.Nodes [4].Text, "#A5");
730 Assert.AreEqual ("a", root_node.Nodes [5].Text, "#A5");
732 foreach (TreeNode n in root_node.Nodes) {
733 Assert.AreEqual ("2", n.Nodes [0].Text, "#B1");
734 Assert.AreEqual ("1", n.Nodes [1].Text, "#B2");
735 Assert.AreEqual ("0", n.Nodes [2].Text, "#B3");
740 public void SortedAutomatically ()
742 TreeView tv = new TreeView ();
747 // One way to sort them automatically is to set Sorted to true
748 // and let the TreeView use the default comparer
750 Assert.AreEqual ("a", tv.Nodes [0].Text, "#A1");
751 Assert.AreEqual ("c", tv.Nodes [1].Text, "#A2");
752 Assert.AreEqual ("z", tv.Nodes [2].Text, "#A3");
753 Assert.AreEqual (true, tv.Sorted, "#A4");
756 Assert.AreEqual ("a", tv.Nodes [0].Text, "#B1");
757 Assert.AreEqual ("c", tv.Nodes [1].Text, "#B2");
758 Assert.AreEqual ("d", tv.Nodes [2].Text, "#B3");
759 Assert.AreEqual ("z", tv.Nodes [3].Text, "#B4");
761 // Another way is to set TreeViewNodeSorter,
762 // which will set Sorted to true automatically
764 Assert.AreEqual (false, tv.Sorted, "#C0");
766 tv.TreeViewNodeSorter = new InverseNodeSorter ();
767 Assert.AreEqual ("z", tv.Nodes [0].Text, "#C1");
768 Assert.AreEqual ("d", tv.Nodes [1].Text, "#C2");
769 Assert.AreEqual ("c", tv.Nodes [2].Text, "#C3");
770 Assert.AreEqual ("a", tv.Nodes [3].Text, "#C4");
771 Assert.AreEqual (true, tv.Sorted, "#C5");
774 Assert.AreEqual ("z", tv.Nodes [0].Text, "#D1");
775 Assert.AreEqual ("i", tv.Nodes [1].Text, "#D2");
776 Assert.AreEqual ("d", tv.Nodes [2].Text, "#D3");
777 Assert.AreEqual ("c", tv.Nodes [3].Text, "#D4");
778 Assert.AreEqual ("a", tv.Nodes [4].Text, "#D5");
781 Assert.AreEqual (false, tv.Sorted, "#E0");
783 // If we have set a TreeViewNodeSorter,
784 // it will sort the nodes automatically when adding/inserting a new one,
785 // setting Sorted to true.
787 Assert.AreEqual ("z", tv.Nodes [0].Text, "#E1");
788 Assert.AreEqual ("i", tv.Nodes [1].Text, "#E2");
789 Assert.AreEqual ("f", tv.Nodes [2].Text, "#E3");
790 Assert.AreEqual ("d", tv.Nodes [3].Text, "#E4");
791 Assert.AreEqual ("c", tv.Nodes [4].Text, "#E5");
792 Assert.AreEqual ("a", tv.Nodes [5].Text, "#E6");
793 Assert.AreEqual (true, tv.Sorted, "#E7");
795 // After setting the node sorter to null and testing,
796 // I'm curious about the interaction between Sort and Sorted.
797 tv.TreeViewNodeSorter = null;
798 Assert.AreEqual (null, tv.TreeViewNodeSorter, "#F1");
799 Assert.AreEqual (true, tv.Sorted, "#F2");
801 // Finally, no NodeSorter to automatically set Sorted to true
803 Assert.AreEqual (false, tv.Sorted, "#F0");
805 Assert.AreEqual ("z", tv.Nodes [0].Text, "#G1");
806 Assert.AreEqual ("i", tv.Nodes [1].Text, "#G2");
807 Assert.AreEqual ("f", tv.Nodes [2].Text, "#G3");
808 Assert.AreEqual ("d", tv.Nodes [3].Text, "#G4");
809 Assert.AreEqual ("c", tv.Nodes [4].Text, "#G5");
810 Assert.AreEqual ("a", tv.Nodes [5].Text, "#G6");
811 Assert.AreEqual ("k", tv.Nodes [6].Text, "#G7");
814 class InverseNodeSorter : IComparer
816 public int Compare (object a, object b)
818 TreeNode node_a = (TreeNode)a;
819 TreeNode node_b = (TreeNode)b;
820 return String.Compare (node_b.Text, node_a.Text);