2010-04-14 Carlos Alberto Cortez <calberto.cortez@gmail.com>
authorCarlos Alberto Cortez <calberto.cortez@gmail.com>
Wed, 14 Apr 2010 13:36:53 +0000 (13:36 -0000)
committerCarlos Alberto Cortez <calberto.cortez@gmail.com>
Wed, 14 Apr 2010 13:36:53 +0000 (13:36 -0000)
* TreeViewTest.cs: New test for TreeViewNodeSorter used recursively.

svn path=/trunk/mcs/; revision=155392

mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ChangeLog
mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/TreeViewTest.cs

index 1df2086be2485c13c86f39a249c2cfee6523a8ab..7d6496ddb3570549203447eed8fcf302760580a6 100644 (file)
@@ -1,3 +1,7 @@
+2010-04-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
+
+       * TreeViewTest.cs: New test for TreeViewNodeSorter used recursively.
+
 2010-01-18  Carlos Alberto Cortez <calberto.cortez@gmail.com>
 
        * RichTextBoxTest.cs: New test for the Modified property.
index 838126fb33acb1a2f65492998e2fd98c3381cf58..050f64c69f5345956e0d528c79cf824ea6d20a06 100644 (file)
@@ -686,6 +686,49 @@ namespace MonoTests.System.Windows.Forms
                                return ((TreeNode)x).Text == "2" ? -1 : 1;
                        }
                }
+
+               [Test]
+               public void SortedRecursive ()
+               {
+                       TreeView tv = new TreeView ();
+                       tv.TreeViewNodeSorter = new InverseNodeSorter ();
+                       tv.BeginUpdate ();
+                       TreeNode root_node = tv.Nodes.Add ("Root");
+                       for (char c = 'a'; c <= 'f'; c++) {
+                               TreeNode node = new TreeNode (c.ToString ());
+                               for (int i = 0; i < 3; i++)
+                                       node.Nodes.Add (i.ToString ());
+
+                               root_node.Nodes.Add (node);
+                       }
+                       tv.EndUpdate ();
+
+                       // Make sure we are sorted
+                       tv.Sort ();
+
+                       Assert.AreEqual ("f", root_node.Nodes [0].Text, "#A1");
+                       Assert.AreEqual ("e", root_node.Nodes [1].Text, "#A2");
+                       Assert.AreEqual ("d", root_node.Nodes [2].Text, "#A3");
+                       Assert.AreEqual ("c", root_node.Nodes [3].Text, "#A4");
+                       Assert.AreEqual ("b", root_node.Nodes [4].Text, "#A5");
+                       Assert.AreEqual ("a", root_node.Nodes [5].Text, "#A5");
+
+                       foreach (TreeNode n in root_node.Nodes) {
+                               Assert.AreEqual ("2", n.Nodes [0].Text, "#B1");
+                               Assert.AreEqual ("1", n.Nodes [1].Text, "#B2");
+                               Assert.AreEqual ("0", n.Nodes [2].Text, "#B3");
+                       }
+               }
+
+               class InverseNodeSorter : IComparer
+               {
+                       public int Compare (object a, object b)
+                       {
+                               TreeNode node_a = (TreeNode)a;
+                               TreeNode node_b = (TreeNode)b;
+                               return String.Compare (node_b.Text, node_a.Text);
+                       }
+               }
        }
 #endif
 }