FormTest.cs 61 KB

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