TreeNodeCollectionTest.cs 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298
  1. using System;
  2. using System.Collections;
  3. using System.Drawing;
  4. using System.Windows.Forms;
  5. using NUnit.Framework;
  6. namespace MonoTests.System.Windows.Forms
  7. {
  8. [TestFixture]
  9. public class TreeNodeCollectionTest
  10. {
  11. [Test]
  12. public void Add()
  13. {
  14. ImageList imglist = null;
  15. TestHelper.RemoveWarning (imglist);
  16. TreeView tv = new TreeView();
  17. tv.Nodes.Add("text");
  18. Assert.AreEqual(1, tv.Nodes.Count, "#A1");
  19. Assert.AreEqual("text", tv.Nodes[0].Text, "#A2");
  20. #if NET_2_0
  21. Assert.AreEqual("", tv.Nodes[0].Name, "#A3");
  22. #endif
  23. tv.Nodes.Clear();
  24. tv.Nodes.Add(new TreeNode());
  25. Assert.AreEqual("", tv.Nodes[0].Text, "#B1");
  26. #if NET_2_0
  27. Assert.AreEqual("", tv.Nodes[0].Name, "#B2");
  28. #endif
  29. #if NET_2_0
  30. tv.Nodes.Clear();
  31. tv.Nodes.Add("key", "text");
  32. Assert.AreEqual("text", tv.Nodes[0].Text, "#C1");
  33. Assert.AreEqual("key", tv.Nodes[0].Name, "#C2");
  34. #endif
  35. #if NET_2_0
  36. tv.Nodes.Clear();
  37. imglist = new ImageList();
  38. imglist.Images.Add("image key", new Bitmap(16, 16));
  39. tv.Nodes.Add("key", "text", 0);
  40. Assert.AreEqual("text", tv.Nodes[0].Text, "#D1");
  41. Assert.AreEqual("key", tv.Nodes[0].Name, "#D2");
  42. Assert.AreEqual(0, tv.Nodes[0].ImageIndex, "#D3");
  43. Assert.AreEqual("", tv.Nodes[0].ImageKey, "#D4");
  44. #endif
  45. #if NET_2_0
  46. tv.Nodes.Clear();
  47. imglist = new ImageList();
  48. imglist.Images.Add("image key", new Bitmap(16, 16));
  49. tv.Nodes.Add("key", "text", "image key");
  50. Assert.AreEqual("text", tv.Nodes[0].Text, "#E1");
  51. Assert.AreEqual("key", tv.Nodes[0].Name, "#E2");
  52. Assert.AreEqual(-1, tv.Nodes[0].ImageIndex, "#E3");
  53. Assert.AreEqual("image key", tv.Nodes[0].ImageKey, "#E4");
  54. #endif
  55. #if NET_2_0
  56. tv.Nodes.Clear();
  57. imglist = new ImageList();
  58. imglist.Images.Add("image key", new Bitmap(16, 16));
  59. imglist.Images.Add("selected image key", new Bitmap(16, 16));
  60. tv.Nodes.Add("key", "text", 0, 1);
  61. Assert.AreEqual("text", tv.Nodes[0].Text, "#F1");
  62. Assert.AreEqual("key", tv.Nodes[0].Name, "#F2");
  63. Assert.AreEqual(0, tv.Nodes[0].ImageIndex, "#F3");
  64. Assert.AreEqual("", tv.Nodes[0].ImageKey, "#F4");
  65. Assert.AreEqual(1, tv.Nodes[0].SelectedImageIndex, "#F5");
  66. Assert.AreEqual("", tv.Nodes[0].SelectedImageKey, "#F6");
  67. #endif
  68. #if NET_2_0
  69. tv.Nodes.Clear();
  70. imglist = new ImageList();
  71. imglist.Images.Add("image key", new Bitmap(16, 16));
  72. imglist.Images.Add("selected image key", new Bitmap(16, 16));
  73. tv.Nodes.Add("key", "text", "image key", "selected image key");
  74. Assert.AreEqual("text", tv.Nodes[0].Text, "#G1");
  75. Assert.AreEqual("key", tv.Nodes[0].Name, "#G2");
  76. Assert.AreEqual(-1, tv.Nodes[0].ImageIndex, "#G3");
  77. Assert.AreEqual("image key", tv.Nodes[0].ImageKey, "#G4");
  78. Assert.AreEqual(-1, tv.Nodes[0].SelectedImageIndex, "#G5");
  79. Assert.AreEqual("selected image key", tv.Nodes[0].SelectedImageKey, "#G6");
  80. #endif
  81. #if NET_2_0
  82. tv.Nodes.Clear();
  83. tv.Nodes.Add("key", "text");
  84. tv.Nodes.Add("key", "text 2");
  85. Assert.AreEqual(2, tv.Nodes.Count, "#H1");
  86. Assert.AreEqual("text", tv.Nodes[0].Text, "#H1");
  87. Assert.AreEqual("key", tv.Nodes[0].Name, "#H2");
  88. Assert.AreEqual("text 2", tv.Nodes[1].Text, "#H1");
  89. Assert.AreEqual("key", tv.Nodes[1].Name, "#H2");
  90. Assert.IsTrue(tv.Nodes.ContainsKey("key"), "#I1");
  91. Assert.AreEqual(0, tv.Nodes.IndexOfKey("key"), "#I2");
  92. #endif
  93. }
  94. [Test]
  95. public void Remove ()
  96. {
  97. TreeView tv = new TreeView ();
  98. TreeNode nodeA = tv.Nodes.Add ("A");
  99. TreeNode nodeB = tv.Nodes.Add ("B");
  100. TreeNode nodeC = tv.Nodes.Add ("C");
  101. Assert.AreEqual (3, tv.Nodes.Count, "#A1");
  102. Assert.AreSame (nodeA, tv.Nodes [0], "#A2");
  103. Assert.AreSame (nodeB, tv.Nodes [1], "#A3");
  104. Assert.AreSame (nodeC, tv.Nodes [2], "#A3");
  105. tv.Nodes.Remove (nodeB);
  106. Assert.AreEqual (2, tv.Nodes.Count, "#B1");
  107. Assert.AreSame (nodeA, tv.Nodes [0], "#B2");
  108. Assert.AreSame (nodeC, tv.Nodes [1], "#B3");
  109. tv.Nodes.Remove (nodeA);
  110. Assert.AreEqual (1, tv.Nodes.Count, "#C1");
  111. Assert.AreSame (nodeC, tv.Nodes [0], "#C2");
  112. tv.Nodes.Remove (nodeC);
  113. Assert.AreEqual (0, tv.Nodes.Count, "#D1");
  114. }
  115. [Test]
  116. #if ONLY_1_1
  117. [ExpectedException (typeof (NullReferenceException))]
  118. #endif
  119. public void Remove_NotInCollection ()
  120. {
  121. TreeView tv = new TreeView ();
  122. TreeNode nodeA = tv.Nodes.Add ("A");
  123. tv.Nodes.Remove (nodeA);
  124. tv.Nodes.Remove (nodeA);
  125. }
  126. [Test]
  127. [ExpectedException (typeof (NullReferenceException))]
  128. public void Remove_Null ()
  129. {
  130. TreeView tv = new TreeView ();
  131. tv.Nodes.Remove (null);
  132. }
  133. [Test]
  134. public void Enumerator_Reset ()
  135. {
  136. TreeView tv = new TreeView ();
  137. TreeNode nodeA = tv.Nodes.Add ("A");
  138. IEnumerator enumerator = tv.Nodes.GetEnumerator ();
  139. Assert.IsNull (enumerator.Current, "#A1");
  140. Assert.IsTrue (enumerator.MoveNext (), "#A2");
  141. Assert.IsNotNull (enumerator.Current, "#A3");
  142. Assert.AreSame (nodeA, enumerator.Current, "#A4");
  143. Assert.IsFalse (enumerator.MoveNext (), "#A5");
  144. enumerator.Reset ();
  145. Assert.IsNull (enumerator.Current, "#B1");
  146. Assert.IsTrue (enumerator.MoveNext (), "#B2");
  147. Assert.IsNotNull (enumerator.Current, "#B3");
  148. Assert.AreSame (nodeA, enumerator.Current, "#B4");
  149. Assert.IsFalse (enumerator.MoveNext (), "#B5");
  150. }
  151. [Test]
  152. public void Enumerator_MoveNext ()
  153. {
  154. TreeView tv = new TreeView ();
  155. TreeNode nodeA = tv.Nodes.Add ("A");
  156. TestHelper.RemoveWarning (nodeA);
  157. IEnumerator enumerator = tv.Nodes.GetEnumerator ();
  158. Assert.IsTrue (enumerator.MoveNext (), "#A1");
  159. Assert.IsFalse (enumerator.MoveNext (), "#A2");
  160. Assert.IsFalse (enumerator.MoveNext (), "#A3");
  161. tv = new TreeView ();
  162. enumerator = tv.Nodes.GetEnumerator ();
  163. Assert.IsFalse (enumerator.MoveNext (), "#B1");
  164. Assert.IsFalse (enumerator.MoveNext (), "#B2");
  165. }
  166. [Test]
  167. public void Enumerator_Current ()
  168. {
  169. TreeView tv = new TreeView ();
  170. TreeNode nodeA = tv.Nodes.Add ("A");
  171. TreeNode nodeB = tv.Nodes.Add ("B");
  172. IEnumerator enumerator = tv.Nodes.GetEnumerator ();
  173. Assert.IsNull (enumerator.Current, "#A1");
  174. enumerator.MoveNext ();
  175. Assert.IsNotNull (enumerator.Current, "#A2");
  176. Assert.AreSame (nodeA, enumerator.Current, "#A3");
  177. enumerator.MoveNext ();
  178. Assert.IsNotNull (enumerator.Current, "#A4");
  179. Assert.AreSame (nodeB, enumerator.Current, "#A5");
  180. enumerator.MoveNext ();
  181. Assert.IsNotNull (enumerator.Current, "#A6");
  182. Assert.AreSame (nodeB, enumerator.Current, "#A7");
  183. tv = new TreeView ();
  184. enumerator = tv.Nodes.GetEnumerator ();
  185. Assert.IsNull (enumerator.Current, "#B1");
  186. enumerator.MoveNext ();
  187. Assert.IsNull (enumerator.Current, "#B2");
  188. }
  189. [Test]
  190. public void IList_Indexer_Get ()
  191. {
  192. TreeView tv = new TreeView ();
  193. TreeNode nodeA = tv.Nodes.Add ("A");
  194. TreeNode nodeB = tv.Nodes.Add ("B");
  195. TreeNode nodeC = tv.Nodes.Add ("C");
  196. IList list = (IList) tv.Nodes;
  197. Assert.AreSame (nodeA, list [0], "#A1");
  198. Assert.AreSame (nodeB, list [1], "#A2");
  199. Assert.AreSame (nodeC, list [2], "#A3");
  200. try {
  201. object item = list [3];
  202. Assert.Fail ("#B1: " + item);
  203. } catch (ArgumentOutOfRangeException ex) {
  204. Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#B2");
  205. Assert.IsNull (ex.ActualValue, "#B3");
  206. Assert.IsNull (ex.InnerException, "#B4");
  207. Assert.AreEqual ("index", ex.ParamName, "#B5");
  208. }
  209. try {
  210. object item = list [-1];
  211. Assert.Fail ("#C1: " + item);
  212. } catch (ArgumentOutOfRangeException ex) {
  213. Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#C2");
  214. Assert.IsNull (ex.ActualValue, "#C3");
  215. Assert.IsNull (ex.InnerException, "#C4");
  216. Assert.AreEqual ("index", ex.ParamName, "#C5");
  217. }
  218. }
  219. [Test]
  220. public void IList_Indexer_Set ()
  221. {
  222. TreeView tv = new TreeView ();
  223. TreeNode nodeA = tv.Nodes.Add ("A");
  224. IList list = (IList) tv.Nodes;
  225. TreeNode nodeB = new TreeNode ("B");
  226. list [0] = nodeB;
  227. Assert.AreSame (nodeB, list [0], "#A1");
  228. try {
  229. list [1] = nodeA;
  230. Assert.Fail ("#B1");
  231. } catch (ArgumentOutOfRangeException ex) {
  232. Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#B2");
  233. Assert.IsNull (ex.ActualValue, "#B3");
  234. Assert.IsNull (ex.InnerException, "#B4");
  235. #if NET_2_0
  236. Assert.AreEqual ("index", ex.ParamName, "#B5");
  237. #endif
  238. }
  239. try {
  240. list [-1] = nodeA;
  241. Assert.Fail ("#C1");
  242. } catch (ArgumentOutOfRangeException ex) {
  243. Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#C2");
  244. Assert.IsNull (ex.ActualValue, "#C3");
  245. Assert.IsNull (ex.InnerException, "#C4");
  246. #if NET_2_0
  247. Assert.AreEqual ("index", ex.ParamName, "#C5");
  248. #endif
  249. }
  250. try {
  251. list [0] = "whatever";
  252. Assert.Fail ("#D1");
  253. } catch (ArgumentException ex) {
  254. Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#D2");
  255. Assert.IsNull (ex.InnerException, "#D3");
  256. Assert.IsNull (ex.ParamName, "#D4");
  257. }
  258. }
  259. }
  260. }