2 using System.Collections;
4 using System.Globalization;
5 using System.Windows.Forms;
9 namespace MonoTests.System.Windows.Forms
12 public class TreeViewTest
15 public void ClientRectangle_Borders ()
17 TreeView tv = new TreeView ();
19 Assert.AreEqual (tv.ClientRectangle, new TreeView ().ClientRectangle);
23 public void DefaultCtor ()
25 TreeView tv = new TreeView ();
26 Assert.AreEqual (121, tv.Width, "#1");
27 Assert.AreEqual (97, tv.Height, "#2");
29 Assert.IsTrue (tv.Scrollable, "#3");
30 Assert.AreEqual (tv.SelectedNode, null, "#4");
34 public void SimpleShowTest ()
37 f.ShowInTaskbar = false;
38 TreeView tv = new TreeView ();
39 //tv.BorderStyle = BorderStyle.FixedSingle;
40 tv.Location = new Point (20, 20);
41 //tv.Text = "adssssss";
49 public void NodesCopyToTest ()
51 TreeView tv = new TreeView();
52 TreeNode one = new TreeNode ("one");
53 TreeNode two = new TreeNode ("two");
54 TreeNode three = new TreeNode ("three");
60 ArrayList al = new ArrayList (tv.Nodes);
62 Assert.AreEqual (al [0], tv.Nodes [0], "A1");
63 Assert.AreEqual (al [1], tv.Nodes [1], "A2");
64 Assert.AreEqual (al [2], tv.Nodes [2], "A3");
68 public void ExpandAll_Flat_Created ()
70 TreeView tv = new TreeView ();
71 tv.Size = new Size (300, 100);
73 for (int i = 0; i <= 100; i++)
74 tv.Nodes.Add (i.ToString (CultureInfo.InvariantCulture));
76 Form form = new Form ();
77 form.ShowInTaskbar = false;
78 form.Controls.Add (tv);
81 Assert.IsFalse (tv.Nodes [0].IsExpanded, "#A1");
82 Assert.IsFalse (tv.Nodes [99].IsExpanded, "#A2");
84 Assert.IsTrue (tv.Nodes [0].IsVisible, "#B1");
85 Assert.IsFalse (tv.Nodes [99].IsVisible, "#B2");
89 Assert.IsFalse (tv.Nodes [0].IsExpanded, "#C1");
90 Assert.IsFalse (tv.Nodes [99].IsExpanded, "#C2");
92 Assert.IsTrue (tv.Nodes [0].IsVisible, "#D1");
93 Assert.IsFalse (tv.Nodes [99].IsVisible, "#D2");
99 public void ExpandAll_Tree_Created ()
101 TreeView tv = new TreeView ();
102 tv.Size = new Size (300, 100);
104 for (int i = 0; i <= 100; i++) {
105 TreeNode node = tv.Nodes.Add (i.ToString (CultureInfo.InvariantCulture));
106 node.Nodes.Add ("child");
109 Form form = new Form ();
110 form.ShowInTaskbar = false;
111 form.Controls.Add (tv);
114 Assert.IsFalse (tv.Nodes [0].IsExpanded, "#A1");
115 Assert.IsFalse (tv.Nodes [99].IsExpanded, "#A2");
117 Assert.IsTrue (tv.Nodes [0].IsVisible, "#B1");
118 Assert.IsFalse (tv.Nodes [99].IsVisible, "#B2");
122 Assert.IsTrue (tv.Nodes [0].IsExpanded, "#C1");
123 Assert.IsTrue (tv.Nodes [99].IsExpanded, "#C2");
125 Assert.IsFalse (tv.Nodes [0].IsVisible, "#D1");
126 Assert.IsTrue (tv.Nodes [99].IsVisible, "#D2");
132 public void ExpandAll_Flat_NotCreated ()
134 TreeView tv = new TreeView ();
135 tv.Size = new Size (300, 100);
137 for (int i = 0; i <= 100; i++)
138 tv.Nodes.Add (i.ToString (CultureInfo.InvariantCulture));
140 Assert.IsFalse (tv.Nodes [0].IsExpanded, "#A1");
141 Assert.IsFalse (tv.Nodes [99].IsExpanded, "#A2");
143 Assert.IsFalse (tv.Nodes [0].IsVisible, "#B1");
144 Assert.IsFalse (tv.Nodes [99].IsVisible, "#B2");
148 Assert.IsTrue (tv.Nodes [0].IsExpanded, "#C1");
149 Assert.IsTrue (tv.Nodes [99].IsExpanded, "#C2");
151 Assert.IsFalse (tv.Nodes [0].IsVisible, "#D1");
152 Assert.IsFalse (tv.Nodes [99].IsVisible, "#D2");
154 Form form = new Form ();
155 form.ShowInTaskbar = false;
156 form.Controls.Add (tv);
159 Assert.IsFalse (tv.Nodes [0].IsExpanded, "#E1");
160 Assert.IsFalse (tv.Nodes [99].IsExpanded, "#E2");
162 Assert.IsTrue (tv.Nodes [0].IsVisible, "#F1");
163 Assert.IsFalse (tv.Nodes [99].IsVisible, "#F2");
169 public void ExpandAll_Tree_NotCreated ()
171 TreeView tv = new TreeView ();
172 tv.Size = new Size (300, 100);
174 for (int i = 0; i <= 100; i++) {
175 TreeNode node = tv.Nodes.Add (i.ToString (CultureInfo.InvariantCulture));
176 node.Nodes.Add ("child");
179 Assert.IsFalse (tv.Nodes [0].IsExpanded, "#A1");
180 Assert.IsFalse (tv.Nodes [99].IsExpanded, "#A2");
182 Assert.IsFalse (tv.Nodes [0].IsVisible, "#B1");
183 Assert.IsFalse (tv.Nodes [99].IsVisible, "#B2");
187 Assert.IsTrue (tv.Nodes [0].IsExpanded, "#C1");
188 Assert.IsTrue (tv.Nodes [99].IsExpanded, "#C2");
190 Assert.IsFalse (tv.Nodes [0].IsVisible, "#D1");
191 Assert.IsFalse (tv.Nodes [99].IsVisible, "#D2");
193 Form form = new Form ();
194 form.ShowInTaskbar = false;
195 form.Controls.Add (tv);
198 Assert.IsTrue (tv.Nodes [0].IsExpanded, "#E1");
199 Assert.IsTrue (tv.Nodes [99].IsExpanded, "#E2");
202 Assert.IsTrue (tv.Nodes [0].IsVisible, "#F1");
203 Assert.IsFalse (tv.Nodes [99].IsVisible, "#F2");
205 Assert.IsFalse (tv.Nodes [0].IsVisible, "#F1");
206 Assert.IsTrue (tv.Nodes [99].IsVisible, "#F2");
214 public class BeforeSelectEvent
217 TreeViewCancelEventArgs cancelEventArgs;
220 public void TreeView_BeforeSelect (object sender, TreeViewCancelEventArgs e)
232 cancelEventArgs = null;
237 [Category ("NotWorking")]
238 public void CancelBeforeCreationOfHandle ()
240 TreeView tvw = new TreeView ();
241 tvw.BeforeSelect += new TreeViewCancelEventHandler (TreeView_BeforeSelect);
244 TreeNode nodeA = tvw.Nodes.Add ("A");
245 Assert.AreEqual (0, beforeSelect, "#A1");
246 tvw.SelectedNode = nodeA;
247 Assert.AreEqual (0, beforeSelect, "#A2");
248 Assert.IsNull (cancelEventArgs, "#A3");
249 Assert.IsFalse (nodeA.IsSelected, "#A4");
250 Assert.AreSame (nodeA, tvw.SelectedNode, "#A5");
252 TreeNode nodeB = tvw.Nodes.Add ("B");
253 Assert.AreEqual (0, beforeSelect, "#B1");
254 tvw.SelectedNode = nodeB;
255 Assert.AreEqual (0, beforeSelect, "#B2");
256 Assert.IsNull (cancelEventArgs, "#B3");
257 Assert.IsFalse (nodeB.IsSelected, "#B4");
258 Assert.AreSame (nodeB, tvw.SelectedNode, "#B5");
260 Form form = new Form ();
261 form.ShowInTaskbar = false;
262 form.Controls.Add (tvw);
265 Assert.AreEqual (2, beforeSelect, "#C1");
266 Assert.IsNotNull (cancelEventArgs, "#C2");
267 Assert.AreEqual (TreeViewAction.Unknown, cancelEventArgs.Action, "#C3");
268 Assert.AreSame (nodeA, cancelEventArgs.Node, "#C4");
269 Assert.IsFalse (nodeA.IsSelected, "#C5");
270 Assert.IsFalse (nodeB.IsSelected, "#C6");
271 Assert.IsNull (tvw.SelectedNode, "#C7");
275 public void SelectBeforeCreationOfHandle ()
277 TreeView tvw = new TreeView ();
278 tvw.BeforeSelect += new TreeViewCancelEventHandler (TreeView_BeforeSelect);
280 TreeNode nodeA = tvw.Nodes.Add ("A");
281 Assert.AreEqual (0, beforeSelect, "#A1");
282 tvw.SelectedNode = nodeA;
283 Assert.AreEqual (0, beforeSelect, "#A2");
284 Assert.IsNull (cancelEventArgs, "#A3");
285 Assert.IsFalse (nodeA.IsSelected, "#A4");
286 Assert.AreSame (nodeA, tvw.SelectedNode, "#A5");
288 TreeNode nodeB = tvw.Nodes.Add ("B");
289 Assert.AreEqual (0, beforeSelect, "#B1");
290 tvw.SelectedNode = nodeB;
291 Assert.AreEqual (0, beforeSelect, "#B2");
292 Assert.IsNull (cancelEventArgs, "#B3");
293 Assert.IsFalse (nodeB.IsSelected, "#B4");
294 Assert.AreSame (nodeB, tvw.SelectedNode, "#B5");
296 Form form = new Form ();
297 form.ShowInTaskbar = false;
298 form.Controls.Add (tvw);
301 Assert.AreEqual (1, beforeSelect, "#C1");
302 Assert.IsNotNull (cancelEventArgs, "#C2");
303 Assert.AreEqual (TreeViewAction.Unknown, cancelEventArgs.Action, "#C3");
304 Assert.AreSame (nodeB, cancelEventArgs.Node, "#C4");
305 Assert.IsFalse (nodeA.IsSelected, "#C5");
306 Assert.IsTrue (nodeB.IsSelected, "#C6");
307 Assert.AreSame (nodeB, tvw.SelectedNode, "#C7");
312 public void CancelAfterCreationOfHandle ()
314 TreeView tvw = new TreeView ();
315 tvw.BeforeSelect += new TreeViewCancelEventHandler (TreeView_BeforeSelect);
318 Form form = new Form ();
319 form.ShowInTaskbar = false;
320 form.Controls.Add (tvw);
323 TreeNode nodeA = tvw.Nodes.Add ("A");
324 Assert.AreEqual (0, beforeSelect, "#A1");
325 tvw.SelectedNode = nodeA;
326 Assert.AreEqual (1, beforeSelect, "#A2");
327 Assert.IsNotNull (cancelEventArgs, "#A3");
328 Assert.AreEqual (TreeViewAction.Unknown, cancelEventArgs.Action, "#A4");
329 Assert.AreSame (nodeA, cancelEventArgs.Node, "#A5");
330 Assert.IsFalse (nodeA.IsSelected, "#A6");
331 Assert.IsNull (tvw.SelectedNode, "#A7");
333 TreeNode nodeB = tvw.Nodes.Add ("B");
334 Assert.AreEqual (1, beforeSelect, "#B1");
335 tvw.SelectedNode = nodeB;
336 Assert.AreEqual (2, beforeSelect, "#B2");
337 Assert.IsNotNull (cancelEventArgs, "#B3");
338 Assert.AreEqual (TreeViewAction.Unknown, cancelEventArgs.Action, "#B4");
339 Assert.AreSame (nodeB, cancelEventArgs.Node, "#B5");
340 Assert.IsFalse (nodeB.IsSelected, "#B6");
341 Assert.IsNull (tvw.SelectedNode, "#B7");
346 [Category ("NotWorking")]
347 public void SelectAfterCreationOfHandle ()
349 TreeView tvw = new TreeView ();
350 tvw.BeforeSelect += new TreeViewCancelEventHandler (TreeView_BeforeSelect);
352 Form form = new Form ();
353 form.ShowInTaskbar = false;
354 form.Controls.Add (tvw);
357 TreeNode nodeA = tvw.Nodes.Add ("A");
358 Assert.AreEqual (0, beforeSelect, "#A1");
359 tvw.SelectedNode = nodeA;
360 Assert.AreEqual (1, beforeSelect, "#A2");
361 Assert.IsNotNull (cancelEventArgs, "#A3");
362 Assert.AreEqual (TreeViewAction.Unknown, cancelEventArgs.Action, "#A4");
363 Assert.AreSame (nodeA, cancelEventArgs.Node, "#A5");
364 Assert.IsTrue (nodeA.IsSelected, "#A6");
365 Assert.AreSame (nodeA, tvw.SelectedNode, "#A7");
367 TreeNode nodeB = tvw.Nodes.Add ("B");
368 Assert.AreEqual (1, beforeSelect, "#B1");
369 tvw.SelectedNode = nodeB;
370 Assert.AreEqual (2, beforeSelect, "#B2");
371 Assert.IsNotNull (cancelEventArgs, "#B3");
372 Assert.AreEqual (TreeViewAction.Unknown, cancelEventArgs.Action, "#B4");
373 Assert.AreSame (nodeB, cancelEventArgs.Node, "#B5");
374 Assert.IsTrue (nodeB.IsSelected, "#B6");
375 Assert.AreSame (nodeB, tvw.SelectedNode, "#B7");
380 public class AfterSelectEvent
389 [Category ("NotWorking")]
390 public void SelectedNode_Created ()
392 TreeView tv = new TreeView ();
393 tv.AfterSelect += new TreeViewEventHandler (TreeView_AfterSelect);
394 TreeNode one = new TreeNode ("one");
395 TreeNode two = new TreeNode ("two");
400 Form form = new Form ();
401 form.ShowInTaskbar = false;
402 form.Controls.Add (tv);
405 Assert.IsNotNull (tv.SelectedNode, "#A1");
406 Assert.AreSame (one, tv.SelectedNode, "#A2");
407 Assert.IsTrue (one.IsSelected, "#A3");
408 Assert.IsFalse (two.IsSelected, "#A4");
409 Assert.AreEqual (1, afterSelect, "#A5");
411 tv.SelectedNode = null;
412 Assert.IsNull (tv.SelectedNode, "#C1");
413 Assert.IsFalse (one.IsSelected, "#C2");
414 Assert.IsFalse (two.IsSelected, "#C3");
415 Assert.AreEqual (1, afterSelect, "#C4");
417 tv.SelectedNode = two;
418 Assert.IsNotNull (tv.SelectedNode, "#D1");
419 Assert.AreSame (two, tv.SelectedNode, "#D2");
420 Assert.IsFalse (one.IsSelected, "#D3");
421 Assert.IsTrue (two.IsSelected, "#D4");
422 Assert.AreEqual (2, afterSelect, "#D5");
428 public void SelectedNode_NotCreated ()
430 TreeView tv = new TreeView ();
431 tv.AfterSelect += new TreeViewEventHandler (TreeView_AfterSelect);
432 TreeNode one = new TreeNode ("one");
433 TreeNode two = new TreeNode ("two");
438 Assert.IsNull (tv.SelectedNode, "#A1");
439 Assert.IsFalse (one.IsSelected, "#A2");
440 Assert.IsFalse (two.IsSelected, "#A3");
441 Assert.AreEqual (0, afterSelect, "#A4");
443 tv.SelectedNode = two;
444 Assert.IsNotNull (tv.SelectedNode, "#B1");
445 Assert.AreSame (two, tv.SelectedNode, "#B2");
446 Assert.IsFalse (one.IsSelected, "#B3");
447 Assert.IsFalse (two.IsSelected, "#B4");
448 Assert.AreEqual (0, afterSelect, "#B5");
450 tv.SelectedNode = null;
451 Assert.IsNull (tv.SelectedNode, "#C1");
452 Assert.IsFalse (one.IsSelected, "#C2");
453 Assert.IsFalse (two.IsSelected, "#C3");
454 Assert.AreEqual (0, afterSelect, "#C4");
456 tv.SelectedNode = one;
457 Assert.IsNotNull (tv.SelectedNode, "#D1");
458 Assert.AreSame (one, tv.SelectedNode, "#D2");
459 Assert.IsFalse (one.IsSelected, "#D3");
460 Assert.IsFalse (two.IsSelected, "#D4");
461 Assert.AreEqual (0, afterSelect, "#D5");
464 void TreeView_AfterSelect (object sender, TreeViewEventArgs e)
474 public class TreeViewNodeSorterTest {
475 static bool node_sorter_called;
478 public void SortedAfterTreeViewNodeSorterIsSetToSomething() {
479 TreeView t = new TreeView();
480 t.TreeViewNodeSorter = new NodeSorter();
481 Assert.IsTrue(t.Sorted);
485 public void SortedAfterTreeViewNodeSorterIsSetToNull() {
486 TreeView t = new TreeView();
487 t.TreeViewNodeSorter = null;
488 Assert.IsFalse(t.Sorted);
492 public void NormalTreeViewNodeSorter() {
493 TreeView t = new TreeView();
496 node_sorter_called = false;
497 t.TreeViewNodeSorter = new NodeSorter();
498 Assert.IsTrue(node_sorter_called, "Node sorter called");
499 Assert.IsTrue(t.Nodes[0].Text == "2", "Order");
503 public void NormalSorted() {
504 TreeView t = new TreeView();
508 Assert.IsTrue(t.Nodes[0].Text == "1", "Order");
512 public void SortedDoesNotSortWhenTreeViewNodeSorterIsSet() {
513 TreeView t = new TreeView();
516 t.TreeViewNodeSorter = new NodeSorter();
519 Assert.IsTrue(t.Nodes[0].Text == "2", "Order");
523 public void SortedDoesNotSortWhenItIsAlreadyTrue() {
524 TreeView t = new TreeView();
527 t.TreeViewNodeSorter = new NodeSorter();
528 t.TreeViewNodeSorter = null;
530 Assert.IsTrue(t.Nodes[0].Text == "2", "Order");
534 public void SortedSorts() {
535 TreeView t = new TreeView();
538 t.TreeViewNodeSorter = new NodeSorter();
539 t.TreeViewNodeSorter = null;
542 Assert.IsTrue(t.Nodes[0].Text == "1", "Order");
545 class NodeSorter : IComparer {
546 public int Compare(object x, object y) {
547 node_sorter_called = true;
550 return ((TreeNode)x).Text == "2" ? -1 : 1;