TreeNodeCollectionTest.cs 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  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 Remove ()
  13. {
  14. TreeView tv = new TreeView ();
  15. TreeNode nodeA = tv.Nodes.Add ("A");
  16. TreeNode nodeB = tv.Nodes.Add ("B");
  17. TreeNode nodeC = tv.Nodes.Add ("C");
  18. Assert.AreEqual (3, tv.Nodes.Count, "#A1");
  19. Assert.AreSame (nodeA, tv.Nodes [0], "#A2");
  20. Assert.AreSame (nodeB, tv.Nodes [1], "#A3");
  21. Assert.AreSame (nodeC, tv.Nodes [2], "#A3");
  22. tv.Nodes.Remove (nodeB);
  23. Assert.AreEqual (2, tv.Nodes.Count, "#B1");
  24. Assert.AreSame (nodeA, tv.Nodes [0], "#B2");
  25. Assert.AreSame (nodeC, tv.Nodes [1], "#B3");
  26. tv.Nodes.Remove (nodeA);
  27. Assert.AreEqual (1, tv.Nodes.Count, "#C1");
  28. Assert.AreSame (nodeC, tv.Nodes [0], "#C2");
  29. tv.Nodes.Remove (nodeC);
  30. Assert.AreEqual (0, tv.Nodes.Count, "#D1");
  31. }
  32. [Test]
  33. #if ONLY_1_1
  34. [ExpectedException (typeof (NullReferenceException))]
  35. #endif
  36. public void Remove_NotInCollection ()
  37. {
  38. TreeView tv = new TreeView ();
  39. TreeNode nodeA = tv.Nodes.Add ("A");
  40. tv.Nodes.Remove (nodeA);
  41. tv.Nodes.Remove (nodeA);
  42. }
  43. [Test]
  44. [ExpectedException (typeof (NullReferenceException))]
  45. public void Remove_Null ()
  46. {
  47. TreeView tv = new TreeView ();
  48. tv.Nodes.Remove (null);
  49. }
  50. [Test]
  51. public void Enumerator_Reset ()
  52. {
  53. TreeView tv = new TreeView ();
  54. TreeNode nodeA = tv.Nodes.Add ("A");
  55. IEnumerator enumerator = tv.Nodes.GetEnumerator ();
  56. Assert.IsNull (enumerator.Current, "#A1");
  57. Assert.IsTrue (enumerator.MoveNext (), "#A2");
  58. Assert.IsNotNull (enumerator.Current, "#A3");
  59. Assert.AreSame (nodeA, enumerator.Current, "#A4");
  60. Assert.IsFalse (enumerator.MoveNext (), "#A5");
  61. enumerator.Reset ();
  62. Assert.IsNull (enumerator.Current, "#B1");
  63. Assert.IsTrue (enumerator.MoveNext (), "#B2");
  64. Assert.IsNotNull (enumerator.Current, "#B3");
  65. Assert.AreSame (nodeA, enumerator.Current, "#B4");
  66. Assert.IsFalse (enumerator.MoveNext (), "#B5");
  67. }
  68. [Test]
  69. public void Enumerator_MoveNext ()
  70. {
  71. TreeView tv = new TreeView ();
  72. TreeNode nodeA = tv.Nodes.Add ("A");
  73. IEnumerator enumerator = tv.Nodes.GetEnumerator ();
  74. Assert.IsTrue (enumerator.MoveNext (), "#A1");
  75. Assert.IsFalse (enumerator.MoveNext (), "#A2");
  76. Assert.IsFalse (enumerator.MoveNext (), "#A3");
  77. tv = new TreeView ();
  78. enumerator = tv.Nodes.GetEnumerator ();
  79. Assert.IsFalse (enumerator.MoveNext (), "#B1");
  80. Assert.IsFalse (enumerator.MoveNext (), "#B2");
  81. }
  82. [Test]
  83. public void Enumerator_Current ()
  84. {
  85. TreeView tv = new TreeView ();
  86. TreeNode nodeA = tv.Nodes.Add ("A");
  87. TreeNode nodeB = tv.Nodes.Add ("B");
  88. IEnumerator enumerator = tv.Nodes.GetEnumerator ();
  89. Assert.IsNull (enumerator.Current, "#A1");
  90. enumerator.MoveNext ();
  91. Assert.IsNotNull (enumerator.Current, "#A2");
  92. Assert.AreSame (nodeA, enumerator.Current, "#A3");
  93. enumerator.MoveNext ();
  94. Assert.IsNotNull (enumerator.Current, "#A4");
  95. Assert.AreSame (nodeB, enumerator.Current, "#A5");
  96. enumerator.MoveNext ();
  97. Assert.IsNotNull (enumerator.Current, "#A6");
  98. Assert.AreSame (nodeB, enumerator.Current, "#A7");
  99. tv = new TreeView ();
  100. enumerator = tv.Nodes.GetEnumerator ();
  101. Assert.IsNull (enumerator.Current, "#B1");
  102. enumerator.MoveNext ();
  103. Assert.IsNull (enumerator.Current, "#B2");
  104. }
  105. [Test]
  106. public void IList_Indexer_Get ()
  107. {
  108. TreeView tv = new TreeView ();
  109. TreeNode nodeA = tv.Nodes.Add ("A");
  110. TreeNode nodeB = tv.Nodes.Add ("B");
  111. TreeNode nodeC = tv.Nodes.Add ("C");
  112. IList list = (IList) tv.Nodes;
  113. Assert.AreSame (nodeA, list [0], "#A1");
  114. Assert.AreSame (nodeB, list [1], "#A2");
  115. Assert.AreSame (nodeC, list [2], "#A3");
  116. try {
  117. object item = list [3];
  118. Assert.Fail ("#B1: " + item);
  119. } catch (ArgumentOutOfRangeException ex) {
  120. Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#B2");
  121. Assert.IsNull (ex.ActualValue, "#B3");
  122. Assert.IsNull (ex.InnerException, "#B4");
  123. Assert.AreEqual ("index", ex.ParamName, "#B5");
  124. }
  125. try {
  126. object item = list [-1];
  127. Assert.Fail ("#C1: " + item);
  128. } catch (ArgumentOutOfRangeException ex) {
  129. Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#C2");
  130. Assert.IsNull (ex.ActualValue, "#C3");
  131. Assert.IsNull (ex.InnerException, "#C4");
  132. Assert.AreEqual ("index", ex.ParamName, "#C5");
  133. }
  134. }
  135. [Test]
  136. public void IList_Indexer_Set ()
  137. {
  138. TreeView tv = new TreeView ();
  139. TreeNode nodeA = tv.Nodes.Add ("A");
  140. IList list = (IList) tv.Nodes;
  141. TreeNode nodeB = new TreeNode ("B");
  142. list [0] = nodeB;
  143. Assert.AreSame (nodeB, list [0], "#A1");
  144. try {
  145. list [1] = nodeA;
  146. Assert.Fail ("#B1");
  147. } catch (ArgumentOutOfRangeException ex) {
  148. Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#B2");
  149. Assert.IsNull (ex.ActualValue, "#B3");
  150. Assert.IsNull (ex.InnerException, "#B4");
  151. #if NET_2_0
  152. Assert.AreEqual ("index", ex.ParamName, "#B5");
  153. #endif
  154. }
  155. try {
  156. list [-1] = nodeA;
  157. Assert.Fail ("#C1");
  158. } catch (ArgumentOutOfRangeException ex) {
  159. Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#C2");
  160. Assert.IsNull (ex.ActualValue, "#C3");
  161. Assert.IsNull (ex.InnerException, "#C4");
  162. #if NET_2_0
  163. Assert.AreEqual ("index", ex.ParamName, "#C5");
  164. #endif
  165. }
  166. try {
  167. list [0] = "whatever";
  168. Assert.Fail ("#D1");
  169. } catch (ArgumentException ex) {
  170. Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#D2");
  171. Assert.IsNull (ex.InnerException, "#D3");
  172. Assert.IsNull (ex.ParamName, "#D4");
  173. }
  174. }
  175. }
  176. }