TreeViewTest.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448
  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. public void ExpandAll_Flat_Created ()
  51. {
  52. TreeView tv = new TreeView ();
  53. tv.Size = new Size (300, 100);
  54. for (int i = 0; i <= 100; i++)
  55. tv.Nodes.Add (i.ToString (CultureInfo.InvariantCulture));
  56. Form form = new Form ();
  57. form.ShowInTaskbar = false;
  58. form.Controls.Add (tv);
  59. form.Show ();
  60. Assert.IsFalse (tv.Nodes [0].IsExpanded, "#A1");
  61. Assert.IsFalse (tv.Nodes [99].IsExpanded, "#A2");
  62. Assert.IsTrue (tv.Nodes [0].IsVisible, "#B1");
  63. Assert.IsFalse (tv.Nodes [99].IsVisible, "#B2");
  64. tv.ExpandAll ();
  65. Assert.IsFalse (tv.Nodes [0].IsExpanded, "#C1");
  66. Assert.IsFalse (tv.Nodes [99].IsExpanded, "#C2");
  67. Assert.IsTrue (tv.Nodes [0].IsVisible, "#D1");
  68. Assert.IsFalse (tv.Nodes [99].IsVisible, "#D2");
  69. }
  70. [Test]
  71. public void ExpandAll_Tree_Created ()
  72. {
  73. TreeView tv = new TreeView ();
  74. tv.Size = new Size (300, 100);
  75. for (int i = 0; i <= 100; i++) {
  76. TreeNode node = tv.Nodes.Add (i.ToString (CultureInfo.InvariantCulture));
  77. node.Nodes.Add ("child");
  78. }
  79. Form form = new Form ();
  80. form.ShowInTaskbar = false;
  81. form.Controls.Add (tv);
  82. form.Show ();
  83. Assert.IsFalse (tv.Nodes [0].IsExpanded, "#A1");
  84. Assert.IsFalse (tv.Nodes [99].IsExpanded, "#A2");
  85. Assert.IsTrue (tv.Nodes [0].IsVisible, "#B1");
  86. Assert.IsFalse (tv.Nodes [99].IsVisible, "#B2");
  87. tv.ExpandAll ();
  88. Assert.IsTrue (tv.Nodes [0].IsExpanded, "#C1");
  89. Assert.IsTrue (tv.Nodes [99].IsExpanded, "#C2");
  90. Assert.IsFalse (tv.Nodes [0].IsVisible, "#D1");
  91. Assert.IsTrue (tv.Nodes [99].IsVisible, "#D2");
  92. }
  93. [Test]
  94. public void ExpandAll_Flat_NotCreated ()
  95. {
  96. TreeView tv = new TreeView ();
  97. tv.Size = new Size (300, 100);
  98. for (int i = 0; i <= 100; i++)
  99. tv.Nodes.Add (i.ToString (CultureInfo.InvariantCulture));
  100. Assert.IsFalse (tv.Nodes [0].IsExpanded, "#A1");
  101. Assert.IsFalse (tv.Nodes [99].IsExpanded, "#A2");
  102. Assert.IsFalse (tv.Nodes [0].IsVisible, "#B1");
  103. Assert.IsFalse (tv.Nodes [99].IsVisible, "#B2");
  104. tv.ExpandAll ();
  105. Assert.IsTrue (tv.Nodes [0].IsExpanded, "#C1");
  106. Assert.IsTrue (tv.Nodes [99].IsExpanded, "#C2");
  107. Assert.IsFalse (tv.Nodes [0].IsVisible, "#D1");
  108. Assert.IsFalse (tv.Nodes [99].IsVisible, "#D2");
  109. Form form = new Form ();
  110. form.ShowInTaskbar = false;
  111. form.Controls.Add (tv);
  112. form.Show ();
  113. Assert.IsFalse (tv.Nodes [0].IsExpanded, "#E1");
  114. Assert.IsFalse (tv.Nodes [99].IsExpanded, "#E2");
  115. Assert.IsTrue (tv.Nodes [0].IsVisible, "#F1");
  116. Assert.IsFalse (tv.Nodes [99].IsVisible, "#F2");
  117. form.Dispose ();
  118. }
  119. [Test] // bug #80284
  120. public void ExpandAll_Tree_NotCreated ()
  121. {
  122. TreeView tv = new TreeView ();
  123. tv.Size = new Size (300, 100);
  124. for (int i = 0; i <= 100; i++) {
  125. TreeNode node = tv.Nodes.Add (i.ToString (CultureInfo.InvariantCulture));
  126. node.Nodes.Add ("child");
  127. }
  128. Assert.IsFalse (tv.Nodes [0].IsExpanded, "#A1");
  129. Assert.IsFalse (tv.Nodes [99].IsExpanded, "#A2");
  130. Assert.IsFalse (tv.Nodes [0].IsVisible, "#B1");
  131. Assert.IsFalse (tv.Nodes [99].IsVisible, "#B2");
  132. tv.ExpandAll ();
  133. Assert.IsTrue (tv.Nodes [0].IsExpanded, "#C1");
  134. Assert.IsTrue (tv.Nodes [99].IsExpanded, "#C2");
  135. Assert.IsFalse (tv.Nodes [0].IsVisible, "#D1");
  136. Assert.IsFalse (tv.Nodes [99].IsVisible, "#D2");
  137. Form form = new Form ();
  138. form.ShowInTaskbar = false;
  139. form.Controls.Add (tv);
  140. form.Show ();
  141. Assert.IsTrue (tv.Nodes [0].IsExpanded, "#E1");
  142. Assert.IsTrue (tv.Nodes [99].IsExpanded, "#E2");
  143. #if NET_2_0
  144. Assert.IsTrue (tv.Nodes [0].IsVisible, "#F1");
  145. Assert.IsFalse (tv.Nodes [99].IsVisible, "#F2");
  146. #else
  147. Assert.IsFalse (tv.Nodes [0].IsVisible, "#F1");
  148. Assert.IsTrue (tv.Nodes [99].IsVisible, "#F2");
  149. #endif
  150. form.Dispose ();
  151. }
  152. }
  153. [TestFixture]
  154. public class BeforeSelectEvent
  155. {
  156. int beforeSelect;
  157. TreeViewCancelEventArgs cancelEventArgs;
  158. bool cancel;
  159. public void TreeView_BeforeSelect (object sender, TreeViewCancelEventArgs e)
  160. {
  161. beforeSelect++;
  162. cancelEventArgs = e;
  163. if (cancel)
  164. e.Cancel = true;
  165. }
  166. [SetUp]
  167. public void SetUp ()
  168. {
  169. beforeSelect = 0;
  170. cancelEventArgs = null;
  171. cancel = false;
  172. }
  173. [Test]
  174. [Category ("NotWorking")]
  175. public void CancelBeforeCreationOfHandle ()
  176. {
  177. TreeView tvw = new TreeView ();
  178. tvw.BeforeSelect += new TreeViewCancelEventHandler (TreeView_BeforeSelect);
  179. cancel = true;
  180. TreeNode nodeA = tvw.Nodes.Add ("A");
  181. Assert.AreEqual (0, beforeSelect, "#A1");
  182. tvw.SelectedNode = nodeA;
  183. Assert.AreEqual (0, beforeSelect, "#A2");
  184. Assert.IsNull (cancelEventArgs, "#A3");
  185. Assert.IsFalse (nodeA.IsSelected, "#A4");
  186. Assert.AreSame (nodeA, tvw.SelectedNode, "#A5");
  187. TreeNode nodeB = tvw.Nodes.Add ("B");
  188. Assert.AreEqual (0, beforeSelect, "#B1");
  189. tvw.SelectedNode = nodeB;
  190. Assert.AreEqual (0, beforeSelect, "#B2");
  191. Assert.IsNull (cancelEventArgs, "#B3");
  192. Assert.IsFalse (nodeB.IsSelected, "#B4");
  193. Assert.AreSame (nodeB, tvw.SelectedNode, "#B5");
  194. Form form = new Form ();
  195. form.ShowInTaskbar = false;
  196. form.Controls.Add (tvw);
  197. form.Show ();
  198. Assert.AreEqual (2, beforeSelect, "#C1");
  199. Assert.IsNotNull (cancelEventArgs, "#C2");
  200. Assert.AreEqual (TreeViewAction.Unknown, cancelEventArgs.Action, "#C3");
  201. Assert.AreSame (nodeA, cancelEventArgs.Node, "#C4");
  202. Assert.IsFalse (nodeA.IsSelected, "#C5");
  203. Assert.IsFalse (nodeB.IsSelected, "#C6");
  204. Assert.IsNull (tvw.SelectedNode, "#C7");
  205. }
  206. [Test]
  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. public void CancelAfterCreationOfHandle ()
  239. {
  240. TreeView tvw = new TreeView ();
  241. tvw.BeforeSelect += new TreeViewCancelEventHandler (TreeView_BeforeSelect);
  242. cancel = true;
  243. Form form = new Form ();
  244. form.ShowInTaskbar = false;
  245. form.Controls.Add (tvw);
  246. form.Show ();
  247. TreeNode nodeA = tvw.Nodes.Add ("A");
  248. Assert.AreEqual (0, beforeSelect, "#A1");
  249. tvw.SelectedNode = nodeA;
  250. Assert.AreEqual (1, beforeSelect, "#A2");
  251. Assert.IsNotNull (cancelEventArgs, "#A3");
  252. Assert.AreEqual (TreeViewAction.Unknown, cancelEventArgs.Action, "#A4");
  253. Assert.AreSame (nodeA, cancelEventArgs.Node, "#A5");
  254. Assert.IsFalse (nodeA.IsSelected, "#A6");
  255. Assert.IsNull (tvw.SelectedNode, "#A7");
  256. TreeNode nodeB = tvw.Nodes.Add ("B");
  257. Assert.AreEqual (1, beforeSelect, "#B1");
  258. tvw.SelectedNode = nodeB;
  259. Assert.AreEqual (2, beforeSelect, "#B2");
  260. Assert.IsNotNull (cancelEventArgs, "#B3");
  261. Assert.AreEqual (TreeViewAction.Unknown, cancelEventArgs.Action, "#B4");
  262. Assert.AreSame (nodeB, cancelEventArgs.Node, "#B5");
  263. Assert.IsFalse (nodeB.IsSelected, "#B6");
  264. Assert.IsNull (tvw.SelectedNode, "#B7");
  265. }
  266. [Test]
  267. [Category ("NotWorking")]
  268. public void SelectAfterCreationOfHandle ()
  269. {
  270. TreeView tvw = new TreeView ();
  271. tvw.BeforeSelect += new TreeViewCancelEventHandler (TreeView_BeforeSelect);
  272. Form form = new Form ();
  273. form.ShowInTaskbar = false;
  274. form.Controls.Add (tvw);
  275. form.Show ();
  276. TreeNode nodeA = tvw.Nodes.Add ("A");
  277. Assert.AreEqual (0, beforeSelect, "#A1");
  278. tvw.SelectedNode = nodeA;
  279. Assert.AreEqual (1, beforeSelect, "#A2");
  280. Assert.IsNotNull (cancelEventArgs, "#A3");
  281. Assert.AreEqual (TreeViewAction.Unknown, cancelEventArgs.Action, "#A4");
  282. Assert.AreSame (nodeA, cancelEventArgs.Node, "#A5");
  283. Assert.IsTrue (nodeA.IsSelected, "#A6");
  284. Assert.AreSame (nodeA, tvw.SelectedNode, "#A7");
  285. TreeNode nodeB = tvw.Nodes.Add ("B");
  286. Assert.AreEqual (1, beforeSelect, "#B1");
  287. tvw.SelectedNode = nodeB;
  288. Assert.AreEqual (2, beforeSelect, "#B2");
  289. Assert.IsNotNull (cancelEventArgs, "#B3");
  290. Assert.AreEqual (TreeViewAction.Unknown, cancelEventArgs.Action, "#B4");
  291. Assert.AreSame (nodeB, cancelEventArgs.Node, "#B5");
  292. Assert.IsTrue (nodeB.IsSelected, "#B6");
  293. Assert.AreSame (nodeB, tvw.SelectedNode, "#B7");
  294. }
  295. }
  296. #if NET_2_0
  297. [TestFixture]
  298. public class TreeViewNodeSorterTest {
  299. static bool node_sorter_called;
  300. [Test]
  301. public void SortedAfterTreeViewNodeSorterIsSetToSomething() {
  302. TreeView t = new TreeView();
  303. t.TreeViewNodeSorter = new NodeSorter();
  304. Assert.IsTrue(t.Sorted);
  305. }
  306. [Test]
  307. public void SortedAfterTreeViewNodeSorterIsSetToNull() {
  308. TreeView t = new TreeView();
  309. t.TreeViewNodeSorter = null;
  310. Assert.IsFalse(t.Sorted);
  311. }
  312. [Test]
  313. public void NormalTreeViewNodeSorter() {
  314. TreeView t = new TreeView();
  315. t.Nodes.Add("2");
  316. t.Nodes.Add("1");
  317. node_sorter_called = false;
  318. t.TreeViewNodeSorter = new NodeSorter();
  319. Assert.IsTrue(node_sorter_called, "Node sorter called");
  320. Assert.IsTrue(t.Nodes[0].Text == "2", "Order");
  321. }
  322. [Test]
  323. public void NormalSorted() {
  324. TreeView t = new TreeView();
  325. t.Nodes.Add("2");
  326. t.Nodes.Add("1");
  327. t.Sorted = true;
  328. Assert.IsTrue(t.Nodes[0].Text == "1", "Order");
  329. }
  330. [Test]
  331. public void SortedDoesNotSortWhenTreeViewNodeSorterIsSet() {
  332. TreeView t = new TreeView();
  333. t.Nodes.Add("2");
  334. t.Nodes.Add("1");
  335. t.TreeViewNodeSorter = new NodeSorter();
  336. t.Sorted = false;
  337. t.Sorted = true;
  338. Assert.IsTrue(t.Nodes[0].Text == "2", "Order");
  339. }
  340. [Test]
  341. public void SortedDoesNotSortWhenItIsAlreadyTrue() {
  342. TreeView t = new TreeView();
  343. t.Nodes.Add("2");
  344. t.Nodes.Add("1");
  345. t.TreeViewNodeSorter = new NodeSorter();
  346. t.TreeViewNodeSorter = null;
  347. t.Sorted = true;
  348. Assert.IsTrue(t.Nodes[0].Text == "2", "Order");
  349. }
  350. [Test]
  351. public void SortedSorts() {
  352. TreeView t = new TreeView();
  353. t.Nodes.Add("2");
  354. t.Nodes.Add("1");
  355. t.TreeViewNodeSorter = new NodeSorter();
  356. t.TreeViewNodeSorter = null;
  357. t.Sorted = false;
  358. t.Sorted = true;
  359. Assert.IsTrue(t.Nodes[0].Text == "1", "Order");
  360. }
  361. class NodeSorter : IComparer {
  362. public int Compare(object x, object y) {
  363. node_sorter_called = true;
  364. if (x == y)
  365. return 0;
  366. return ((TreeNode)x).Text == "2" ? -1 : 1;
  367. }
  368. }
  369. }
  370. #endif
  371. }