FormTest.cs 61 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606
  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]
  22. public void FormStartupPositionChangeTest ()
  23. {
  24. using (Form frm = new Form ())
  25. {
  26. frm.ShowInTaskbar = false;
  27. frm.StartPosition = FormStartPosition.Manual;
  28. frm.Location = new Point (0, 0);
  29. frm.Show ();
  30. // On X there seem to be pending messages in the queue aren't processed
  31. // before Show returns, so process them. Otherwise the Location returns
  32. // something like (5,23)
  33. Application.DoEvents ();
  34. Assert.AreEqual ("{X=0,Y=0}", frm.Location.ToString (), "#01");
  35. frm.StartPosition = FormStartPosition.CenterParent;
  36. Assert.AreEqual ("{X=0,Y=0}", frm.Location.ToString (), "#02");
  37. frm.StartPosition = FormStartPosition.CenterScreen;
  38. Assert.AreEqual ("{X=0,Y=0}", frm.Location.ToString (), "#03");
  39. frm.StartPosition = FormStartPosition.Manual;
  40. Assert.AreEqual ("{X=0,Y=0}", frm.Location.ToString (), "#04");
  41. frm.StartPosition = FormStartPosition.WindowsDefaultBounds;
  42. Assert.AreEqual ("{X=0,Y=0}", frm.Location.ToString (), "#05");
  43. frm.StartPosition = FormStartPosition.WindowsDefaultLocation;
  44. Assert.AreEqual ("{X=0,Y=0}", frm.Location.ToString (), "#06");
  45. }
  46. }
  47. [Test]
  48. public void FormStartupPositionTest ()
  49. {
  50. CreateParams cp;
  51. using (Form frm = new Form ())
  52. {
  53. cp = TestHelper.GetCreateParams (frm);
  54. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$01");
  55. Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#01");
  56. frm.StartPosition = FormStartPosition.CenterParent;
  57. cp = TestHelper.GetCreateParams (frm);
  58. Assert.AreEqual (FormStartPosition.CenterParent, frm.StartPosition, "$01");
  59. Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#02");
  60. frm.StartPosition = FormStartPosition.CenterScreen;
  61. cp = TestHelper.GetCreateParams (frm);
  62. Assert.AreEqual (FormStartPosition.CenterScreen, frm.StartPosition, "$01");
  63. Assert.AreEqual (new Point (Screen.PrimaryScreen.WorkingArea.Width / 2 - frm.Width / 2, Screen.PrimaryScreen.WorkingArea.Height / 2 - frm.Height / 2).ToString (), new Point (cp.X, cp.Y).ToString (), "#03");
  64. frm.StartPosition = FormStartPosition.Manual;
  65. cp = TestHelper.GetCreateParams (frm);
  66. Assert.AreEqual (FormStartPosition.Manual, frm.StartPosition, "$01");
  67. Assert.AreEqual (new Point (0, 0).ToString (), new Point (cp.X, cp.Y).ToString (), "#04");
  68. frm.StartPosition = FormStartPosition.WindowsDefaultBounds;
  69. cp = TestHelper.GetCreateParams (frm);
  70. Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, frm.StartPosition, "$01");
  71. Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#05");
  72. frm.StartPosition = FormStartPosition.WindowsDefaultLocation;
  73. cp = TestHelper.GetCreateParams (frm);
  74. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$01");
  75. Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#06");
  76. }
  77. using (Form frm = new Form ()) {
  78. frm.Location = new Point (23, 45);
  79. cp = TestHelper.GetCreateParams (frm);
  80. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$A1");
  81. Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#A1");
  82. frm.StartPosition = FormStartPosition.CenterParent;
  83. cp = TestHelper.GetCreateParams (frm);
  84. Assert.AreEqual (FormStartPosition.CenterParent, frm.StartPosition, "$A2");
  85. Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#A2");
  86. frm.StartPosition = FormStartPosition.CenterScreen;
  87. cp = TestHelper.GetCreateParams (frm);
  88. Assert.AreEqual (FormStartPosition.CenterScreen, frm.StartPosition, "$A3");
  89. Assert.AreEqual (new Point (Screen.PrimaryScreen.WorkingArea.Width / 2 - frm.Width / 2, Screen.PrimaryScreen.WorkingArea.Height / 2 - frm.Height / 2).ToString (), new Point (cp.X, cp.Y).ToString (), "#A3");
  90. frm.StartPosition = FormStartPosition.Manual;
  91. cp = TestHelper.GetCreateParams (frm);
  92. Assert.AreEqual (FormStartPosition.Manual, frm.StartPosition, "$A4");
  93. Assert.AreEqual (new Point (23, 45).ToString (), new Point (cp.X, cp.Y).ToString (), "#A4");
  94. frm.StartPosition = FormStartPosition.WindowsDefaultBounds;
  95. cp = TestHelper.GetCreateParams (frm);
  96. Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, frm.StartPosition, "$A5");
  97. Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#A5");
  98. frm.StartPosition = FormStartPosition.WindowsDefaultLocation;
  99. cp = TestHelper.GetCreateParams (frm);
  100. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$A6");
  101. Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#A6");
  102. }
  103. }
  104. [Test]
  105. public void MdiFormStartupPositionTest ()
  106. {
  107. CreateParams cp;
  108. using (Form Main = new Form ()) {
  109. Main.IsMdiContainer = true;
  110. Main.ShowInTaskbar = false;
  111. Main.Show ();
  112. using (Form frm = new Form ()) {
  113. frm.MdiParent = Main;
  114. cp = TestHelper.GetCreateParams (frm);
  115. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$01");
  116. Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#01");
  117. frm.StartPosition = FormStartPosition.CenterParent;
  118. cp = TestHelper.GetCreateParams (frm);
  119. Assert.AreEqual (FormStartPosition.CenterParent, frm.StartPosition, "$01");
  120. Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#02");
  121. frm.StartPosition = FormStartPosition.CenterScreen;
  122. cp = TestHelper.GetCreateParams (frm);
  123. Assert.AreEqual (FormStartPosition.CenterScreen, frm.StartPosition, "$01");
  124. Assert.AreEqual (new Point (0, 0).ToString (), new Point (cp.X, cp.Y).ToString (), "#03");
  125. frm.StartPosition = FormStartPosition.Manual;
  126. cp = TestHelper.GetCreateParams (frm);
  127. Assert.AreEqual (FormStartPosition.Manual, frm.StartPosition, "$01");
  128. Assert.AreEqual (new Point (0, 0).ToString (), new Point (cp.X, cp.Y).ToString (), "#04");
  129. frm.StartPosition = FormStartPosition.WindowsDefaultBounds;
  130. cp = TestHelper.GetCreateParams (frm);
  131. Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, frm.StartPosition, "$01");
  132. Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#05");
  133. frm.StartPosition = FormStartPosition.WindowsDefaultLocation;
  134. cp = TestHelper.GetCreateParams (frm);
  135. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$01");
  136. Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#06");
  137. frm.Show ();
  138. }
  139. using (Form frm = new Form ()) {
  140. frm.MdiParent = Main;
  141. frm.Location = new Point (23, 45);
  142. cp = TestHelper.GetCreateParams (frm);
  143. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$A1");
  144. Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#A1");
  145. frm.StartPosition = FormStartPosition.CenterParent;
  146. cp = TestHelper.GetCreateParams (frm);
  147. Assert.AreEqual (FormStartPosition.CenterParent, frm.StartPosition, "$A2");
  148. Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#A2");
  149. frm.StartPosition = FormStartPosition.CenterScreen;
  150. cp = TestHelper.GetCreateParams (frm);
  151. Assert.AreEqual (FormStartPosition.CenterScreen, frm.StartPosition, "$A3");
  152. Assert.AreEqual (new Point (0, 0).ToString (), new Point (cp.X, cp.Y).ToString (), "#A3");
  153. frm.StartPosition = FormStartPosition.Manual;
  154. cp = TestHelper.GetCreateParams (frm);
  155. Assert.AreEqual (FormStartPosition.Manual, frm.StartPosition, "$A4");
  156. Assert.AreEqual (new Point (23, 45).ToString (), new Point (cp.X, cp.Y).ToString (), "#A4");
  157. frm.StartPosition = FormStartPosition.WindowsDefaultBounds;
  158. cp = TestHelper.GetCreateParams (frm);
  159. Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, frm.StartPosition, "$A5");
  160. Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#A5");
  161. frm.StartPosition = FormStartPosition.WindowsDefaultLocation;
  162. cp = TestHelper.GetCreateParams (frm);
  163. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$A6");
  164. Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#A6");
  165. frm.Show ();
  166. }
  167. using (Form frm = new Form ()) {
  168. frm.MdiParent = Main;
  169. frm.Location = new Point (34, 56);
  170. cp = TestHelper.GetCreateParams (frm);
  171. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$B1");
  172. Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#B1");
  173. frm.StartPosition = FormStartPosition.CenterParent;
  174. cp = TestHelper.GetCreateParams (frm);
  175. Assert.AreEqual (FormStartPosition.CenterParent, frm.StartPosition, "$B2");
  176. Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#B2");
  177. frm.StartPosition = FormStartPosition.CenterScreen;
  178. cp = TestHelper.GetCreateParams (frm);
  179. Assert.AreEqual (FormStartPosition.CenterScreen, frm.StartPosition, "$B3");
  180. Assert.AreEqual (new Point (0, 0).ToString (), new Point (cp.X, cp.Y).ToString (), "#B3");
  181. frm.StartPosition = FormStartPosition.Manual;
  182. cp = TestHelper.GetCreateParams (frm);
  183. Assert.AreEqual (FormStartPosition.Manual, frm.StartPosition, "$B4");
  184. Assert.AreEqual (new Point (34, 56).ToString (), new Point (cp.X, cp.Y).ToString (), "#B4");
  185. frm.StartPosition = FormStartPosition.WindowsDefaultBounds;
  186. cp = TestHelper.GetCreateParams (frm);
  187. Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, frm.StartPosition, "$B5");
  188. Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#B5");
  189. frm.StartPosition = FormStartPosition.WindowsDefaultLocation;
  190. cp = TestHelper.GetCreateParams (frm);
  191. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$B6");
  192. Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#B6");
  193. frm.Show ();
  194. }
  195. Main.Size = new Size (600, 600);
  196. using (Form frm = new Form ()) {
  197. frm.MdiParent = Main;
  198. frm.Location = new Point (34, 56);
  199. cp = TestHelper.GetCreateParams (frm);
  200. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$C1");
  201. Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#C1");
  202. frm.StartPosition = FormStartPosition.CenterParent;
  203. cp = TestHelper.GetCreateParams (frm);
  204. Assert.AreEqual (FormStartPosition.CenterParent, frm.StartPosition, "$C2");
  205. Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#C2");
  206. frm.StartPosition = FormStartPosition.CenterScreen;
  207. cp = TestHelper.GetCreateParams (frm);
  208. Assert.AreEqual (FormStartPosition.CenterScreen, frm.StartPosition, "$C3");
  209. Assert.AreEqual (new Point (Main.Controls [0].ClientSize.Width / 2 - frm.Width / 2, Main.Controls [0].ClientSize.Height / 2 - frm.Height / 2).ToString (), new Point (cp.X, cp.Y).ToString (), "#C3");
  210. frm.StartPosition = FormStartPosition.Manual;
  211. cp = TestHelper.GetCreateParams (frm);
  212. Assert.AreEqual (FormStartPosition.Manual, frm.StartPosition, "$C4");
  213. Assert.AreEqual (new Point (34, 56).ToString (), new Point (cp.X, cp.Y).ToString (), "#C4");
  214. frm.StartPosition = FormStartPosition.WindowsDefaultBounds;
  215. cp = TestHelper.GetCreateParams (frm);
  216. Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, frm.StartPosition, "$C5");
  217. Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#C5");
  218. frm.StartPosition = FormStartPosition.WindowsDefaultLocation;
  219. cp = TestHelper.GetCreateParams (frm);
  220. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$C6");
  221. Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#C6");
  222. frm.Show ();
  223. }
  224. }
  225. }
  226. [Test]
  227. public void ParentedFormStartupPositionTest ()
  228. {
  229. CreateParams cp;
  230. using (Form Main = new Form ()) {
  231. Main.ShowInTaskbar = false;
  232. Main.Show ();
  233. using (Form frm = new Form ()) {
  234. frm.TopLevel = false;
  235. Main.Controls.Add (frm);
  236. cp = TestHelper.GetCreateParams (frm);
  237. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$01");
  238. Assert.AreEqual (new Point (0, 0).ToString (), new Point (cp.X, cp.Y).ToString (), "#01");
  239. frm.StartPosition = FormStartPosition.CenterParent;
  240. cp = TestHelper.GetCreateParams (frm);
  241. Assert.AreEqual (FormStartPosition.CenterParent, frm.StartPosition, "$02");
  242. Assert.AreEqual (new Point (0, 0).ToString (), new Point (cp.X, cp.Y).ToString (), "#02");
  243. frm.StartPosition = FormStartPosition.CenterScreen;
  244. cp = TestHelper.GetCreateParams (frm);
  245. Assert.AreEqual (FormStartPosition.CenterScreen, frm.StartPosition, "$03");
  246. Assert.AreEqual (new Point (0, 0).ToString (), new Point (cp.X, cp.Y).ToString (), "#03");
  247. frm.StartPosition = FormStartPosition.Manual;
  248. cp = TestHelper.GetCreateParams (frm);
  249. Assert.AreEqual (FormStartPosition.Manual, frm.StartPosition, "$04");
  250. Assert.AreEqual (new Point (0, 0).ToString (), new Point (cp.X, cp.Y).ToString (), "#04");
  251. frm.StartPosition = FormStartPosition.WindowsDefaultBounds;
  252. cp = TestHelper.GetCreateParams (frm);
  253. Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, frm.StartPosition, "$05");
  254. Assert.AreEqual (new Point (0, 0).ToString (), new Point (cp.X, cp.Y).ToString (), "#05");
  255. frm.StartPosition = FormStartPosition.WindowsDefaultLocation;
  256. cp = TestHelper.GetCreateParams (frm);
  257. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$06");
  258. Assert.AreEqual (new Point (0, 0).ToString (), new Point (cp.X, cp.Y).ToString (), "#06");
  259. frm.Show ();
  260. }
  261. using (Form frm = new Form ()) {
  262. frm.TopLevel = false;
  263. Main.Controls.Add (frm);
  264. frm.Location = new Point (23, 45);
  265. cp = TestHelper.GetCreateParams (frm);
  266. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$A1");
  267. Assert.AreEqual (new Point (23, 45).ToString (), new Point (cp.X, cp.Y).ToString (), "#A1");
  268. frm.StartPosition = FormStartPosition.CenterParent;
  269. cp = TestHelper.GetCreateParams (frm);
  270. Assert.AreEqual (FormStartPosition.CenterParent, frm.StartPosition, "$A2");
  271. Assert.AreEqual (new Point (23, 45).ToString (), new Point (cp.X, cp.Y).ToString (), "#A2");
  272. frm.StartPosition = FormStartPosition.CenterScreen;
  273. cp = TestHelper.GetCreateParams (frm);
  274. Assert.AreEqual (FormStartPosition.CenterScreen, frm.StartPosition, "$A3");
  275. Assert.AreEqual (new Point (23, 45).ToString (), new Point (cp.X, cp.Y).ToString (), "#A3");
  276. frm.StartPosition = FormStartPosition.Manual;
  277. cp = TestHelper.GetCreateParams (frm);
  278. Assert.AreEqual (FormStartPosition.Manual, frm.StartPosition, "$A4");
  279. Assert.AreEqual (new Point (23, 45).ToString (), new Point (cp.X, cp.Y).ToString (), "#A4");
  280. frm.StartPosition = FormStartPosition.WindowsDefaultBounds;
  281. cp = TestHelper.GetCreateParams (frm);
  282. Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, frm.StartPosition, "$A5");
  283. Assert.AreEqual (new Point (23, 45).ToString (), new Point (cp.X, cp.Y).ToString (), "#A5");
  284. frm.StartPosition = FormStartPosition.WindowsDefaultLocation;
  285. cp = TestHelper.GetCreateParams (frm);
  286. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$A6");
  287. Assert.AreEqual (new Point (23, 45).ToString (), new Point (cp.X, cp.Y).ToString (), "#A6");
  288. frm.Show ();
  289. }
  290. using (Form frm = new Form ()) {
  291. frm.TopLevel = false;
  292. Main.Controls.Add (frm);
  293. frm.Location = new Point (34, 56);
  294. cp = TestHelper.GetCreateParams (frm);
  295. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$B1");
  296. Assert.AreEqual (new Point (34, 56).ToString (), new Point (cp.X, cp.Y).ToString (), "#B1");
  297. frm.StartPosition = FormStartPosition.CenterParent;
  298. cp = TestHelper.GetCreateParams (frm);
  299. Assert.AreEqual (FormStartPosition.CenterParent, frm.StartPosition, "$B2");
  300. Assert.AreEqual (new Point (34, 56).ToString (), new Point (cp.X, cp.Y).ToString (), "#B2");
  301. frm.StartPosition = FormStartPosition.CenterScreen;
  302. cp = TestHelper.GetCreateParams (frm);
  303. Assert.AreEqual (FormStartPosition.CenterScreen, frm.StartPosition, "$B3");
  304. Assert.AreEqual (new Point (34, 56).ToString (), new Point (cp.X, cp.Y).ToString (), "#B3");
  305. frm.StartPosition = FormStartPosition.Manual;
  306. cp = TestHelper.GetCreateParams (frm);
  307. Assert.AreEqual (FormStartPosition.Manual, frm.StartPosition, "$B4");
  308. Assert.AreEqual (new Point (34, 56).ToString (), new Point (cp.X, cp.Y).ToString (), "#B4");
  309. frm.StartPosition = FormStartPosition.WindowsDefaultBounds;
  310. cp = TestHelper.GetCreateParams (frm);
  311. Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, frm.StartPosition, "$B5");
  312. Assert.AreEqual (new Point (34, 56).ToString (), new Point (cp.X, cp.Y).ToString (), "#B5");
  313. frm.StartPosition = FormStartPosition.WindowsDefaultLocation;
  314. cp = TestHelper.GetCreateParams (frm);
  315. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$B6");
  316. Assert.AreEqual (new Point (34, 56).ToString (), new Point (cp.X, cp.Y).ToString (), "#B6");
  317. frm.Show ();
  318. }
  319. Main.Size = new Size (600, 600);
  320. using (Form frm = new Form ()) {
  321. frm.TopLevel = false;
  322. Main.Controls.Add (frm);
  323. frm.Location = new Point (34, 56);
  324. cp = TestHelper.GetCreateParams (frm);
  325. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$C1");
  326. Assert.AreEqual (new Point (34, 56).ToString (), new Point (cp.X, cp.Y).ToString (), "#C1");
  327. frm.StartPosition = FormStartPosition.CenterParent;
  328. cp = TestHelper.GetCreateParams (frm);
  329. Assert.AreEqual (FormStartPosition.CenterParent, frm.StartPosition, "$C2");
  330. Assert.AreEqual (new Point (34, 56).ToString (), new Point (cp.X, cp.Y).ToString (), "#C2");
  331. frm.StartPosition = FormStartPosition.CenterScreen;
  332. cp = TestHelper.GetCreateParams (frm);
  333. Assert.AreEqual (FormStartPosition.CenterScreen, frm.StartPosition, "$C3");
  334. Assert.AreEqual (new Point (34, 56).ToString (), new Point (cp.X, cp.Y).ToString (), "#C3");
  335. frm.StartPosition = FormStartPosition.Manual;
  336. cp = TestHelper.GetCreateParams (frm);
  337. Assert.AreEqual (FormStartPosition.Manual, frm.StartPosition, "$C4");
  338. Assert.AreEqual (new Point (34, 56).ToString (), new Point (cp.X, cp.Y).ToString (), "#C4");
  339. frm.StartPosition = FormStartPosition.WindowsDefaultBounds;
  340. cp = TestHelper.GetCreateParams (frm);
  341. Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, frm.StartPosition, "$C5");
  342. Assert.AreEqual (new Point (34, 56).ToString (), new Point (cp.X, cp.Y).ToString (), "#C5");
  343. frm.StartPosition = FormStartPosition.WindowsDefaultLocation;
  344. cp = TestHelper.GetCreateParams (frm);
  345. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$C6");
  346. Assert.AreEqual (new Point (34, 56).ToString (), new Point (cp.X, cp.Y).ToString (), "#C6");
  347. frm.Show ();
  348. }
  349. }
  350. }
  351. [Test] // bug #80791
  352. public void ClientSizeTest ()
  353. {
  354. Form form = new Form ();
  355. Assert.IsFalse (form.ClientSize == form.Size);
  356. }
  357. [Test] // bug #80574
  358. [Category ("NotWorking")]
  359. public void FormBorderStyleTest ()
  360. {
  361. Form form = new Form ();
  362. Rectangle boundsBeforeBorderStyleChange = form.Bounds;
  363. Rectangle clientRectangleBeforeBorderStyleChange = form.ClientRectangle;
  364. form.FormBorderStyle = FormBorderStyle.None;
  365. Assert.AreEqual (form.Bounds, boundsBeforeBorderStyleChange, "#A1");
  366. Assert.AreEqual (form.ClientRectangle, clientRectangleBeforeBorderStyleChange, "#A2");
  367. form.Visible = true;
  368. form.FormBorderStyle = FormBorderStyle.Sizable;
  369. boundsBeforeBorderStyleChange = form.Bounds;
  370. clientRectangleBeforeBorderStyleChange = form.ClientRectangle;
  371. form.FormBorderStyle = FormBorderStyle.None;
  372. Assert.IsFalse (form.Bounds == boundsBeforeBorderStyleChange, "#B1");
  373. Assert.AreEqual (form.ClientRectangle, clientRectangleBeforeBorderStyleChange, "#B2");
  374. form.Visible = false;
  375. form.FormBorderStyle = FormBorderStyle.Sizable;
  376. boundsBeforeBorderStyleChange = form.Bounds;
  377. clientRectangleBeforeBorderStyleChange = form.ClientRectangle;
  378. form.FormBorderStyle = FormBorderStyle.None;
  379. Assert.IsFalse (form.Bounds == boundsBeforeBorderStyleChange, "#C1");
  380. Assert.AreEqual (form.ClientRectangle, clientRectangleBeforeBorderStyleChange, "#C2");
  381. }
  382. [Test]
  383. [Category ("NotWorking")]
  384. public void MaximizedParentedFormTest ()
  385. {
  386. using (Form Main = new Form ()) {
  387. Form Child = new Form ();
  388. Child.TopLevel = false;
  389. Main.Controls.Add (Child);
  390. Main.ShowInTaskbar = false;
  391. Main.Show ();
  392. Child.WindowState = FormWindowState.Maximized;
  393. Child.Visible = true;
  394. // The exact negative value depends on the border with, but it should always be < 0.
  395. Assert.IsTrue (Child.Location.X < 0 && Child.Location.Y < 0, "#A1");
  396. }
  397. }
  398. [Test]
  399. [Category ("NotWorking")]
  400. public void ParentedFormEventTest ()
  401. {
  402. using (Form Main = new Form ()) {
  403. Form Child = new Form ();
  404. Child.TopLevel = false;
  405. Child.Visible = true;
  406. Main.ShowInTaskbar = false;
  407. Main.Show ();
  408. EventLogger log = new EventLogger (Child);
  409. Assert.AreEqual (true, Child.Visible, "#A0");
  410. Main.Controls.Add (Child);
  411. Assert.AreEqual (true, Child.Visible, "#B0");
  412. Assert.AreEqual ("ParentChanged;BindingContextChanged;Layout;VisibleChanged;BindingContextChanged;BindingContextChanged", log.EventsJoined (), "#B1");
  413. }
  414. }
  415. [Test]
  416. [NUnit.Framework.Category ("NotWorking")]
  417. public void FormCreateParamsStyleTest ()
  418. {
  419. Form frm;
  420. using (frm = new Form ()) {
  421. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles) TestHelper.GetCreateParams (frm).Style), "#01-Style");
  422. 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");
  423. }
  424. using (frm = new Form ()) {
  425. frm.AllowDrop = !frm.AllowDrop;
  426. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#02-Style");
  427. 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");
  428. }
  429. using (frm = new Form ()) {
  430. frm.AllowTransparency = !frm.AllowTransparency;
  431. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#03-Style");
  432. 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");
  433. }
  434. using (frm = new Form ()) {
  435. frm.Opacity = 0.50;
  436. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#04-Style");
  437. 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");
  438. }
  439. using (frm = new Form ()) {
  440. frm.TransparencyKey = Color.Cyan;
  441. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#05-Style");
  442. 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");
  443. }
  444. using (frm = new Form ()) {
  445. frm.CausesValidation = !frm.CausesValidation;
  446. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#06-Style");
  447. 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");
  448. }
  449. using (frm = new Form ()) {
  450. frm.ControlBox = !frm.ControlBox;
  451. 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");
  452. 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");
  453. }
  454. using (frm = new Form ()) {
  455. frm.Enabled = true;
  456. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#08-Style");
  457. 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");
  458. }
  459. using (frm = new Form ()) {
  460. frm.FormBorderStyle = FormBorderStyle.Fixed3D;
  461. 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");
  462. 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");
  463. }
  464. using (frm = new Form ()) {
  465. frm.FormBorderStyle = FormBorderStyle.FixedDialog;
  466. 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");
  467. 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");
  468. }
  469. using (frm = new Form ()) {
  470. frm.FormBorderStyle = FormBorderStyle.FixedSingle;
  471. 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");
  472. 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");
  473. }
  474. using (frm = new Form ()) {
  475. frm.FormBorderStyle = FormBorderStyle.FixedToolWindow;
  476. 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");
  477. 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");
  478. }
  479. using (frm = new Form ()) {
  480. frm.FormBorderStyle = FormBorderStyle.None;
  481. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TABSTOP | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#14-Style");
  482. 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");
  483. }
  484. using (frm = new Form ()) {
  485. frm.FormBorderStyle = FormBorderStyle.Sizable;
  486. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#15-Style");
  487. 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");
  488. }
  489. using (frm = new Form ()) {
  490. frm.FormBorderStyle = FormBorderStyle.SizableToolWindow;
  491. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#16-Style");
  492. 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");
  493. }
  494. using (frm = new Form ()) {
  495. frm.HelpButton = !frm.HelpButton;
  496. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#17-Style");
  497. 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");
  498. }
  499. using (frm = new Form ()) {
  500. frm.Icon = null;
  501. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#18-Style");
  502. 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");
  503. }
  504. using (frm = new Form ()) {
  505. frm.Icon = SystemIcons.Asterisk;
  506. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#19-Style");
  507. 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");
  508. }
  509. using (frm = new Form ()) {
  510. frm.IsMdiContainer = !frm.IsMdiContainer;
  511. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#20-Style");
  512. 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");
  513. }
  514. using (frm = new Form ()) {
  515. frm.MaximizeBox = !frm.MaximizeBox;
  516. 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");
  517. 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");
  518. }
  519. using (frm = new Form ()) {
  520. frm.MinimizeBox = !frm.MinimizeBox;
  521. 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");
  522. 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");
  523. }
  524. #if NET_2_0
  525. using (frm = new Form ()) {
  526. frm.ShowIcon = !frm.ShowIcon;
  527. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#23-Style");
  528. 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");
  529. }
  530. #endif
  531. using (frm = new Form ()) {
  532. frm.ShowInTaskbar = !frm.ShowInTaskbar;
  533. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#24-Style");
  534. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#24-ExStyle");
  535. }
  536. using (frm = new Form ()) {
  537. frm.TabStop = !frm.TabStop;
  538. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#25-Style");
  539. 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");
  540. }
  541. using (frm = new Form ()) {
  542. frm.TopLevel = !frm.TopLevel;
  543. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN | WindowStyles.WS_CLIPSIBLINGS | WindowStyles.WS_CHILD, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#26-Style");
  544. 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");
  545. }
  546. using (frm = new Form ()) {
  547. frm.Visible = !frm.Visible;
  548. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#27-Style");
  549. 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");
  550. }
  551. }
  552. [Test]
  553. public void FormParentedTest ()
  554. {
  555. using (Form frm = new Form ()) {
  556. Form frm2 = new Form ();
  557. frm2.TopLevel = false;
  558. frm.ShowInTaskbar = false;
  559. frm2.ShowInTaskbar = false;
  560. frm2.Visible = true;
  561. frm.Visible = true;
  562. EventLogger log = new EventLogger (frm);
  563. EventLogger log2 = new EventLogger (frm2);
  564. frm.Controls.Add (frm2);
  565. Assert.IsTrue (log2.EventRaised ("ParentChanged"), "#C1");
  566. Assert.IsTrue (log.EventRaised ("ControlAdded"), "#P1");
  567. Assert.AreSame (frm, frm2.Parent, "#02");
  568. }
  569. }
  570. [Test]
  571. public void FormPropertyTest ()
  572. {
  573. Form myform = new Form ();
  574. myform.Visible = true;
  575. myform.Text = "NewForm";
  576. myform.Name = "FormTest";
  577. Assert.IsNull (myform.AcceptButton, "#1");
  578. Assert.IsNull (myform.ActiveMdiChild, "#2");
  579. Assert.IsFalse (myform.AutoScale, "#3");
  580. Assert.IsNull (myform.CancelButton, "#6");
  581. Assert.IsTrue (myform.ControlBox, "#9");
  582. Assert.IsTrue (myform.DesktopBounds.X > 0, "#10a");
  583. Assert.IsTrue (myform.DesktopBounds.Y > 0, "#10b");
  584. Assert.AreEqual (300, myform.DesktopBounds.Height, "#10c");
  585. Assert.AreEqual (300, myform.DesktopBounds.Width, "#10d");
  586. Assert.IsTrue (myform.DesktopLocation.X > 0, "#11a");
  587. Assert.IsTrue (myform.DesktopLocation.Y > 0, "#11b");
  588. Assert.AreEqual (DialogResult.None, myform.DialogResult, "#12");
  589. Assert.AreEqual (FormBorderStyle.Sizable, myform.FormBorderStyle, "#13");
  590. Assert.IsFalse (myform.HelpButton, "#14");
  591. Assert.AreEqual ("System.Drawing.Icon", myform.Icon.GetType ().ToString (), "#15");
  592. Assert.IsFalse (myform.IsMdiChild, "#16");
  593. Assert.IsFalse (myform.IsMdiContainer, "#17");
  594. Assert.IsFalse (myform.KeyPreview, "#18");
  595. Assert.IsTrue (myform.MaximizeBox, "#19");
  596. Assert.AreEqual (0, myform.MaximumSize.Height, "#20a");
  597. Assert.AreEqual (0, myform.MaximumSize.Width, "#20b");
  598. Assert.AreEqual (0, myform.MdiChildren.Length, "#21a");
  599. Assert.AreEqual (1, myform.MdiChildren.Rank, "#21b");
  600. Assert.IsFalse (myform.MdiChildren.IsSynchronized, "#21c");
  601. Assert.IsNull (myform.MdiParent, "#22");
  602. Assert.IsNull (myform.Menu, "#23");
  603. Assert.IsNull (myform.MergedMenu, "#24");
  604. Assert.IsTrue (myform.MinimizeBox, "#25");
  605. Assert.AreEqual (0, myform.MinimumSize.Height, "#26a");
  606. Assert.AreEqual (0, myform.MinimumSize.Width, "#26b");
  607. Assert.IsTrue (myform.MinimumSize.IsEmpty, "#26c");
  608. Assert.IsFalse (myform.Modal, "#27");
  609. Assert.AreEqual (1, myform.Opacity, "#28");
  610. Assert.AreEqual (0, myform.OwnedForms.Length, "#29a");
  611. Assert.AreEqual (1, myform.OwnedForms.Rank, "#29b");
  612. Assert.IsNull (myform.Owner, "#30");
  613. Assert.IsTrue (myform.ShowInTaskbar, "#31");
  614. Assert.AreEqual (300, myform.Size.Height, "#32a");
  615. Assert.AreEqual (300, myform.Size.Width, "#32b");
  616. Assert.AreEqual (SizeGripStyle.Auto, myform.SizeGripStyle, "#33");
  617. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, myform.StartPosition, "#34");
  618. Assert.IsTrue (myform.TopLevel, "#35");
  619. Assert.IsFalse (myform.TopMost, "#36");
  620. Assert.AreEqual (Color.Empty, myform.TransparencyKey, "#37");
  621. Assert.AreEqual (FormWindowState.Normal, myform.WindowState, "#38");
  622. Assert.AreEqual (ImeMode.NoControl, myform.ImeMode, "#39");
  623. myform.Dispose ();
  624. }
  625. [Test]
  626. [Category ("NotWorking")]
  627. public void ActivateTest ()
  628. {
  629. Form myform = new Form ();
  630. myform.ShowInTaskbar = false;
  631. myform.Visible = true;
  632. myform.Text = "NewForm";
  633. myform.Name = "FormTest";
  634. myform.Activate ();
  635. Assert.AreEqual (true, myform.Focus (), "#40");
  636. myform.Dispose ();
  637. }
  638. [Test]
  639. public void AddOwnedFormTest ()
  640. {
  641. Form parent = new Form ();
  642. parent.ShowInTaskbar = false;
  643. parent.Text = "NewParent";
  644. Form ownedForm = new Form ();
  645. ownedForm.ShowInTaskbar = false;
  646. ownedForm.Text = "Owned Form";
  647. parent.AddOwnedForm (ownedForm);
  648. ownedForm.Show ();
  649. Assert.AreEqual ("NewParent", ownedForm.Owner.Text, "#41");
  650. ownedForm.Dispose ();
  651. parent.Dispose ();
  652. }
  653. [Test] // bug #80020
  654. public void IsHandleCreated ()
  655. {
  656. Form main = new Form ();
  657. main.Name = "main";
  658. main.IsMdiContainer = true;
  659. main.ShowInTaskbar = false;
  660. Assert.IsFalse (main.IsHandleCreated, "#1");
  661. Form child = new Form ();
  662. child.MdiParent = main;
  663. child.WindowState = FormWindowState.Maximized;
  664. Assert.IsFalse (main.IsHandleCreated, "#2");
  665. child.Show ();
  666. Assert.IsFalse (child.IsHandleCreated, "#3");
  667. Assert.IsFalse (main.IsHandleCreated, "#4");
  668. main.Show ();
  669. Assert.IsTrue (child.IsHandleCreated, "#5");
  670. Assert.IsTrue (main.IsHandleCreated, "#6");
  671. child.Dispose ();
  672. main.Dispose ();
  673. }
  674. [Test]
  675. public void RemoveOwnedFormTest ()
  676. {
  677. Form myform = new Form ();
  678. myform.ShowInTaskbar = false;
  679. myform.Text = "NewForm";
  680. myform.Name = "FormTest";
  681. myform.RemoveOwnedForm (myform);
  682. myform.Show ();
  683. Assert.AreEqual (null, myform.Owner, "#44");
  684. myform.Dispose ();
  685. }
  686. [Test]
  687. public void SetDesktopBoundsTest ()
  688. {
  689. Form myform = new Form ();
  690. myform.ShowInTaskbar = false;
  691. myform.Visible = true;
  692. myform.Text = "NewForm";
  693. myform.Name = "FormTest";
  694. myform.SetDesktopBounds (10, 10, 200 , 200);
  695. Assert.AreEqual (200, myform.DesktopBounds.Height, "#45");
  696. myform.Dispose ();
  697. }
  698. [Test]
  699. public void SetDesktopLocationTest ()
  700. {
  701. Form myform = new Form ();
  702. myform.ShowInTaskbar = false;
  703. myform.Visible = true;
  704. myform.Text = "NewForm";
  705. myform.Name = "FormTest";
  706. myform.SetDesktopLocation (10, 10);
  707. Assert.AreEqual (10, myform.DesktopLocation.X, "#46");
  708. myform.Dispose ();
  709. }
  710. [Test]
  711. public void SetDialogResultOutOfRange ()
  712. {
  713. Form myform = new Form ();
  714. myform.ShowInTaskbar = false;
  715. try {
  716. myform.DialogResult = (DialogResult) (-1);
  717. Assert.Fail ("#48");
  718. } catch (InvalidEnumArgumentException) {
  719. }
  720. try {
  721. myform.DialogResult = (DialogResult) ((int) DialogResult.No + 1);
  722. Assert.Fail ("#49");
  723. } catch (InvalidEnumArgumentException) {
  724. }
  725. myform.Dispose ();
  726. }
  727. void myform_set_dialogresult (object sender, EventArgs e)
  728. {
  729. Form f = (Form)sender;
  730. f.DialogResult = DialogResult.OK;
  731. }
  732. void myform_close (object sender, EventArgs e)
  733. {
  734. Form f = (Form)sender;
  735. f.Close();
  736. }
  737. [Test]
  738. public void SetDialogResult ()
  739. {
  740. Form myform = new Form ();
  741. myform.ShowInTaskbar = false;
  742. myform.Visible = true;
  743. myform.DialogResult = DialogResult.Cancel;
  744. Assert.IsTrue (myform.Visible, "A1");
  745. Assert.IsFalse (myform.IsDisposed, "A2");
  746. myform.Close ();
  747. Assert.IsFalse (myform.Visible, "A3");
  748. Assert.IsTrue (myform.IsDisposed, "A4");
  749. DialogResult result;
  750. myform = new Form ();
  751. myform.ShowInTaskbar = false;
  752. myform.VisibleChanged += new EventHandler (myform_set_dialogresult);
  753. result = myform.ShowDialog ();
  754. Assert.AreEqual (result, DialogResult.OK, "A5");
  755. Assert.IsFalse (myform.Visible, "A6");
  756. Assert.IsFalse (myform.IsDisposed, "A7");
  757. myform = new Form ();
  758. myform.ShowInTaskbar = false;
  759. myform.VisibleChanged += new EventHandler (myform_close);
  760. result = myform.ShowDialog ();
  761. Assert.AreEqual (result, DialogResult.Cancel, "A8");
  762. Assert.IsFalse (myform.Visible, "A9");
  763. Assert.IsFalse (myform.IsDisposed, "A10");
  764. }
  765. [Test]
  766. public void ShowDialog_Child ()
  767. {
  768. Form main = new Form ();
  769. main.IsMdiContainer = true;
  770. Form child = new Form ();
  771. child.MdiParent = main;
  772. try {
  773. child.ShowDialog ();
  774. Assert.Fail ("#1");
  775. } catch (InvalidOperationException ex) {
  776. // Forms that are not top level forms cannot be displayed as a
  777. // modal dialog. Remove the form from any parent form before
  778. // calling ShowDialog.
  779. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
  780. Assert.IsNull (ex.InnerException, "#3");
  781. Assert.IsNotNull (ex.Message, "#4");
  782. }
  783. Assert.IsNull (child.Owner, "#5");
  784. child.Dispose ();
  785. main.Dispose ();
  786. }
  787. [Test]
  788. public void ShowDialog_Disabled ()
  789. {
  790. Form form = new Form ();
  791. form.Enabled = false;
  792. try {
  793. form.ShowDialog ();
  794. Assert.Fail ("#A1");
  795. } catch (InvalidOperationException ex) {
  796. // Forms that are not enabled cannot be displayed as a modal
  797. // dialog. Set the form's enabled property to true before
  798. // calling ShowDialog.
  799. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
  800. Assert.IsNull (ex.InnerException, "#A3");
  801. Assert.IsNotNull (ex.Message, "#A4");
  802. }
  803. Assert.IsNull (form.Owner, "#A5");
  804. form.Dispose ();
  805. Form main = new Form ();
  806. form = new Form ();
  807. form.Owner = main;
  808. form.Enabled = false;
  809. try {
  810. form.ShowDialog ();
  811. Assert.Fail ("#B1");
  812. } catch (InvalidOperationException) {
  813. }
  814. Assert.IsNotNull (form.Owner, "#B2");
  815. Assert.AreSame (main, form.Owner, "#B3");
  816. form.Dispose ();
  817. main.Dispose ();
  818. }
  819. [Test]
  820. [Category ("NotWorking")]
  821. public void ShowDialog_Owner_Circular ()
  822. {
  823. Form main = new Form ();
  824. Form child = new Form ();
  825. child.Owner = main;
  826. try {
  827. main.ShowDialog (child);
  828. Assert.Fail ("#1");
  829. } catch (ArgumentException ex) {
  830. // A circular control reference has been made. A control cannot
  831. // be owned or parented to itself
  832. Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
  833. Assert.IsNull (ex.InnerException, "#3");
  834. Assert.IsNotNull (ex.Message, "#4");
  835. Assert.IsNull (ex.ParamName, "#5");
  836. }
  837. Assert.IsNull (main.Owner, "#6");
  838. main.Dispose ();
  839. child.Dispose ();
  840. }
  841. [Test] // bug #80773
  842. [Category ("NotWorking")]
  843. public void ShowDialog_Owner_Self ()
  844. {
  845. Form form = new Form ();
  846. try {
  847. form.ShowDialog (form);
  848. Assert.Fail ("#A1");
  849. } catch (ArgumentException ex) {
  850. // Forms cannot own themselves or their owners
  851. Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
  852. Assert.IsNull (ex.InnerException, "#A3");
  853. Assert.IsNotNull (ex.Message, "#A4");
  854. Assert.IsNotNull (ex.ParamName, "#A5");
  855. Assert.AreEqual ("owner", ex.ParamName, "#A6");
  856. }
  857. Assert.IsNull (form.Owner, "#A7");
  858. form.Dispose ();
  859. Form main = new Form ();
  860. form = new Form ();
  861. form.Owner = main;
  862. try {
  863. form.ShowDialog (form);
  864. Assert.Fail ("#B1");
  865. } catch (ArgumentException) {
  866. }
  867. Assert.IsNotNull (form.Owner);
  868. Assert.AreSame (main, form.Owner, "#B2");
  869. form.Dispose ();
  870. main.Dispose ();
  871. }
  872. [Test]
  873. public void ShowDialog_Visible ()
  874. {
  875. Form form = new Form ();
  876. form.ShowInTaskbar = false;
  877. form.Visible = true;
  878. try {
  879. form.ShowDialog ();
  880. Assert.Fail ("#A1");
  881. } catch (InvalidOperationException ex) {
  882. // Forms that are already visible cannot be displayed as a modal
  883. // dialog. Set the form's visible property to false before
  884. // calling ShowDialog.
  885. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
  886. Assert.IsNull (ex.InnerException, "#A3");
  887. Assert.IsNotNull (ex.Message, "#A4");
  888. }
  889. Assert.IsNull (form.Owner, "#A5");
  890. form.Dispose ();
  891. Form main = new Form ();
  892. form = new Form ();
  893. form.Owner = main;
  894. form.Visible = true;
  895. try {
  896. form.ShowDialog ();
  897. Assert.Fail ("#B1");
  898. } catch (InvalidOperationException) {
  899. }
  900. Assert.IsNotNull (form.Owner, "#B2");
  901. Assert.AreSame (main, form.Owner, "#B3");
  902. form.Dispose ();
  903. main.Dispose ();
  904. }
  905. [Test] // bug #80604
  906. public void VisibleOnLoad ()
  907. {
  908. MockForm form = new MockForm ();
  909. form.CloseOnLoad = true;
  910. Application.Run (form);
  911. Assert.IsTrue (form.VisibleOnLoad, "#1");
  912. form.Dispose ();
  913. form = new MockForm ();
  914. form.ShowInTaskbar = false;
  915. form.Show ();
  916. Assert.IsTrue (form.VisibleOnLoad, "#2");
  917. form.Dispose ();
  918. }
  919. [Test] // bug #80052
  920. [Category ("NotWorking")]
  921. public void Location ()
  922. {
  923. //
  924. // CenterParent
  925. //
  926. Form formA = new Form ();
  927. formA.ShowInTaskbar = false;
  928. formA.StartPosition = FormStartPosition.CenterParent;
  929. formA.Location = new Point (151, 251);
  930. formA.Show ();
  931. Assert.AreEqual (FormStartPosition.CenterParent, formA.StartPosition, "#A1");
  932. Assert.IsFalse (formA.Location.X == 151, "#A2");
  933. Assert.IsFalse (formA.Location.Y == 251, "#A3");
  934. formA.Location = new Point (311, 221);
  935. Assert.AreEqual (FormStartPosition.CenterParent, formA.StartPosition, "#A4");
  936. Assert.AreEqual (311, formA.Location.X, "#A5");
  937. Assert.AreEqual (221, formA.Location.Y, "#A6");
  938. formA.Dispose ();
  939. //
  940. // CenterScreen
  941. //
  942. Form formB = new Form ();
  943. formB.ShowInTaskbar = false;
  944. formB.StartPosition = FormStartPosition.CenterScreen;
  945. formB.Location = new Point (151, 251);
  946. formB.Show ();
  947. Assert.AreEqual (FormStartPosition.CenterScreen, formB.StartPosition, "#B1");
  948. Assert.IsFalse (formB.Location.X == 151, "#B2");
  949. Assert.IsFalse (formB.Location.Y == 251, "#B3");
  950. formB.Location = new Point (311, 221);
  951. Assert.AreEqual (FormStartPosition.CenterScreen, formB.StartPosition, "#B4");
  952. Assert.AreEqual (311, formB.Location.X, "#B5");
  953. Assert.AreEqual (221, formB.Location.Y, "#B6");
  954. formB.Dispose ();
  955. //
  956. // Manual
  957. //
  958. Form formC = new Form ();
  959. formC.ShowInTaskbar = false;
  960. formC.StartPosition = FormStartPosition.Manual;
  961. formC.Location = new Point (151, 251);
  962. formC.Show ();
  963. Assert.AreEqual (FormStartPosition.Manual, formC.StartPosition, "#C1");
  964. Assert.AreEqual (151, formC.Location.X, "#C2");
  965. Assert.AreEqual (251, formC.Location.Y, "#C3");
  966. formC.Location = new Point (311, 221);
  967. Assert.AreEqual (FormStartPosition.Manual, formC.StartPosition, "#C4");
  968. Assert.AreEqual (311, formC.Location.X, "#C5");
  969. Assert.AreEqual (221, formC.Location.Y, "#C6");
  970. formC.Dispose ();
  971. //
  972. // WindowsDefaultBounds
  973. //
  974. Form formD = new Form ();
  975. formD.ShowInTaskbar = false;
  976. formD.StartPosition = FormStartPosition.WindowsDefaultBounds;
  977. formD.Location = new Point (151, 251);
  978. formD.Show ();
  979. Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, formD.StartPosition, "#D1");
  980. Assert.IsFalse (formD.Location.X == 151, "#D2");
  981. Assert.IsFalse (formD.Location.Y == 251, "#D3");
  982. formD.Location = new Point (311, 221);
  983. Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, formD.StartPosition, "#D4");
  984. Assert.AreEqual (311, formD.Location.X, "#D5");
  985. Assert.AreEqual (221, formD.Location.Y, "#D6");
  986. formD.Dispose ();
  987. //
  988. // WindowsDefaultLocation
  989. //
  990. Form formE = new Form ();
  991. formE.ShowInTaskbar = false;
  992. formE.Location = new Point (151, 251);
  993. formE.Show ();
  994. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, formE.StartPosition, "#E1");
  995. Assert.IsFalse (formE.Location.X == 151, "#E2");
  996. Assert.IsFalse (formE.Location.Y == 251, "#E3");
  997. formE.Location = new Point (311, 221);
  998. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, formE.StartPosition, "#E4");
  999. Assert.AreEqual (311, formE.Location.X, "#E5");
  1000. Assert.AreEqual (221, formE.Location.Y, "#E6");
  1001. formE.Dispose ();
  1002. }
  1003. [Test]
  1004. public void DisposeOwnerTest ()
  1005. {
  1006. Form f1 = new Form ();
  1007. Form f2 = new Form ();
  1008. f2.Owner = f1;
  1009. f1.Dispose ();
  1010. Assert.IsNull (f2.Owner, "1");
  1011. Assert.AreEqual (0, f1.OwnedForms.Length, "2");
  1012. }
  1013. [Test]
  1014. [ExpectedException (typeof (ObjectDisposedException))]
  1015. public void AccessDisposedForm ()
  1016. {
  1017. Form myform = new Form ();
  1018. myform.ShowInTaskbar = false;
  1019. myform.Show ();
  1020. myform.Close (); // this should result in the form being disposed
  1021. myform.Show (); // and this line should result in the ODE being thrown
  1022. }
  1023. class MyForm : Form
  1024. {
  1025. public void DoDestroyHandle ()
  1026. {
  1027. DestroyHandle();
  1028. }
  1029. public void DoRecreateHandle ()
  1030. {
  1031. RecreateHandle();
  1032. }
  1033. }
  1034. int handle_destroyed_count;
  1035. void handle_destroyed (object sender, EventArgs e)
  1036. {
  1037. handle_destroyed_count++;
  1038. }
  1039. [Test]
  1040. public void DestroyHandleTest ()
  1041. {
  1042. handle_destroyed_count = 0;
  1043. MyForm f1 = new MyForm ();
  1044. f1.HandleDestroyed += new EventHandler (handle_destroyed);
  1045. f1.Show ();
  1046. f1.DoDestroyHandle ();
  1047. Assert.AreEqual (1, handle_destroyed_count, "1");
  1048. f1 = new MyForm ();
  1049. f1.HandleDestroyed += new EventHandler (handle_destroyed);
  1050. f1.Show ();
  1051. f1.DoRecreateHandle ();
  1052. Assert.AreEqual (2, handle_destroyed_count, "2");
  1053. }
  1054. [Test]
  1055. public void FormClose ()
  1056. {
  1057. Form myform = new Form ();
  1058. myform.ShowInTaskbar = false;
  1059. Assert.IsFalse (myform.Visible, "A1");
  1060. Assert.IsFalse (myform.IsDisposed, "A2");
  1061. myform.Close ();
  1062. Assert.IsFalse (myform.Visible, "A3");
  1063. Assert.IsFalse (myform.IsDisposed, "A4");
  1064. myform.Show ();
  1065. Assert.IsTrue (myform.Visible, "A5");
  1066. Assert.IsFalse (myform.IsDisposed, "A6");
  1067. myform.Close ();
  1068. Assert.IsFalse (myform.Visible, "A7");
  1069. Assert.IsTrue (myform.IsDisposed, "A8");
  1070. }
  1071. [Test]
  1072. public void FormClose2 ()
  1073. {
  1074. WMCloseWatcher f = new WMCloseWatcher ();
  1075. f.ShowInTaskbar = false;
  1076. f.close_count = 0;
  1077. Assert.IsFalse (f.Visible, "A1");
  1078. f.Close ();
  1079. Assert.AreEqual (0, f.close_count, "A2");
  1080. f.Show ();
  1081. f.Close ();
  1082. Assert.AreEqual (1, f.close_count, "A3");
  1083. }
  1084. class WMCloseWatcher : Form {
  1085. public int close_count;
  1086. protected override void WndProc (ref Message msg) {
  1087. if (msg.Msg == 0x0010 /* WM_CLOSE */) {
  1088. close_count ++;
  1089. }
  1090. base.WndProc (ref msg);
  1091. }
  1092. }
  1093. class SwallowOnActivated : Form {
  1094. protected override void OnActivated (EventArgs e)
  1095. {
  1096. // do nothing
  1097. }
  1098. protected override void OnCreateControl () {
  1099. base.OnCreateControl ();
  1100. }
  1101. }
  1102. class EnterTest : Button {
  1103. protected override void OnEnter (EventArgs e)
  1104. {
  1105. on_enter = true;
  1106. base.OnEnter (e);
  1107. }
  1108. public bool on_enter;
  1109. }
  1110. [Test]
  1111. public void OnActivateEventHandlingTest1 ()
  1112. {
  1113. if (RunningOnUnix) {
  1114. Assert.Ignore ("Relies on form.Show() synchronously generating WM_ACTIVATE");
  1115. }
  1116. SwallowOnActivated f = new SwallowOnActivated ();
  1117. f.ShowInTaskbar = false;
  1118. EnterTest c = new EnterTest ();
  1119. f.Controls.Add (c);
  1120. f.Show ();
  1121. Assert.IsTrue (c.on_enter, "1");
  1122. f.Dispose ();
  1123. }
  1124. #if NET_2_0
  1125. [Test]
  1126. public void FormClosingEvents ()
  1127. {
  1128. // Standard Close
  1129. Form f = new Form ();
  1130. string events = string.Empty;
  1131. f.Closing += new CancelEventHandler (delegate (Object obj, CancelEventArgs e) { events += ("Closing;"); });
  1132. f.FormClosing += new FormClosingEventHandler (delegate (Object obj, FormClosingEventArgs e) { events += string.Format ("FormClosing [Reason:{0} - Cancel:{1}]", e.CloseReason, e.Cancel); });
  1133. f.Show ();
  1134. f.Close ();
  1135. Assert.AreEqual ("Closing;FormClosing [Reason:UserClosing - Cancel:False]", events, "A1");
  1136. }
  1137. [Test]
  1138. public void FormClosingEventsCancel ()
  1139. {
  1140. // Shows that setting Cancel in Closing flows through to FormClosing
  1141. Form f = new Form ();
  1142. string events = string.Empty;
  1143. f.Closing += new CancelEventHandler (delegate (Object obj, CancelEventArgs e) { events += ("Closing;"); e.Cancel = true; });
  1144. f.FormClosing += new FormClosingEventHandler (delegate (Object obj, FormClosingEventArgs e) { events += string.Format("FormClosing [Reason:{0} - Cancel:{1}]", e.CloseReason, e.Cancel); e.Cancel = false; });
  1145. f.Show ();
  1146. f.Close ();
  1147. Assert.AreEqual ("Closing;FormClosing [Reason:UserClosing - Cancel:True]", events, "A1");
  1148. }
  1149. [Test]
  1150. public void FormClosedEvents ()
  1151. {
  1152. // Standard Closed
  1153. Form f = new Form ();
  1154. string events = string.Empty;
  1155. f.Closed += new EventHandler (delegate (Object obj, EventArgs e) { events += ("Closed;"); });
  1156. f.FormClosed += new FormClosedEventHandler (delegate (Object obj, FormClosedEventArgs e) { events += string.Format ("FormClosed [Reason:{0}]", e.CloseReason); });
  1157. f.Show ();
  1158. f.Close ();
  1159. Assert.AreEqual ("Closed;FormClosed [Reason:UserClosing]", events, "A1");
  1160. }
  1161. [Test]
  1162. public void ShowWithOwner ()
  1163. {
  1164. Form f = new Form ();
  1165. Button b = new Button ();
  1166. f.Controls.Add (b);
  1167. Form f2 = new Form ();
  1168. f2.Show (f);
  1169. Assert.AreSame (f, f2.Owner, "A1");
  1170. f2 = new Form ();
  1171. f2.Show (b);
  1172. Assert.AreSame (f, f2.Owner, "A2");
  1173. Button b2 = new Button ();
  1174. f2 = new Form ();
  1175. f2.Show (b2);
  1176. Assert.AreEqual (null, f2.Owner, "A3");
  1177. f2 = new Form ();
  1178. f2.Show (null);
  1179. Assert.AreEqual (null, f2.Owner, "A4");
  1180. }
  1181. [Test]
  1182. [ExpectedException (typeof (InvalidOperationException))]
  1183. public void ShowWithOwnerIOE ()
  1184. {
  1185. Form f = new Form ();
  1186. f.Show (f);
  1187. }
  1188. [Test] // Bug #79959, #80574, #80791
  1189. [Category ("NotWorking")]
  1190. public void BehaviorResizeOnBorderStyleChanged ()
  1191. {
  1192. // Marked NotWorking because the ClientSize is dependent on the WM.
  1193. // The values below match XP Luna to make sure our behavior is the same.
  1194. Form f = new Form ();
  1195. f.ShowInTaskbar = false;
  1196. f.Show ();
  1197. Assert.AreEqual (true, f.IsHandleCreated, "A0");
  1198. Assert.AreEqual (new Size (300, 300), f.Size, "A1");
  1199. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A2");
  1200. f.FormBorderStyle = FormBorderStyle.Fixed3D;
  1201. Assert.AreEqual (new Size (302, 302), f.Size, "A3");
  1202. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A4");
  1203. f.FormBorderStyle = FormBorderStyle.FixedDialog;
  1204. Assert.AreEqual (new Size (298, 298), f.Size, "A5");
  1205. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A6");
  1206. f.FormBorderStyle = FormBorderStyle.FixedSingle;
  1207. Assert.AreEqual (new Size (298, 298), f.Size, "A7");
  1208. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A8");
  1209. f.FormBorderStyle = FormBorderStyle.FixedToolWindow;
  1210. Assert.AreEqual (new Size (298, 290), f.Size, "A9");
  1211. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A0");
  1212. f.FormBorderStyle = FormBorderStyle.None;
  1213. Assert.AreEqual (new Size (292, 266), f.Size, "A11");
  1214. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A12");
  1215. f.FormBorderStyle = FormBorderStyle.SizableToolWindow;
  1216. Assert.AreEqual (new Size (300, 292), f.Size, "A13");
  1217. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A14");
  1218. f.FormBorderStyle = FormBorderStyle.Sizable;
  1219. Assert.AreEqual (new Size (300, 300), f.Size, "A15");
  1220. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A16");
  1221. f.Close ();
  1222. }
  1223. [Test] // Bug #80574, #80791
  1224. [Category ("NotWorking")]
  1225. public void BehaviorResizeOnBorderStyleChangedNotVisible ()
  1226. {
  1227. // Marked NotWorking because the ClientSize is dependent on the WM.
  1228. // The values below match XP Luna to make sure our behavior is the same.
  1229. Form f = new Form ();
  1230. f.ShowInTaskbar = false;
  1231. Assert.AreEqual (false, f.IsHandleCreated, "A0");
  1232. Assert.AreEqual (new Size (300, 300), f.Size, "A1");
  1233. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A2");
  1234. f.FormBorderStyle = FormBorderStyle.Fixed3D;
  1235. Assert.AreEqual (new Size (300, 300), f.Size, "A3");
  1236. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A4");
  1237. f.FormBorderStyle = FormBorderStyle.FixedDialog;
  1238. Assert.AreEqual (new Size (300, 300), f.Size, "A5");
  1239. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A6");
  1240. f.FormBorderStyle = FormBorderStyle.FixedSingle;
  1241. Assert.AreEqual (new Size (300, 300), f.Size, "A7");
  1242. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A8");
  1243. f.FormBorderStyle = FormBorderStyle.FixedToolWindow;
  1244. Assert.AreEqual (new Size (300, 300), f.Size, "A9");
  1245. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A0");
  1246. f.FormBorderStyle = FormBorderStyle.None;
  1247. Assert.AreEqual (new Size (300, 300), f.Size, "A11");
  1248. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A12");
  1249. f.FormBorderStyle = FormBorderStyle.SizableToolWindow;
  1250. Assert.AreEqual (new Size (300, 300), f.Size, "A13");
  1251. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A14");
  1252. f.FormBorderStyle = FormBorderStyle.Sizable;
  1253. Assert.AreEqual (new Size (300, 300), f.Size, "A15");
  1254. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A16");
  1255. }
  1256. [Test] // Bug #80574, #80791
  1257. [Category ("NotWorking")]
  1258. public void MoreBehaviorResizeOnBorderStyleChangedNotVisible ()
  1259. {
  1260. // Marked NotWorking because the ClientSize is dependent on the WM.
  1261. // The values below match XP Luna to make sure our behavior is the same.
  1262. Form f = new Form ();
  1263. f.ShowInTaskbar = false;
  1264. f.Show ();
  1265. f.Hide ();
  1266. Assert.AreEqual (true, f.IsHandleCreated, "A0");
  1267. f.FormBorderStyle = FormBorderStyle.Sizable;
  1268. Assert.AreEqual (new Size (300, 300), f.Size, "A1");
  1269. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A2");
  1270. f.FormBorderStyle = FormBorderStyle.None;
  1271. Assert.AreEqual (new Size (292, 266), f.Size, "A3");
  1272. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A4");
  1273. }
  1274. #endif
  1275. [Test] // Bug #80773
  1276. public void DontSetOwnerOnShowDialogException ()
  1277. {
  1278. Form f = new Form ();
  1279. f.ShowInTaskbar = false;
  1280. try { f.ShowDialog (f); }
  1281. catch { }
  1282. Assert.AreEqual (null, f.Owner, "H1");
  1283. }
  1284. private bool RunningOnUnix {
  1285. get {
  1286. // check for Unix platforms - see FAQ for more details
  1287. // http://www.mono-project.com/FAQ:_Technical#How_to_detect_the_execution_platform_.3F
  1288. int platform = (int) Environment.OSVersion.Platform;
  1289. return ((platform == 4) || (platform == 128));
  1290. }
  1291. }
  1292. private class MockForm : Form
  1293. {
  1294. public bool CloseOnLoad {
  1295. get { return _closeOnLoad; }
  1296. set { _closeOnLoad = value; }
  1297. }
  1298. public bool VisibleOnLoad {
  1299. get { return _visibleOnLoad; }
  1300. }
  1301. protected override void OnLoad(EventArgs e) {
  1302. base.OnLoad(e);
  1303. _visibleOnLoad = Visible;
  1304. if (CloseOnLoad)
  1305. Close ();
  1306. }
  1307. private bool _closeOnLoad;
  1308. private bool _visibleOnLoad;
  1309. }
  1310. }
  1311. }