FormTest.cs 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287
  1. //
  2. // FormTest.cs: Test cases for Form.
  3. //
  4. // Author:
  5. // Ritvik Mayank ([email protected])
  6. //
  7. // (C) 2005 Novell, Inc. (http://www.novell.com)
  8. //
  9. using System;
  10. using System.ComponentModel;
  11. using System.Windows.Forms;
  12. using System.Drawing;
  13. using System.Reflection;
  14. using NUnit.Framework;
  15. namespace MonoTests.System.Windows.Forms
  16. {
  17. [TestFixture]
  18. public class FormTest
  19. {
  20. [Test]
  21. public void FormPropertyTest ()
  22. {
  23. Form myform = new Form ();
  24. myform.Visible = true;
  25. myform.Text = "NewForm";
  26. myform.Name = "FormTest";
  27. Assert.AreEqual (null, myform.AcceptButton, "#1");
  28. //Assert.AreEqual (null, myform.ActiveMdiChild, "#2");
  29. //System.NotImplementedException for ActiveMdiChild. Feature not implemented.
  30. Assert.AreEqual (false, myform.AutoScale, "#3");
  31. Assert.AreEqual (13, myform.AutoScaleBaseSize.Height, "#4");
  32. Assert.AreEqual (5, myform.AutoScaleBaseSize.Width, "#5");
  33. Assert.AreEqual (null, myform.CancelButton, "#6");
  34. Assert.AreEqual (true, myform.ControlBox, "#9");
  35. Assert.IsTrue (myform.DesktopBounds.X > 0, "#10a");
  36. Assert.IsTrue (myform.DesktopBounds.Y > 0, "#10b");
  37. Assert.AreEqual (300, myform.DesktopBounds.Height, "#10c");
  38. Assert.AreEqual (300, myform.DesktopBounds.Width, "#10d");
  39. Assert.IsTrue (myform.DesktopLocation.X > 0, "#11a");
  40. Assert.IsTrue (myform.DesktopLocation.Y > 0, "#11b");
  41. Assert.AreEqual (DialogResult.None, myform.DialogResult, "#12");
  42. Assert.AreEqual (FormBorderStyle.Sizable, myform.FormBorderStyle, "#13");
  43. Assert.AreEqual (false, myform.HelpButton, "#14");
  44. Assert.AreEqual ("System.Drawing.Icon", myform.Icon.GetType ().ToString (), "#15");
  45. Assert.AreEqual (false, myform.IsMdiChild, "#16");
  46. Assert.AreEqual (false, myform.IsMdiContainer, "#17");
  47. Assert.AreEqual (false, myform.KeyPreview, "#18");
  48. Assert.AreEqual (true, myform.MaximizeBox, "#19");
  49. Assert.AreEqual (0, myform.MaximumSize.Height, "#20a");
  50. Assert.AreEqual (0, myform.MaximumSize.Width, "#20b");
  51. Assert.AreEqual (0, myform.MdiChildren.Length, "#21a");
  52. Assert.AreEqual (1, myform.MdiChildren.Rank, "#21b");
  53. Assert.AreEqual (false, myform.MdiChildren.IsSynchronized, "#21c");
  54. Assert.AreEqual (null, myform.MdiParent, "#22");
  55. Assert.AreEqual (null, myform.Menu, "#23");
  56. //Assert.AreEqual (null, myform.MergedMenu, "#24");
  57. //System.NotImplementedException for MergedMenu. Feature not implemented.
  58. Assert.AreEqual (true, myform.MinimizeBox, "#25");
  59. Assert.AreEqual (0, myform.MinimumSize.Height, "#26a");
  60. Assert.AreEqual (0, myform.MinimumSize.Width, "#26b");
  61. Assert.AreEqual (true, myform.MinimumSize.IsEmpty, "#26c");
  62. Assert.AreEqual (false, myform.Modal, "#27");
  63. //Assert.AreEqual (1, myform.Opacity, "#28");
  64. //System.NotImplementedException for Opacity. Feature not implemented.
  65. Assert.AreEqual (0, myform.OwnedForms.Length, "#29a");
  66. Assert.AreEqual (1, myform.OwnedForms.Rank, "#29b");
  67. Assert.AreEqual (null, myform.Owner, "#30");
  68. Assert.AreEqual (true, myform.ShowInTaskbar, "#31");
  69. Assert.AreEqual (300, myform.Size.Height, "#32a");
  70. Assert.AreEqual (300, myform.Size.Width, "#32b");
  71. Assert.AreEqual (SizeGripStyle.Auto, myform.SizeGripStyle, "#33");
  72. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, myform.StartPosition, "#34");
  73. Assert.AreEqual (true, myform.TopLevel, "#35");
  74. Assert.AreEqual (false, myform.TopMost, "#36");
  75. Assert.AreEqual (Color.Empty, myform.TransparencyKey, "#37");
  76. Assert.AreEqual (FormWindowState.Normal, myform.WindowState, "#38");
  77. myform.Dispose ();
  78. }
  79. [Test]
  80. public void ActivateTest ()
  81. {
  82. Form myform = new Form ();
  83. myform.ShowInTaskbar = false;
  84. myform.Visible = true;
  85. myform.Text = "NewForm";
  86. myform.Name = "FormTest";
  87. myform.Activate ();
  88. Assert.AreEqual (true, myform.Focus (), "#40");
  89. myform.Dispose ();
  90. }
  91. [Test]
  92. public void AddOwnedFormTest ()
  93. {
  94. Form parent = new Form ();
  95. parent.ShowInTaskbar = false;
  96. parent.Text = "NewParent";
  97. Form ownedForm = new Form ();
  98. ownedForm.ShowInTaskbar = false;
  99. ownedForm.Text = "Owned Form";
  100. parent.AddOwnedForm (ownedForm);
  101. ownedForm.Show ();
  102. Assert.AreEqual ("NewParent", ownedForm.Owner.Text, "#41");
  103. ownedForm.Dispose ();
  104. parent.Dispose ();
  105. }
  106. [Test]
  107. public void RemoveOwnedFormTest ()
  108. {
  109. Form myform = new Form ();
  110. myform.ShowInTaskbar = false;
  111. myform.Text = "NewForm";
  112. myform.Name = "FormTest";
  113. myform.RemoveOwnedForm (myform);
  114. myform.Show ();
  115. Assert.AreEqual (null, myform.Owner, "#44");
  116. myform.Dispose ();
  117. }
  118. [Test]
  119. public void SetDesktopBoundsTest ()
  120. {
  121. Form myform = new Form ();
  122. myform.ShowInTaskbar = false;
  123. myform.Visible = true;
  124. myform.Text = "NewForm";
  125. myform.Name = "FormTest";
  126. myform.SetDesktopBounds (10, 10, 200 , 200);
  127. Assert.AreEqual (200, myform.DesktopBounds.Height, "#45");
  128. myform.Dispose ();
  129. }
  130. [Test]
  131. public void SetDesktopLocationTest ()
  132. {
  133. Form myform = new Form ();
  134. myform.ShowInTaskbar = false;
  135. myform.Visible = true;
  136. myform.Text = "NewForm";
  137. myform.Name = "FormTest";
  138. myform.SetDesktopLocation (10, 10);
  139. Assert.AreEqual (10, myform.DesktopLocation.X, "#46");
  140. myform.Dispose ();
  141. }
  142. [Test]
  143. public void SetDialogResultOutOfRange ()
  144. {
  145. Form myform = new Form ();
  146. myform.ShowInTaskbar = false;
  147. try {
  148. myform.DialogResult = (DialogResult) (-1);
  149. Assert.Fail ("#48");
  150. } catch (InvalidEnumArgumentException) {
  151. }
  152. try {
  153. myform.DialogResult = (DialogResult) ((int) DialogResult.No + 1);
  154. Assert.Fail ("#49");
  155. } catch (InvalidEnumArgumentException) {
  156. }
  157. myform.Dispose ();
  158. }
  159. void myform_set_dialogresult (object sender, EventArgs e)
  160. {
  161. Form f = (Form)sender;
  162. f.DialogResult = DialogResult.OK;
  163. }
  164. void myform_close (object sender, EventArgs e)
  165. {
  166. Form f = (Form)sender;
  167. f.Close();
  168. }
  169. [Test]
  170. public void SetDialogResult ()
  171. {
  172. Form myform = new Form ();
  173. myform.ShowInTaskbar = false;
  174. myform.Visible = true;
  175. myform.DialogResult = DialogResult.Cancel;
  176. Assert.IsTrue (myform.Visible, "A1");
  177. Assert.IsFalse (myform.IsDisposed, "A2");
  178. myform.Close ();
  179. Assert.IsFalse (myform.Visible, "A3");
  180. Assert.IsTrue (myform.IsDisposed, "A4");
  181. DialogResult result;
  182. myform = new Form ();
  183. myform.ShowInTaskbar = false;
  184. myform.VisibleChanged += new EventHandler (myform_set_dialogresult);
  185. result = myform.ShowDialog ();
  186. Assert.AreEqual (result, DialogResult.OK, "A5");
  187. Assert.IsFalse (myform.Visible, "A6");
  188. Assert.IsFalse (myform.IsDisposed, "A7");
  189. myform = new Form ();
  190. myform.ShowInTaskbar = false;
  191. myform.VisibleChanged += new EventHandler (myform_close);
  192. result = myform.ShowDialog ();
  193. Assert.AreEqual (result, DialogResult.Cancel, "A8");
  194. Assert.IsFalse (myform.Visible, "A9");
  195. Assert.IsFalse (myform.IsDisposed, "A10");
  196. }
  197. [Test]
  198. [ExpectedException (typeof (ObjectDisposedException))]
  199. public void AccessDisposedForm ()
  200. {
  201. Form myform = new Form ();
  202. myform.ShowInTaskbar = false;
  203. myform.Show ();
  204. myform.Close (); // this should result in the form being disposed
  205. myform.Show (); // and this line should result in the ODE being thrown
  206. }
  207. [Test]
  208. public void FormClose ()
  209. {
  210. Form myform = new Form ();
  211. myform.ShowInTaskbar = false;
  212. Assert.IsFalse (myform.Visible, "A1");
  213. Assert.IsFalse (myform.IsDisposed, "A2");
  214. myform.Close ();
  215. Assert.IsFalse (myform.Visible, "A3");
  216. Assert.IsFalse (myform.IsDisposed, "A4");
  217. myform.Show ();
  218. Assert.IsTrue (myform.Visible, "A5");
  219. Assert.IsFalse (myform.IsDisposed, "A6");
  220. myform.Close ();
  221. Assert.IsFalse (myform.Visible, "A7");
  222. Assert.IsTrue (myform.IsDisposed, "A8");
  223. }
  224. [Test]
  225. public void FormClose2 ()
  226. {
  227. WMCloseWatcher f = new WMCloseWatcher ();
  228. f.ShowInTaskbar = false;
  229. f.close_count = 0;
  230. Assert.IsFalse (f.Visible, "A1");
  231. f.Close ();
  232. Assert.AreEqual (0, f.close_count, "A2");
  233. f.Show ();
  234. f.Close ();
  235. Assert.AreEqual (1, f.close_count, "A3");
  236. }
  237. class WMCloseWatcher : Form {
  238. public int close_count;
  239. protected override void WndProc (ref Message msg) {
  240. if (msg.Msg == 0x0010 /* WM_CLOSE */) {
  241. close_count ++;
  242. }
  243. base.WndProc (ref msg);
  244. }
  245. }
  246. }
  247. }