FormTest.cs 41 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160
  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.Drawing;
  12. using System.Reflection;
  13. using System.Windows.Forms;
  14. using NUnit.Framework;
  15. using CategoryAttribute = NUnit.Framework.CategoryAttribute;
  16. namespace MonoTests.System.Windows.Forms
  17. {
  18. [TestFixture]
  19. public class FormTest
  20. {
  21. [Test] // bug #80791
  22. public void ClientSizeTest ()
  23. {
  24. Form form = new Form ();
  25. Assert.IsFalse (form.ClientSize == form.Size);
  26. }
  27. [Test] // bug #80574
  28. [Category ("NotWorking")]
  29. public void FormBorderStyleTest ()
  30. {
  31. Form form = new Form ();
  32. Rectangle boundsBeforeBorderStyleChange = form.Bounds;
  33. Rectangle clientRectangleBeforeBorderStyleChange = form.ClientRectangle;
  34. form.FormBorderStyle = FormBorderStyle.None;
  35. Assert.AreEqual (form.Bounds, boundsBeforeBorderStyleChange, "#A1");
  36. Assert.AreEqual (form.ClientRectangle, clientRectangleBeforeBorderStyleChange, "#A2");
  37. form.Visible = true;
  38. form.FormBorderStyle = FormBorderStyle.Sizable;
  39. boundsBeforeBorderStyleChange = form.Bounds;
  40. clientRectangleBeforeBorderStyleChange = form.ClientRectangle;
  41. form.FormBorderStyle = FormBorderStyle.None;
  42. Assert.IsFalse (form.Bounds == boundsBeforeBorderStyleChange, "#B1");
  43. Assert.AreEqual (form.ClientRectangle, clientRectangleBeforeBorderStyleChange, "#B2");
  44. form.Visible = false;
  45. form.FormBorderStyle = FormBorderStyle.Sizable;
  46. boundsBeforeBorderStyleChange = form.Bounds;
  47. clientRectangleBeforeBorderStyleChange = form.ClientRectangle;
  48. form.FormBorderStyle = FormBorderStyle.None;
  49. Assert.IsFalse (form.Bounds == boundsBeforeBorderStyleChange, "#C1");
  50. Assert.AreEqual (form.ClientRectangle, clientRectangleBeforeBorderStyleChange, "#C2");
  51. }
  52. [Test]
  53. public void MaximizedParentedFormTest ()
  54. {
  55. using (Form Main = new Form ()) {
  56. Form Child = new Form ();
  57. Child.TopLevel = false;
  58. Main.Controls.Add (Child);
  59. Main.ShowInTaskbar = false;
  60. Main.Show ();
  61. Child.WindowState = FormWindowState.Maximized;
  62. // The exact negative value depends on the border with, but it should always be < 0.
  63. Assert.IsTrue (Child.Location.X < 0 && Child.Location.Y < 0, "#A1");
  64. }
  65. }
  66. [Test]
  67. [Category ("NotWorking")]
  68. public void FormCreateParamsStyleTest ()
  69. {
  70. Form frm;
  71. using (frm = new Form ()) {
  72. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles) TestHelper.GetCreateParams (frm).Style), "#01-Style");
  73. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles) TestHelper.GetCreateParams (frm).ExStyle), "#01-ExStyle");
  74. }
  75. using (frm = new Form ()) {
  76. frm.AllowDrop = !frm.AllowDrop;
  77. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#02-Style");
  78. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#02-ExStyle");
  79. }
  80. using (frm = new Form ()) {
  81. frm.AllowTransparency = !frm.AllowTransparency;
  82. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#03-Style");
  83. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW | WindowExStyles.WS_EX_LAYERED, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#03-ExStyle");
  84. }
  85. using (frm = new Form ()) {
  86. frm.Opacity = 0.50;
  87. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#04-Style");
  88. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW | WindowExStyles.WS_EX_LAYERED, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#04-ExStyle");
  89. }
  90. using (frm = new Form ()) {
  91. frm.TransparencyKey = Color.Cyan;
  92. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#05-Style");
  93. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW | WindowExStyles.WS_EX_LAYERED, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#05-ExStyle");
  94. }
  95. using (frm = new Form ()) {
  96. frm.CausesValidation = !frm.CausesValidation;
  97. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#06-Style");
  98. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#06-ExStyle");
  99. }
  100. using (frm = new Form ()) {
  101. frm.ControlBox = !frm.ControlBox;
  102. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TABSTOP | WindowStyles.WS_GROUP | WindowStyles.WS_THICKFRAME | WindowStyles.WS_BORDER | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#07-Style");
  103. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#07-ExStyle");
  104. }
  105. using (frm = new Form ()) {
  106. frm.Enabled = true;
  107. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#08-Style");
  108. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#08-ExStyle");
  109. }
  110. using (frm = new Form ()) {
  111. frm.FormBorderStyle = FormBorderStyle.Fixed3D;
  112. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TABSTOP | WindowStyles.WS_GROUP | WindowStyles.WS_SYSMENU | WindowStyles.WS_CAPTION | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#10-Style");
  113. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CLIENTEDGE | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#10-ExStyle");
  114. }
  115. using (frm = new Form ()) {
  116. frm.FormBorderStyle = FormBorderStyle.FixedDialog;
  117. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TABSTOP | WindowStyles.WS_GROUP | WindowStyles.WS_SYSMENU | WindowStyles.WS_CAPTION | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#11-Style");
  118. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_DLGMODALFRAME | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#11-ExStyle");
  119. }
  120. using (frm = new Form ()) {
  121. frm.FormBorderStyle = FormBorderStyle.FixedSingle;
  122. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TABSTOP | WindowStyles.WS_GROUP | WindowStyles.WS_SYSMENU | WindowStyles.WS_CAPTION | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#12-Style");
  123. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#12-ExStyle");
  124. }
  125. using (frm = new Form ()) {
  126. frm.FormBorderStyle = FormBorderStyle.FixedToolWindow;
  127. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TABSTOP | WindowStyles.WS_GROUP | WindowStyles.WS_SYSMENU | WindowStyles.WS_CAPTION | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#13-Style");
  128. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_TOOLWINDOW | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#13-ExStyle");
  129. }
  130. using (frm = new Form ()) {
  131. frm.FormBorderStyle = FormBorderStyle.None;
  132. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TABSTOP | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#14-Style");
  133. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#14-ExStyle");
  134. }
  135. using (frm = new Form ()) {
  136. frm.FormBorderStyle = FormBorderStyle.Sizable;
  137. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#15-Style");
  138. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#15-ExStyle");
  139. }
  140. using (frm = new Form ()) {
  141. frm.FormBorderStyle = FormBorderStyle.SizableToolWindow;
  142. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#16-Style");
  143. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_TOOLWINDOW | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#16-ExStyle");
  144. }
  145. using (frm = new Form ()) {
  146. frm.HelpButton = !frm.HelpButton;
  147. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#17-Style");
  148. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#17-ExStyle");
  149. }
  150. using (frm = new Form ()) {
  151. frm.Icon = null;
  152. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#18-Style");
  153. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#18-ExStyle");
  154. }
  155. using (frm = new Form ()) {
  156. frm.Icon = SystemIcons.Asterisk;
  157. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#19-Style");
  158. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#19-ExStyle");
  159. }
  160. using (frm = new Form ()) {
  161. frm.IsMdiContainer = !frm.IsMdiContainer;
  162. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#20-Style");
  163. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#20-ExStyle");
  164. }
  165. using (frm = new Form ()) {
  166. frm.MaximizeBox = !frm.MaximizeBox;
  167. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_GROUP | WindowStyles.WS_THICKFRAME | WindowStyles.WS_SYSMENU | WindowStyles.WS_CAPTION | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#21-Style");
  168. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#21-ExStyle");
  169. }
  170. using (frm = new Form ()) {
  171. frm.MinimizeBox = !frm.MinimizeBox;
  172. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TABSTOP | WindowStyles.WS_THICKFRAME | WindowStyles.WS_SYSMENU | WindowStyles.WS_CAPTION | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#22-Style");
  173. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#22-ExStyle");
  174. }
  175. #if NET_2_0
  176. using (frm = new Form ()) {
  177. frm.ShowIcon = !frm.ShowIcon;
  178. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#23-Style");
  179. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_DLGMODALFRAME | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#23-ExStyle");
  180. }
  181. #endif
  182. using (frm = new Form ()) {
  183. frm.ShowInTaskbar = !frm.ShowInTaskbar;
  184. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#24-Style");
  185. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#24-ExStyle");
  186. }
  187. using (frm = new Form ()) {
  188. frm.TabStop = !frm.TabStop;
  189. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#25-Style");
  190. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#25-ExStyle");
  191. }
  192. using (frm = new Form ()) {
  193. frm.TopLevel = !frm.TopLevel;
  194. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN | WindowStyles.WS_CLIPSIBLINGS | WindowStyles.WS_CHILD, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#26-Style");
  195. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#26-ExStyle");
  196. }
  197. using (frm = new Form ()) {
  198. frm.Visible = !frm.Visible;
  199. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#27-Style");
  200. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#27-ExStyle");
  201. }
  202. }
  203. [Test]
  204. public void FormParentedTest ()
  205. {
  206. using (Form frm = new Form ()) {
  207. Form frm2 = new Form ();
  208. frm2.TopLevel = false;
  209. frm.ShowInTaskbar = false;
  210. frm2.ShowInTaskbar = false;
  211. frm2.Visible = true;
  212. frm.Visible = true;
  213. EventLogger log = new EventLogger (frm);
  214. EventLogger log2 = new EventLogger (frm2);
  215. frm.Controls.Add (frm2);
  216. Assert.IsTrue (log2.EventRaised ("ParentChanged"), "#C1");
  217. Assert.IsTrue (log.EventRaised ("ControlAdded"), "#P1");
  218. Assert.AreSame (frm, frm2.Parent, "#02");
  219. }
  220. }
  221. [Test]
  222. public void FormPropertyTest ()
  223. {
  224. Form myform = new Form ();
  225. myform.Visible = true;
  226. myform.Text = "NewForm";
  227. myform.Name = "FormTest";
  228. Assert.IsNull (myform.AcceptButton, "#1");
  229. Assert.IsNull (myform.ActiveMdiChild, "#2");
  230. Assert.IsFalse (myform.AutoScale, "#3");
  231. Assert.IsNull (myform.CancelButton, "#6");
  232. Assert.IsTrue (myform.ControlBox, "#9");
  233. Assert.IsTrue (myform.DesktopBounds.X > 0, "#10a");
  234. Assert.IsTrue (myform.DesktopBounds.Y > 0, "#10b");
  235. Assert.AreEqual (300, myform.DesktopBounds.Height, "#10c");
  236. Assert.AreEqual (300, myform.DesktopBounds.Width, "#10d");
  237. Assert.IsTrue (myform.DesktopLocation.X > 0, "#11a");
  238. Assert.IsTrue (myform.DesktopLocation.Y > 0, "#11b");
  239. Assert.AreEqual (DialogResult.None, myform.DialogResult, "#12");
  240. Assert.AreEqual (FormBorderStyle.Sizable, myform.FormBorderStyle, "#13");
  241. Assert.IsFalse (myform.HelpButton, "#14");
  242. Assert.AreEqual ("System.Drawing.Icon", myform.Icon.GetType ().ToString (), "#15");
  243. Assert.IsFalse (myform.IsMdiChild, "#16");
  244. Assert.IsFalse (myform.IsMdiContainer, "#17");
  245. Assert.IsFalse (myform.KeyPreview, "#18");
  246. Assert.IsTrue (myform.MaximizeBox, "#19");
  247. Assert.AreEqual (0, myform.MaximumSize.Height, "#20a");
  248. Assert.AreEqual (0, myform.MaximumSize.Width, "#20b");
  249. Assert.AreEqual (0, myform.MdiChildren.Length, "#21a");
  250. Assert.AreEqual (1, myform.MdiChildren.Rank, "#21b");
  251. Assert.IsFalse (myform.MdiChildren.IsSynchronized, "#21c");
  252. Assert.IsNull (myform.MdiParent, "#22");
  253. Assert.IsNull (myform.Menu, "#23");
  254. Assert.IsNull (myform.MergedMenu, "#24");
  255. Assert.IsTrue (myform.MinimizeBox, "#25");
  256. Assert.AreEqual (0, myform.MinimumSize.Height, "#26a");
  257. Assert.AreEqual (0, myform.MinimumSize.Width, "#26b");
  258. Assert.IsTrue (myform.MinimumSize.IsEmpty, "#26c");
  259. Assert.IsFalse (myform.Modal, "#27");
  260. Assert.AreEqual (1, myform.Opacity, "#28");
  261. Assert.AreEqual (0, myform.OwnedForms.Length, "#29a");
  262. Assert.AreEqual (1, myform.OwnedForms.Rank, "#29b");
  263. Assert.IsNull (myform.Owner, "#30");
  264. Assert.IsTrue (myform.ShowInTaskbar, "#31");
  265. Assert.AreEqual (300, myform.Size.Height, "#32a");
  266. Assert.AreEqual (300, myform.Size.Width, "#32b");
  267. Assert.AreEqual (SizeGripStyle.Auto, myform.SizeGripStyle, "#33");
  268. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, myform.StartPosition, "#34");
  269. Assert.IsTrue (myform.TopLevel, "#35");
  270. Assert.IsFalse (myform.TopMost, "#36");
  271. Assert.AreEqual (Color.Empty, myform.TransparencyKey, "#37");
  272. Assert.AreEqual (FormWindowState.Normal, myform.WindowState, "#38");
  273. Assert.AreEqual (ImeMode.NoControl, myform.ImeMode, "#39");
  274. myform.Dispose ();
  275. }
  276. [Test]
  277. [Category ("NotWorking")]
  278. public void ActivateTest ()
  279. {
  280. Form myform = new Form ();
  281. myform.ShowInTaskbar = false;
  282. myform.Visible = true;
  283. myform.Text = "NewForm";
  284. myform.Name = "FormTest";
  285. myform.Activate ();
  286. Assert.AreEqual (true, myform.Focus (), "#40");
  287. myform.Dispose ();
  288. }
  289. [Test]
  290. public void AddOwnedFormTest ()
  291. {
  292. Form parent = new Form ();
  293. parent.ShowInTaskbar = false;
  294. parent.Text = "NewParent";
  295. Form ownedForm = new Form ();
  296. ownedForm.ShowInTaskbar = false;
  297. ownedForm.Text = "Owned Form";
  298. parent.AddOwnedForm (ownedForm);
  299. ownedForm.Show ();
  300. Assert.AreEqual ("NewParent", ownedForm.Owner.Text, "#41");
  301. ownedForm.Dispose ();
  302. parent.Dispose ();
  303. }
  304. [Test] // bug #80020
  305. [Category ("NotWorking")]
  306. public void IsHandleCreated ()
  307. {
  308. Form main = new Form ();
  309. main.Name = "main";
  310. main.IsMdiContainer = true;
  311. main.ShowInTaskbar = false;
  312. Assert.IsFalse (main.IsHandleCreated, "#1");
  313. Form child = new Form ();
  314. child.MdiParent = main;
  315. child.WindowState = FormWindowState.Maximized;
  316. Assert.IsFalse (main.IsHandleCreated, "#2");
  317. child.Show ();
  318. Assert.IsFalse (child.IsHandleCreated, "#3");
  319. Assert.IsFalse (main.IsHandleCreated, "#4");
  320. main.Show ();
  321. Assert.IsTrue (child.IsHandleCreated, "#5");
  322. Assert.IsTrue (main.IsHandleCreated, "#6");
  323. child.Dispose ();
  324. main.Dispose ();
  325. }
  326. [Test]
  327. public void RemoveOwnedFormTest ()
  328. {
  329. Form myform = new Form ();
  330. myform.ShowInTaskbar = false;
  331. myform.Text = "NewForm";
  332. myform.Name = "FormTest";
  333. myform.RemoveOwnedForm (myform);
  334. myform.Show ();
  335. Assert.AreEqual (null, myform.Owner, "#44");
  336. myform.Dispose ();
  337. }
  338. [Test]
  339. public void SetDesktopBoundsTest ()
  340. {
  341. Form myform = new Form ();
  342. myform.ShowInTaskbar = false;
  343. myform.Visible = true;
  344. myform.Text = "NewForm";
  345. myform.Name = "FormTest";
  346. myform.SetDesktopBounds (10, 10, 200 , 200);
  347. Assert.AreEqual (200, myform.DesktopBounds.Height, "#45");
  348. myform.Dispose ();
  349. }
  350. [Test]
  351. public void SetDesktopLocationTest ()
  352. {
  353. Form myform = new Form ();
  354. myform.ShowInTaskbar = false;
  355. myform.Visible = true;
  356. myform.Text = "NewForm";
  357. myform.Name = "FormTest";
  358. myform.SetDesktopLocation (10, 10);
  359. Assert.AreEqual (10, myform.DesktopLocation.X, "#46");
  360. myform.Dispose ();
  361. }
  362. [Test]
  363. public void SetDialogResultOutOfRange ()
  364. {
  365. Form myform = new Form ();
  366. myform.ShowInTaskbar = false;
  367. try {
  368. myform.DialogResult = (DialogResult) (-1);
  369. Assert.Fail ("#48");
  370. } catch (InvalidEnumArgumentException) {
  371. }
  372. try {
  373. myform.DialogResult = (DialogResult) ((int) DialogResult.No + 1);
  374. Assert.Fail ("#49");
  375. } catch (InvalidEnumArgumentException) {
  376. }
  377. myform.Dispose ();
  378. }
  379. void myform_set_dialogresult (object sender, EventArgs e)
  380. {
  381. Form f = (Form)sender;
  382. f.DialogResult = DialogResult.OK;
  383. }
  384. void myform_close (object sender, EventArgs e)
  385. {
  386. Form f = (Form)sender;
  387. f.Close();
  388. }
  389. [Test]
  390. public void SetDialogResult ()
  391. {
  392. Form myform = new Form ();
  393. myform.ShowInTaskbar = false;
  394. myform.Visible = true;
  395. myform.DialogResult = DialogResult.Cancel;
  396. Assert.IsTrue (myform.Visible, "A1");
  397. Assert.IsFalse (myform.IsDisposed, "A2");
  398. myform.Close ();
  399. Assert.IsFalse (myform.Visible, "A3");
  400. Assert.IsTrue (myform.IsDisposed, "A4");
  401. DialogResult result;
  402. myform = new Form ();
  403. myform.ShowInTaskbar = false;
  404. myform.VisibleChanged += new EventHandler (myform_set_dialogresult);
  405. result = myform.ShowDialog ();
  406. Assert.AreEqual (result, DialogResult.OK, "A5");
  407. Assert.IsFalse (myform.Visible, "A6");
  408. Assert.IsFalse (myform.IsDisposed, "A7");
  409. myform = new Form ();
  410. myform.ShowInTaskbar = false;
  411. myform.VisibleChanged += new EventHandler (myform_close);
  412. result = myform.ShowDialog ();
  413. Assert.AreEqual (result, DialogResult.Cancel, "A8");
  414. Assert.IsFalse (myform.Visible, "A9");
  415. Assert.IsFalse (myform.IsDisposed, "A10");
  416. }
  417. [Test]
  418. public void ShowDialog_Child ()
  419. {
  420. Form main = new Form ();
  421. main.IsMdiContainer = true;
  422. Form child = new Form ();
  423. child.MdiParent = main;
  424. try {
  425. child.ShowDialog ();
  426. Assert.Fail ("#1");
  427. } catch (InvalidOperationException ex) {
  428. // Forms that are not top level forms cannot be displayed as a
  429. // modal dialog. Remove the form from any parent form before
  430. // calling ShowDialog.
  431. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
  432. Assert.IsNull (ex.InnerException, "#3");
  433. Assert.IsNotNull (ex.Message, "#4");
  434. }
  435. Assert.IsNull (child.Owner, "#5");
  436. child.Dispose ();
  437. main.Dispose ();
  438. }
  439. [Test]
  440. public void ShowDialog_Disabled ()
  441. {
  442. Form form = new Form ();
  443. form.Enabled = false;
  444. try {
  445. form.ShowDialog ();
  446. Assert.Fail ("#A1");
  447. } catch (InvalidOperationException ex) {
  448. // Forms that are not enabled cannot be displayed as a modal
  449. // dialog. Set the form's enabled property to true before
  450. // calling ShowDialog.
  451. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
  452. Assert.IsNull (ex.InnerException, "#A3");
  453. Assert.IsNotNull (ex.Message, "#A4");
  454. }
  455. Assert.IsNull (form.Owner, "#A5");
  456. form.Dispose ();
  457. Form main = new Form ();
  458. form = new Form ();
  459. form.Owner = main;
  460. form.Enabled = false;
  461. try {
  462. form.ShowDialog ();
  463. Assert.Fail ("#B1");
  464. } catch (InvalidOperationException) {
  465. }
  466. Assert.IsNotNull (form.Owner, "#B2");
  467. Assert.AreSame (main, form.Owner, "#B3");
  468. form.Dispose ();
  469. main.Dispose ();
  470. }
  471. [Test]
  472. [Category ("NotWorking")]
  473. public void ShowDialog_Owner_Circular ()
  474. {
  475. Form main = new Form ();
  476. Form child = new Form ();
  477. child.Owner = main;
  478. try {
  479. main.ShowDialog (child);
  480. Assert.Fail ("#1");
  481. } catch (ArgumentException ex) {
  482. // A circular control reference has been made. A control cannot
  483. // be owned or parented to itself
  484. Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
  485. Assert.IsNull (ex.InnerException, "#3");
  486. Assert.IsNotNull (ex.Message, "#4");
  487. Assert.IsNull (ex.ParamName, "#5");
  488. }
  489. Assert.IsNull (main.Owner, "#6");
  490. main.Dispose ();
  491. child.Dispose ();
  492. }
  493. [Test] // bug #80773
  494. [Category ("NotWorking")]
  495. public void ShowDialog_Owner_Self ()
  496. {
  497. Form form = new Form ();
  498. try {
  499. form.ShowDialog (form);
  500. Assert.Fail ("#A1");
  501. } catch (ArgumentException ex) {
  502. // Forms cannot own themselves or their owners
  503. Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
  504. Assert.IsNull (ex.InnerException, "#A3");
  505. Assert.IsNotNull (ex.Message, "#A4");
  506. Assert.IsNotNull (ex.ParamName, "#A5");
  507. Assert.AreEqual ("owner", ex.ParamName, "#A6");
  508. }
  509. Assert.IsNull (form.Owner, "#A7");
  510. form.Dispose ();
  511. Form main = new Form ();
  512. form = new Form ();
  513. form.Owner = main;
  514. try {
  515. form.ShowDialog (form);
  516. Assert.Fail ("#B1");
  517. } catch (ArgumentException) {
  518. }
  519. Assert.IsNotNull (form.Owner);
  520. Assert.AreSame (main, form.Owner, "#B2");
  521. form.Dispose ();
  522. main.Dispose ();
  523. }
  524. [Test]
  525. public void ShowDialog_Visible ()
  526. {
  527. Form form = new Form ();
  528. form.ShowInTaskbar = false;
  529. form.Visible = true;
  530. try {
  531. form.ShowDialog ();
  532. Assert.Fail ("#A1");
  533. } catch (InvalidOperationException ex) {
  534. // Forms that are already visible cannot be displayed as a modal
  535. // dialog. Set the form's visible property to false before
  536. // calling ShowDialog.
  537. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
  538. Assert.IsNull (ex.InnerException, "#A3");
  539. Assert.IsNotNull (ex.Message, "#A4");
  540. }
  541. Assert.IsNull (form.Owner, "#A5");
  542. form.Dispose ();
  543. Form main = new Form ();
  544. form = new Form ();
  545. form.Owner = main;
  546. form.Visible = true;
  547. try {
  548. form.ShowDialog ();
  549. Assert.Fail ("#B1");
  550. } catch (InvalidOperationException) {
  551. }
  552. Assert.IsNotNull (form.Owner, "#B2");
  553. Assert.AreSame (main, form.Owner, "#B3");
  554. form.Dispose ();
  555. main.Dispose ();
  556. }
  557. [Test] // bug #80604
  558. public void VisibleOnLoad ()
  559. {
  560. MockForm form = new MockForm ();
  561. form.CloseOnLoad = true;
  562. Application.Run (form);
  563. Assert.IsTrue (form.VisibleOnLoad, "#1");
  564. form.Dispose ();
  565. form = new MockForm ();
  566. form.ShowInTaskbar = false;
  567. form.Show ();
  568. Assert.IsTrue (form.VisibleOnLoad, "#2");
  569. form.Dispose ();
  570. }
  571. [Test] // bug #80052
  572. [Category ("NotWorking")]
  573. public void Location ()
  574. {
  575. //
  576. // CenterParent
  577. //
  578. Form formA = new Form ();
  579. formA.ShowInTaskbar = false;
  580. formA.StartPosition = FormStartPosition.CenterParent;
  581. formA.Location = new Point (151, 251);
  582. formA.Show ();
  583. Assert.AreEqual (FormStartPosition.CenterParent, formA.StartPosition, "#A1");
  584. Assert.IsFalse (formA.Location.X == 151, "#A2");
  585. Assert.IsFalse (formA.Location.Y == 251, "#A3");
  586. formA.Location = new Point (311, 221);
  587. Assert.AreEqual (FormStartPosition.CenterParent, formA.StartPosition, "#A4");
  588. Assert.AreEqual (311, formA.Location.X, "#A5");
  589. Assert.AreEqual (221, formA.Location.Y, "#A6");
  590. formA.Dispose ();
  591. //
  592. // CenterScreen
  593. //
  594. Form formB = new Form ();
  595. formB.ShowInTaskbar = false;
  596. formB.StartPosition = FormStartPosition.CenterScreen;
  597. formB.Location = new Point (151, 251);
  598. formB.Show ();
  599. Assert.AreEqual (FormStartPosition.CenterScreen, formB.StartPosition, "#B1");
  600. Assert.IsFalse (formB.Location.X == 151, "#B2");
  601. Assert.IsFalse (formB.Location.Y == 251, "#B3");
  602. formB.Location = new Point (311, 221);
  603. Assert.AreEqual (FormStartPosition.CenterScreen, formB.StartPosition, "#B4");
  604. Assert.AreEqual (311, formB.Location.X, "#B5");
  605. Assert.AreEqual (221, formB.Location.Y, "#B6");
  606. formB.Dispose ();
  607. //
  608. // Manual
  609. //
  610. Form formC = new Form ();
  611. formC.ShowInTaskbar = false;
  612. formC.StartPosition = FormStartPosition.Manual;
  613. formC.Location = new Point (151, 251);
  614. formC.Show ();
  615. Assert.AreEqual (FormStartPosition.Manual, formC.StartPosition, "#C1");
  616. Assert.AreEqual (151, formC.Location.X, "#C2");
  617. Assert.AreEqual (251, formC.Location.Y, "#C3");
  618. formC.Location = new Point (311, 221);
  619. Assert.AreEqual (FormStartPosition.Manual, formC.StartPosition, "#C4");
  620. Assert.AreEqual (311, formC.Location.X, "#C5");
  621. Assert.AreEqual (221, formC.Location.Y, "#C6");
  622. formC.Dispose ();
  623. //
  624. // WindowsDefaultBounds
  625. //
  626. Form formD = new Form ();
  627. formD.ShowInTaskbar = false;
  628. formD.StartPosition = FormStartPosition.WindowsDefaultBounds;
  629. formD.Location = new Point (151, 251);
  630. formD.Show ();
  631. Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, formD.StartPosition, "#D1");
  632. Assert.IsFalse (formD.Location.X == 151, "#D2");
  633. Assert.IsFalse (formD.Location.Y == 251, "#D3");
  634. formD.Location = new Point (311, 221);
  635. Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, formD.StartPosition, "#D4");
  636. Assert.AreEqual (311, formD.Location.X, "#D5");
  637. Assert.AreEqual (221, formD.Location.Y, "#D6");
  638. formD.Dispose ();
  639. //
  640. // WindowsDefaultLocation
  641. //
  642. Form formE = new Form ();
  643. formE.ShowInTaskbar = false;
  644. formE.Location = new Point (151, 251);
  645. formE.Show ();
  646. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, formE.StartPosition, "#E1");
  647. Assert.IsFalse (formE.Location.X == 151, "#E2");
  648. Assert.IsFalse (formE.Location.Y == 251, "#E3");
  649. formE.Location = new Point (311, 221);
  650. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, formE.StartPosition, "#E4");
  651. Assert.AreEqual (311, formE.Location.X, "#E5");
  652. Assert.AreEqual (221, formE.Location.Y, "#E6");
  653. formE.Dispose ();
  654. }
  655. [Test]
  656. public void DisposeOwnerTest ()
  657. {
  658. Form f1 = new Form ();
  659. Form f2 = new Form ();
  660. f2.Owner = f1;
  661. f1.Dispose ();
  662. Assert.IsNull (f2.Owner, "1");
  663. Assert.AreEqual (0, f1.OwnedForms.Length, "2");
  664. }
  665. [Test]
  666. [ExpectedException (typeof (ObjectDisposedException))]
  667. public void AccessDisposedForm ()
  668. {
  669. Form myform = new Form ();
  670. myform.ShowInTaskbar = false;
  671. myform.Show ();
  672. myform.Close (); // this should result in the form being disposed
  673. myform.Show (); // and this line should result in the ODE being thrown
  674. }
  675. class MyForm : Form
  676. {
  677. public void DoDestroyHandle ()
  678. {
  679. DestroyHandle();
  680. }
  681. public void DoRecreateHandle ()
  682. {
  683. RecreateHandle();
  684. }
  685. }
  686. int handle_destroyed_count;
  687. void handle_destroyed (object sender, EventArgs e)
  688. {
  689. handle_destroyed_count++;
  690. }
  691. [Test]
  692. public void DestroyHandleTest ()
  693. {
  694. handle_destroyed_count = 0;
  695. MyForm f1 = new MyForm ();
  696. f1.HandleDestroyed += new EventHandler (handle_destroyed);
  697. f1.Show ();
  698. f1.DoDestroyHandle ();
  699. Assert.AreEqual (1, handle_destroyed_count, "1");
  700. f1 = new MyForm ();
  701. f1.HandleDestroyed += new EventHandler (handle_destroyed);
  702. f1.Show ();
  703. f1.DoRecreateHandle ();
  704. Assert.AreEqual (2, handle_destroyed_count, "2");
  705. }
  706. [Test]
  707. public void FormClose ()
  708. {
  709. Form myform = new Form ();
  710. myform.ShowInTaskbar = false;
  711. Assert.IsFalse (myform.Visible, "A1");
  712. Assert.IsFalse (myform.IsDisposed, "A2");
  713. myform.Close ();
  714. Assert.IsFalse (myform.Visible, "A3");
  715. Assert.IsFalse (myform.IsDisposed, "A4");
  716. myform.Show ();
  717. Assert.IsTrue (myform.Visible, "A5");
  718. Assert.IsFalse (myform.IsDisposed, "A6");
  719. myform.Close ();
  720. Assert.IsFalse (myform.Visible, "A7");
  721. Assert.IsTrue (myform.IsDisposed, "A8");
  722. }
  723. [Test]
  724. public void FormClose2 ()
  725. {
  726. WMCloseWatcher f = new WMCloseWatcher ();
  727. f.ShowInTaskbar = false;
  728. f.close_count = 0;
  729. Assert.IsFalse (f.Visible, "A1");
  730. f.Close ();
  731. Assert.AreEqual (0, f.close_count, "A2");
  732. f.Show ();
  733. f.Close ();
  734. Assert.AreEqual (1, f.close_count, "A3");
  735. }
  736. class WMCloseWatcher : Form {
  737. public int close_count;
  738. protected override void WndProc (ref Message msg) {
  739. if (msg.Msg == 0x0010 /* WM_CLOSE */) {
  740. close_count ++;
  741. }
  742. base.WndProc (ref msg);
  743. }
  744. }
  745. class SwallowOnActivated : Form {
  746. protected override void OnActivated (EventArgs e)
  747. {
  748. // do nothing
  749. }
  750. protected override void OnCreateControl () {
  751. base.OnCreateControl ();
  752. }
  753. }
  754. class EnterTest : Button {
  755. protected override void OnEnter (EventArgs e)
  756. {
  757. on_enter = true;
  758. base.OnEnter (e);
  759. }
  760. public bool on_enter;
  761. }
  762. [Test]
  763. public void OnActivateEventHandlingTest1 ()
  764. {
  765. if (RunningOnUnix) {
  766. Assert.Ignore ("Relies on form.Show() synchronously generating WM_ACTIVATE");
  767. }
  768. SwallowOnActivated f = new SwallowOnActivated ();
  769. f.ShowInTaskbar = false;
  770. EnterTest c = new EnterTest ();
  771. f.Controls.Add (c);
  772. f.Show ();
  773. Assert.IsTrue (c.on_enter, "1");
  774. f.Dispose ();
  775. }
  776. #if NET_2_0
  777. [Test]
  778. public void FormClosingEvents ()
  779. {
  780. // Standard Close
  781. Form f = new Form ();
  782. string events = string.Empty;
  783. f.Closing += new CancelEventHandler (delegate (Object obj, CancelEventArgs e) { events += ("Closing;"); });
  784. f.FormClosing += new FormClosingEventHandler (delegate (Object obj, FormClosingEventArgs e) { events += string.Format ("FormClosing [Reason:{0} - Cancel:{1}]", e.CloseReason, e.Cancel); });
  785. f.Show ();
  786. f.Close ();
  787. Assert.AreEqual ("Closing;FormClosing [Reason:UserClosing - Cancel:False]", events, "A1");
  788. }
  789. [Test]
  790. public void FormClosingEventsCancel ()
  791. {
  792. // Shows that setting Cancel in Closing flows through to FormClosing
  793. Form f = new Form ();
  794. string events = string.Empty;
  795. f.Closing += new CancelEventHandler (delegate (Object obj, CancelEventArgs e) { events += ("Closing;"); e.Cancel = true; });
  796. f.FormClosing += new FormClosingEventHandler (delegate (Object obj, FormClosingEventArgs e) { events += string.Format("FormClosing [Reason:{0} - Cancel:{1}]", e.CloseReason, e.Cancel); e.Cancel = false; });
  797. f.Show ();
  798. f.Close ();
  799. Assert.AreEqual ("Closing;FormClosing [Reason:UserClosing - Cancel:True]", events, "A1");
  800. }
  801. [Test]
  802. public void FormClosedEvents ()
  803. {
  804. // Standard Closed
  805. Form f = new Form ();
  806. string events = string.Empty;
  807. f.Closed += new EventHandler (delegate (Object obj, EventArgs e) { events += ("Closed;"); });
  808. f.FormClosed += new FormClosedEventHandler (delegate (Object obj, FormClosedEventArgs e) { events += string.Format ("FormClosed [Reason:{0}]", e.CloseReason); });
  809. f.Show ();
  810. f.Close ();
  811. Assert.AreEqual ("Closed;FormClosed [Reason:UserClosing]", events, "A1");
  812. }
  813. [Test]
  814. public void ShowWithOwner ()
  815. {
  816. Form f = new Form ();
  817. Button b = new Button ();
  818. f.Controls.Add (b);
  819. Form f2 = new Form ();
  820. f2.Show (f);
  821. Assert.AreSame (f, f2.Owner, "A1");
  822. f2 = new Form ();
  823. f2.Show (b);
  824. Assert.AreSame (f, f2.Owner, "A2");
  825. Button b2 = new Button ();
  826. f2 = new Form ();
  827. f2.Show (b2);
  828. Assert.AreEqual (null, f2.Owner, "A3");
  829. f2 = new Form ();
  830. f2.Show (null);
  831. Assert.AreEqual (null, f2.Owner, "A4");
  832. }
  833. [Test]
  834. [ExpectedException (typeof (InvalidOperationException))]
  835. public void ShowWithOwnerIOE ()
  836. {
  837. Form f = new Form ();
  838. f.Show (f);
  839. }
  840. [Test] // Bug #79959, #80574, #80791
  841. [Category ("NotWorking")]
  842. public void BehaviorResizeOnBorderStyleChanged ()
  843. {
  844. // Marked NotWorking because the ClientSize is dependent on the WM.
  845. // The values below match XP Luna to make sure our behavior is the same.
  846. Form f = new Form ();
  847. f.ShowInTaskbar = false;
  848. f.Show ();
  849. Assert.AreEqual (true, f.IsHandleCreated, "A0");
  850. Assert.AreEqual (new Size (300, 300), f.Size, "A1");
  851. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A2");
  852. f.FormBorderStyle = FormBorderStyle.Fixed3D;
  853. Assert.AreEqual (new Size (302, 302), f.Size, "A3");
  854. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A4");
  855. f.FormBorderStyle = FormBorderStyle.FixedDialog;
  856. Assert.AreEqual (new Size (298, 298), f.Size, "A5");
  857. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A6");
  858. f.FormBorderStyle = FormBorderStyle.FixedSingle;
  859. Assert.AreEqual (new Size (298, 298), f.Size, "A7");
  860. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A8");
  861. f.FormBorderStyle = FormBorderStyle.FixedToolWindow;
  862. Assert.AreEqual (new Size (298, 290), f.Size, "A9");
  863. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A0");
  864. f.FormBorderStyle = FormBorderStyle.None;
  865. Assert.AreEqual (new Size (292, 266), f.Size, "A11");
  866. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A12");
  867. f.FormBorderStyle = FormBorderStyle.SizableToolWindow;
  868. Assert.AreEqual (new Size (300, 292), f.Size, "A13");
  869. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A14");
  870. f.FormBorderStyle = FormBorderStyle.Sizable;
  871. Assert.AreEqual (new Size (300, 300), f.Size, "A15");
  872. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A16");
  873. f.Close ();
  874. }
  875. [Test] // Bug #80574, #80791
  876. [Category ("NotWorking")]
  877. public void BehaviorResizeOnBorderStyleChangedNotVisible ()
  878. {
  879. // Marked NotWorking because the ClientSize is dependent on the WM.
  880. // The values below match XP Luna to make sure our behavior is the same.
  881. Form f = new Form ();
  882. f.ShowInTaskbar = false;
  883. Assert.AreEqual (false, f.IsHandleCreated, "A0");
  884. Assert.AreEqual (new Size (300, 300), f.Size, "A1");
  885. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A2");
  886. f.FormBorderStyle = FormBorderStyle.Fixed3D;
  887. Assert.AreEqual (new Size (300, 300), f.Size, "A3");
  888. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A4");
  889. f.FormBorderStyle = FormBorderStyle.FixedDialog;
  890. Assert.AreEqual (new Size (300, 300), f.Size, "A5");
  891. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A6");
  892. f.FormBorderStyle = FormBorderStyle.FixedSingle;
  893. Assert.AreEqual (new Size (300, 300), f.Size, "A7");
  894. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A8");
  895. f.FormBorderStyle = FormBorderStyle.FixedToolWindow;
  896. Assert.AreEqual (new Size (300, 300), f.Size, "A9");
  897. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A0");
  898. f.FormBorderStyle = FormBorderStyle.None;
  899. Assert.AreEqual (new Size (300, 300), f.Size, "A11");
  900. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A12");
  901. f.FormBorderStyle = FormBorderStyle.SizableToolWindow;
  902. Assert.AreEqual (new Size (300, 300), f.Size, "A13");
  903. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A14");
  904. f.FormBorderStyle = FormBorderStyle.Sizable;
  905. Assert.AreEqual (new Size (300, 300), f.Size, "A15");
  906. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A16");
  907. }
  908. [Test] // Bug #80574, #80791
  909. [Category ("NotWorking")]
  910. public void MoreBehaviorResizeOnBorderStyleChangedNotVisible ()
  911. {
  912. // Marked NotWorking because the ClientSize is dependent on the WM.
  913. // The values below match XP Luna to make sure our behavior is the same.
  914. Form f = new Form ();
  915. f.ShowInTaskbar = false;
  916. f.Show ();
  917. f.Hide ();
  918. Assert.AreEqual (true, f.IsHandleCreated, "A0");
  919. f.FormBorderStyle = FormBorderStyle.Sizable;
  920. Assert.AreEqual (new Size (300, 300), f.Size, "A1");
  921. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A2");
  922. f.FormBorderStyle = FormBorderStyle.None;
  923. Assert.AreEqual (new Size (292, 266), f.Size, "A3");
  924. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A4");
  925. }
  926. #endif
  927. [Test] // Bug #80773
  928. public void DontSetOwnerOnShowDialogException ()
  929. {
  930. Form f = new Form ();
  931. f.ShowInTaskbar = false;
  932. try { f.ShowDialog (f); }
  933. catch { }
  934. Assert.AreEqual (null, f.Owner, "H1");
  935. }
  936. private bool RunningOnUnix {
  937. get {
  938. // check for Unix platforms - see FAQ for more details
  939. // http://www.mono-project.com/FAQ:_Technical#How_to_detect_the_execution_platform_.3F
  940. int platform = (int) Environment.OSVersion.Platform;
  941. return ((platform == 4) || (platform == 128));
  942. }
  943. }
  944. private class MockForm : Form
  945. {
  946. public bool CloseOnLoad {
  947. get { return _closeOnLoad; }
  948. set { _closeOnLoad = value; }
  949. }
  950. public bool VisibleOnLoad {
  951. get { return _visibleOnLoad; }
  952. }
  953. protected override void OnLoad(EventArgs e) {
  954. base.OnLoad(e);
  955. _visibleOnLoad = Visible;
  956. if (CloseOnLoad)
  957. Close ();
  958. }
  959. private bool _closeOnLoad;
  960. private bool _visibleOnLoad;
  961. }
  962. }
  963. }