TreeViewTest.cs 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365
  1. using System;
  2. using System.Collections;
  3. using System.Drawing;
  4. using System.Globalization;
  5. using System.Windows.Forms;
  6. using NUnit.Framework;
  7. namespace MonoTests.System.Windows.Forms
  8. {
  9. [TestFixture]
  10. public class TreeViewTest
  11. {
  12. [Test]
  13. public void DefaultCtor ()
  14. {
  15. TreeView tv = new TreeView ();
  16. Assert.AreEqual (121, tv.Width, "#1");
  17. Assert.AreEqual (97, tv.Height, "#2");
  18. Assert.IsTrue (tv.Scrollable, "#3");
  19. Assert.AreEqual (tv.SelectedNode, null, "#4");
  20. }
  21. [Test]
  22. public void SimpleShowTest ()
  23. {
  24. Form f = new Form ();
  25. f.ShowInTaskbar = false;
  26. TreeView tv = new TreeView ();
  27. //tv.BorderStyle = BorderStyle.FixedSingle;
  28. tv.Location = new Point (20, 20);
  29. //tv.Text = "adssssss";
  30. f.Controls.Add (tv);
  31. f.Show ();
  32. f.Dispose ();
  33. }
  34. [Test]
  35. public void NodesCopyToTest ()
  36. {
  37. TreeView tv = new TreeView();
  38. TreeNode one = new TreeNode ("one");
  39. TreeNode two = new TreeNode ("two");
  40. TreeNode three = new TreeNode ("three");
  41. tv.Nodes.Add (one);
  42. tv.Nodes.Add (two);
  43. tv.Nodes.Add (three);
  44. ArrayList al = new ArrayList (tv.Nodes);
  45. Assert.AreEqual (al [0], tv.Nodes [0], "A1");
  46. Assert.AreEqual (al [1], tv.Nodes [1], "A2");
  47. Assert.AreEqual (al [2], tv.Nodes [2], "A3");
  48. }
  49. [Test]
  50. [Category ("NotWorking")] // #B2 fails (and more)
  51. public void ExpandAll_Flat_Created ()
  52. {
  53. TreeView tv = new TreeView ();
  54. tv.Size = new Size (300, 100);
  55. for (int i = 0; i <= 100; i++)
  56. tv.Nodes.Add (i.ToString (CultureInfo.InvariantCulture));
  57. Form form = new Form ();
  58. form.ShowInTaskbar = false;
  59. form.Controls.Add (tv);
  60. form.Show ();
  61. Assert.IsFalse (tv.Nodes [0].IsExpanded, "#A1");
  62. Assert.IsFalse (tv.Nodes [99].IsExpanded, "#A2");
  63. Assert.IsTrue (tv.Nodes [0].IsVisible, "#B1");
  64. Assert.IsFalse (tv.Nodes [99].IsVisible, "#B2");
  65. tv.ExpandAll ();
  66. Assert.IsFalse (tv.Nodes [0].IsExpanded, "#C1");
  67. Assert.IsFalse (tv.Nodes [99].IsExpanded, "#C2");
  68. Assert.IsTrue (tv.Nodes [0].IsVisible, "#D1");
  69. Assert.IsFalse (tv.Nodes [99].IsVisible, "#D2");
  70. }
  71. [Test]
  72. [Category ("NotWorking")] // #B2 fails (and more)
  73. public void ExpandAll_Tree_Created ()
  74. {
  75. TreeView tv = new TreeView ();
  76. tv.Size = new Size (300, 100);
  77. for (int i = 0; i <= 100; i++) {
  78. TreeNode node = tv.Nodes.Add (i.ToString (CultureInfo.InvariantCulture));
  79. node.Nodes.Add ("child");
  80. }
  81. Form form = new Form ();
  82. form.ShowInTaskbar = false;
  83. form.Controls.Add (tv);
  84. form.Show ();
  85. Assert.IsFalse (tv.Nodes [0].IsExpanded, "#A1");
  86. Assert.IsFalse (tv.Nodes [99].IsExpanded, "#A2");
  87. Assert.IsTrue (tv.Nodes [0].IsVisible, "#B1");
  88. Assert.IsFalse (tv.Nodes [99].IsVisible, "#B2");
  89. tv.ExpandAll ();
  90. Assert.IsTrue (tv.Nodes [0].IsExpanded, "#C1");
  91. Assert.IsTrue (tv.Nodes [99].IsExpanded, "#C2");
  92. Assert.IsFalse (tv.Nodes [0].IsVisible, "#D1");
  93. Assert.IsTrue (tv.Nodes [99].IsVisible, "#D2");
  94. }
  95. [Test]
  96. [Category ("NotWorking")] // #B1 fails (and more)
  97. public void ExpandAll_Flat_NotCreated ()
  98. {
  99. TreeView tv = new TreeView ();
  100. tv.Size = new Size (300, 100);
  101. for (int i = 0; i <= 100; i++)
  102. tv.Nodes.Add (i.ToString (CultureInfo.InvariantCulture));
  103. Assert.IsFalse (tv.Nodes [0].IsExpanded, "#A1");
  104. Assert.IsFalse (tv.Nodes [99].IsExpanded, "#A2");
  105. Assert.IsFalse (tv.Nodes [0].IsVisible, "#B1");
  106. Assert.IsFalse (tv.Nodes [99].IsVisible, "#B2");
  107. tv.ExpandAll ();
  108. Assert.IsTrue (tv.Nodes [0].IsExpanded, "#C1");
  109. Assert.IsTrue (tv.Nodes [99].IsExpanded, "#C2");
  110. Assert.IsFalse (tv.Nodes [0].IsVisible, "#D1");
  111. Assert.IsFalse (tv.Nodes [99].IsVisible, "#D2");
  112. Form form = new Form ();
  113. form.ShowInTaskbar = false;
  114. form.Controls.Add (tv);
  115. form.Show ();
  116. Assert.IsTrue (tv.Nodes [0].IsExpanded, "#E1");
  117. Assert.IsTrue (tv.Nodes [99].IsExpanded, "#E2");
  118. Assert.IsTrue (tv.Nodes [0].IsVisible, "#F1");
  119. Assert.IsFalse (tv.Nodes [99].IsVisible, "#F2");
  120. form.Dispose ();
  121. }
  122. [Test] // bug #80284
  123. [Category ("NotWorking")]
  124. public void ExpandAll_Tree_NotCreated ()
  125. {
  126. TreeView tv = new TreeView ();
  127. tv.Size = new Size (300, 100);
  128. for (int i = 0; i <= 100; i++) {
  129. TreeNode node = tv.Nodes.Add (i.ToString (CultureInfo.InvariantCulture));
  130. node.Nodes.Add ("child");
  131. }
  132. Assert.IsFalse (tv.Nodes [0].IsExpanded, "#A1");
  133. Assert.IsFalse (tv.Nodes [99].IsExpanded, "#A2");
  134. Assert.IsFalse (tv.Nodes [0].IsVisible, "#B1");
  135. Assert.IsFalse (tv.Nodes [99].IsVisible, "#B2");
  136. tv.ExpandAll ();
  137. Assert.IsTrue (tv.Nodes [0].IsExpanded, "#C1");
  138. Assert.IsTrue (tv.Nodes [99].IsExpanded, "#C2");
  139. Assert.IsFalse (tv.Nodes [0].IsVisible, "#D1");
  140. Assert.IsFalse (tv.Nodes [99].IsVisible, "#D2");
  141. Form form = new Form ();
  142. form.ShowInTaskbar = false;
  143. form.Controls.Add (tv);
  144. form.Show ();
  145. Assert.IsTrue (tv.Nodes [0].IsExpanded, "#E1");
  146. Assert.IsTrue (tv.Nodes [99].IsExpanded, "#E2");
  147. Assert.IsFalse (tv.Nodes [0].IsVisible, "#F1");
  148. Assert.IsTrue (tv.Nodes [99].IsVisible, "#F2");
  149. form.Dispose ();
  150. }
  151. }
  152. [TestFixture]
  153. public class BeforeSelectEvent
  154. {
  155. int beforeSelect;
  156. TreeViewCancelEventArgs cancelEventArgs;
  157. bool cancel;
  158. public void TreeView_BeforeSelect (object sender, TreeViewCancelEventArgs e)
  159. {
  160. beforeSelect++;
  161. cancelEventArgs = e;
  162. if (cancel)
  163. e.Cancel = true;
  164. }
  165. [SetUp]
  166. public void SetUp ()
  167. {
  168. beforeSelect = 0;
  169. cancelEventArgs = null;
  170. cancel = false;
  171. }
  172. [Test]
  173. [Category ("NotWorking")]
  174. public void CancelBeforeCreationOfHandle ()
  175. {
  176. TreeView tvw = new TreeView ();
  177. tvw.BeforeSelect += new TreeViewCancelEventHandler (TreeView_BeforeSelect);
  178. cancel = true;
  179. TreeNode nodeA = tvw.Nodes.Add ("A");
  180. Assert.AreEqual (0, beforeSelect, "#A1");
  181. tvw.SelectedNode = nodeA;
  182. Assert.AreEqual (0, beforeSelect, "#A2");
  183. Assert.IsNull (cancelEventArgs, "#A3");
  184. Assert.IsFalse (nodeA.IsSelected, "#A4");
  185. Assert.AreSame (nodeA, tvw.SelectedNode, "#A5");
  186. TreeNode nodeB = tvw.Nodes.Add ("B");
  187. Assert.AreEqual (0, beforeSelect, "#B1");
  188. tvw.SelectedNode = nodeB;
  189. Assert.AreEqual (0, beforeSelect, "#B2");
  190. Assert.IsNull (cancelEventArgs, "#B3");
  191. Assert.IsFalse (nodeB.IsSelected, "#B4");
  192. Assert.AreSame (nodeB, tvw.SelectedNode, "#B5");
  193. Form form = new Form ();
  194. form.ShowInTaskbar = false;
  195. form.Controls.Add (tvw);
  196. form.Show ();
  197. Assert.AreEqual (2, beforeSelect, "#C1");
  198. Assert.IsNotNull (cancelEventArgs, "#C2");
  199. Assert.AreEqual (TreeViewAction.Unknown, cancelEventArgs.Action, "#C3");
  200. Assert.AreSame (nodeA, cancelEventArgs.Node, "#C4");
  201. Assert.IsFalse (nodeA.IsSelected, "#C5");
  202. Assert.IsFalse (nodeB.IsSelected, "#C6");
  203. Assert.IsNull (tvw.SelectedNode, "#C7");
  204. }
  205. [Test]
  206. [Category ("NotWorking")]
  207. public void SelectBeforeCreationOfHandle ()
  208. {
  209. TreeView tvw = new TreeView ();
  210. tvw.BeforeSelect += new TreeViewCancelEventHandler (TreeView_BeforeSelect);
  211. TreeNode nodeA = tvw.Nodes.Add ("A");
  212. Assert.AreEqual (0, beforeSelect, "#A1");
  213. tvw.SelectedNode = nodeA;
  214. Assert.AreEqual (0, beforeSelect, "#A2");
  215. Assert.IsNull (cancelEventArgs, "#A3");
  216. Assert.IsFalse (nodeA.IsSelected, "#A4");
  217. Assert.AreSame (nodeA, tvw.SelectedNode, "#A5");
  218. TreeNode nodeB = tvw.Nodes.Add ("B");
  219. Assert.AreEqual (0, beforeSelect, "#B1");
  220. tvw.SelectedNode = nodeB;
  221. Assert.AreEqual (0, beforeSelect, "#B2");
  222. Assert.IsNull (cancelEventArgs, "#B3");
  223. Assert.IsFalse (nodeB.IsSelected, "#B4");
  224. Assert.AreSame (nodeB, tvw.SelectedNode, "#B5");
  225. Form form = new Form ();
  226. form.ShowInTaskbar = false;
  227. form.Controls.Add (tvw);
  228. form.Show ();
  229. Assert.AreEqual (1, beforeSelect, "#C1");
  230. Assert.IsNotNull (cancelEventArgs, "#C2");
  231. Assert.AreEqual (TreeViewAction.Unknown, cancelEventArgs.Action, "#C3");
  232. Assert.AreSame (nodeB, cancelEventArgs.Node, "#C4");
  233. Assert.IsFalse (nodeA.IsSelected, "#C5");
  234. Assert.IsTrue (nodeB.IsSelected, "#C6");
  235. Assert.AreSame (nodeB, tvw.SelectedNode, "#C7");
  236. }
  237. [Test]
  238. [Category ("NotWorking")]
  239. public void CancelAfterCreationOfHandle ()
  240. {
  241. TreeView tvw = new TreeView ();
  242. tvw.BeforeSelect += new TreeViewCancelEventHandler (TreeView_BeforeSelect);
  243. cancel = true;
  244. Form form = new Form ();
  245. form.ShowInTaskbar = false;
  246. form.Controls.Add (tvw);
  247. form.Show ();
  248. TreeNode nodeA = tvw.Nodes.Add ("A");
  249. Assert.AreEqual (0, beforeSelect, "#A1");
  250. tvw.SelectedNode = nodeA;
  251. Assert.AreEqual (1, beforeSelect, "#A2");
  252. Assert.IsNotNull (cancelEventArgs, "#A3");
  253. Assert.AreEqual (TreeViewAction.Unknown, cancelEventArgs.Action, "#A4");
  254. Assert.AreSame (nodeA, cancelEventArgs.Node, "#A5");
  255. Assert.IsFalse (nodeA.IsSelected, "#A6");
  256. Assert.IsNull (tvw.SelectedNode, "#A7");
  257. TreeNode nodeB = tvw.Nodes.Add ("B");
  258. Assert.AreEqual (1, beforeSelect, "#B1");
  259. tvw.SelectedNode = nodeB;
  260. Assert.AreEqual (2, beforeSelect, "#B2");
  261. Assert.IsNotNull (cancelEventArgs, "#B3");
  262. Assert.AreEqual (TreeViewAction.Unknown, cancelEventArgs.Action, "#B4");
  263. Assert.AreSame (nodeB, cancelEventArgs.Node, "#B5");
  264. Assert.IsFalse (nodeB.IsSelected, "#B6");
  265. Assert.IsNull (tvw.SelectedNode, "#B7");
  266. }
  267. [Test]
  268. [Category ("NotWorking")]
  269. public void SelectAfterCreationOfHandle ()
  270. {
  271. TreeView tvw = new TreeView ();
  272. tvw.BeforeSelect += new TreeViewCancelEventHandler (TreeView_BeforeSelect);
  273. Form form = new Form ();
  274. form.ShowInTaskbar = false;
  275. form.Controls.Add (tvw);
  276. form.Show ();
  277. TreeNode nodeA = tvw.Nodes.Add ("A");
  278. Assert.AreEqual (0, beforeSelect, "#A1");
  279. tvw.SelectedNode = nodeA;
  280. Assert.AreEqual (1, beforeSelect, "#A2");
  281. Assert.IsNotNull (cancelEventArgs, "#A3");
  282. Assert.AreEqual (TreeViewAction.Unknown, cancelEventArgs.Action, "#A4");
  283. Assert.AreSame (nodeA, cancelEventArgs.Node, "#A5");
  284. Assert.IsTrue (nodeA.IsSelected, "#A6");
  285. Assert.AreSame (nodeA, tvw.SelectedNode, "#A7");
  286. TreeNode nodeB = tvw.Nodes.Add ("B");
  287. Assert.AreEqual (1, beforeSelect, "#B1");
  288. tvw.SelectedNode = nodeB;
  289. Assert.AreEqual (2, beforeSelect, "#B2");
  290. Assert.IsNotNull (cancelEventArgs, "#B3");
  291. Assert.AreEqual (TreeViewAction.Unknown, cancelEventArgs.Action, "#B4");
  292. Assert.AreSame (nodeB, cancelEventArgs.Node, "#B5");
  293. Assert.IsTrue (nodeB.IsSelected, "#B6");
  294. Assert.AreSame (nodeB, tvw.SelectedNode, "#B7");
  295. }
  296. }
  297. }