FormTest.cs 61 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604
  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. using (frm = new Form ()) {
  553. frm.ControlBox = false;
  554. frm.Text = "";
  555. 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), "#28-Style");
  556. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#28-ExStyle");
  557. }
  558. }
  559. [Test]
  560. public void FormParentedTest ()
  561. {
  562. using (Form frm = new Form ()) {
  563. Form frm2 = new Form ();
  564. frm2.TopLevel = false;
  565. frm.ShowInTaskbar = false;
  566. frm2.ShowInTaskbar = false;
  567. frm2.Visible = true;
  568. frm.Visible = true;
  569. EventLogger log = new EventLogger (frm);
  570. EventLogger log2 = new EventLogger (frm2);
  571. frm.Controls.Add (frm2);
  572. Assert.IsTrue (log2.EventRaised ("ParentChanged"), "#C1");
  573. Assert.IsTrue (log.EventRaised ("ControlAdded"), "#P1");
  574. Assert.AreSame (frm, frm2.Parent, "#02");
  575. }
  576. }
  577. [Test]
  578. public void FormPropertyTest ()
  579. {
  580. Form myform = new Form ();
  581. myform.Visible = true;
  582. myform.Text = "NewForm";
  583. myform.Name = "FormTest";
  584. Assert.IsNull (myform.AcceptButton, "#1");
  585. Assert.IsNull (myform.ActiveMdiChild, "#2");
  586. Assert.IsFalse (myform.AutoScale, "#3");
  587. Assert.IsNull (myform.CancelButton, "#6");
  588. Assert.IsTrue (myform.ControlBox, "#9");
  589. Assert.IsTrue (myform.DesktopBounds.X > 0, "#10a");
  590. Assert.IsTrue (myform.DesktopBounds.Y > 0, "#10b");
  591. Assert.AreEqual (300, myform.DesktopBounds.Height, "#10c");
  592. Assert.AreEqual (300, myform.DesktopBounds.Width, "#10d");
  593. Assert.IsTrue (myform.DesktopLocation.X > 0, "#11a");
  594. Assert.IsTrue (myform.DesktopLocation.Y > 0, "#11b");
  595. Assert.AreEqual (DialogResult.None, myform.DialogResult, "#12");
  596. Assert.AreEqual (FormBorderStyle.Sizable, myform.FormBorderStyle, "#13");
  597. Assert.IsFalse (myform.HelpButton, "#14");
  598. Assert.AreEqual ("System.Drawing.Icon", myform.Icon.GetType ().ToString (), "#15");
  599. Assert.IsFalse (myform.IsMdiChild, "#16");
  600. Assert.IsFalse (myform.IsMdiContainer, "#17");
  601. Assert.IsFalse (myform.KeyPreview, "#18");
  602. Assert.IsTrue (myform.MaximizeBox, "#19");
  603. Assert.AreEqual (0, myform.MaximumSize.Height, "#20a");
  604. Assert.AreEqual (0, myform.MaximumSize.Width, "#20b");
  605. Assert.AreEqual (0, myform.MdiChildren.Length, "#21a");
  606. Assert.AreEqual (1, myform.MdiChildren.Rank, "#21b");
  607. Assert.IsFalse (myform.MdiChildren.IsSynchronized, "#21c");
  608. Assert.IsNull (myform.MdiParent, "#22");
  609. Assert.IsNull (myform.Menu, "#23");
  610. Assert.IsNull (myform.MergedMenu, "#24");
  611. Assert.IsTrue (myform.MinimizeBox, "#25");
  612. Assert.AreEqual (0, myform.MinimumSize.Height, "#26a");
  613. Assert.AreEqual (0, myform.MinimumSize.Width, "#26b");
  614. Assert.IsTrue (myform.MinimumSize.IsEmpty, "#26c");
  615. Assert.IsFalse (myform.Modal, "#27");
  616. Assert.AreEqual (1, myform.Opacity, "#28");
  617. Assert.AreEqual (0, myform.OwnedForms.Length, "#29a");
  618. Assert.AreEqual (1, myform.OwnedForms.Rank, "#29b");
  619. Assert.IsNull (myform.Owner, "#30");
  620. Assert.IsTrue (myform.ShowInTaskbar, "#31");
  621. Assert.AreEqual (300, myform.Size.Height, "#32a");
  622. Assert.AreEqual (300, myform.Size.Width, "#32b");
  623. Assert.AreEqual (SizeGripStyle.Auto, myform.SizeGripStyle, "#33");
  624. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, myform.StartPosition, "#34");
  625. Assert.IsTrue (myform.TopLevel, "#35");
  626. Assert.IsFalse (myform.TopMost, "#36");
  627. Assert.AreEqual (Color.Empty, myform.TransparencyKey, "#37");
  628. Assert.AreEqual (FormWindowState.Normal, myform.WindowState, "#38");
  629. Assert.AreEqual (ImeMode.NoControl, myform.ImeMode, "#39");
  630. myform.Dispose ();
  631. }
  632. [Test]
  633. [Category ("NotWorking")]
  634. public void ActivateTest ()
  635. {
  636. Form myform = new Form ();
  637. myform.ShowInTaskbar = false;
  638. myform.Visible = true;
  639. myform.Text = "NewForm";
  640. myform.Name = "FormTest";
  641. myform.Activate ();
  642. Assert.AreEqual (true, myform.Focus (), "#40");
  643. myform.Dispose ();
  644. }
  645. [Test]
  646. public void AddOwnedFormTest ()
  647. {
  648. Form parent = new Form ();
  649. parent.ShowInTaskbar = false;
  650. parent.Text = "NewParent";
  651. Form ownedForm = new Form ();
  652. ownedForm.ShowInTaskbar = false;
  653. ownedForm.Text = "Owned Form";
  654. parent.AddOwnedForm (ownedForm);
  655. ownedForm.Show ();
  656. Assert.AreEqual ("NewParent", ownedForm.Owner.Text, "#41");
  657. ownedForm.Dispose ();
  658. parent.Dispose ();
  659. }
  660. [Test] // bug #80020
  661. public void IsHandleCreated ()
  662. {
  663. Form main = new Form ();
  664. main.Name = "main";
  665. main.IsMdiContainer = true;
  666. main.ShowInTaskbar = false;
  667. Assert.IsFalse (main.IsHandleCreated, "#1");
  668. Form child = new Form ();
  669. child.MdiParent = main;
  670. child.WindowState = FormWindowState.Maximized;
  671. Assert.IsFalse (main.IsHandleCreated, "#2");
  672. child.Show ();
  673. Assert.IsFalse (child.IsHandleCreated, "#3");
  674. Assert.IsFalse (main.IsHandleCreated, "#4");
  675. main.Show ();
  676. Assert.IsTrue (child.IsHandleCreated, "#5");
  677. Assert.IsTrue (main.IsHandleCreated, "#6");
  678. child.Dispose ();
  679. main.Dispose ();
  680. }
  681. [Test]
  682. public void RemoveOwnedFormTest ()
  683. {
  684. Form myform = new Form ();
  685. myform.ShowInTaskbar = false;
  686. myform.Text = "NewForm";
  687. myform.Name = "FormTest";
  688. myform.RemoveOwnedForm (myform);
  689. myform.Show ();
  690. Assert.AreEqual (null, myform.Owner, "#44");
  691. myform.Dispose ();
  692. }
  693. [Test]
  694. public void SetDesktopBoundsTest ()
  695. {
  696. Form myform = new Form ();
  697. myform.ShowInTaskbar = false;
  698. myform.Visible = true;
  699. myform.Text = "NewForm";
  700. myform.Name = "FormTest";
  701. myform.SetDesktopBounds (10, 10, 200 , 200);
  702. Assert.AreEqual (200, myform.DesktopBounds.Height, "#45");
  703. myform.Dispose ();
  704. }
  705. [Test]
  706. public void SetDesktopLocationTest ()
  707. {
  708. Form myform = new Form ();
  709. myform.ShowInTaskbar = false;
  710. myform.Visible = true;
  711. myform.Text = "NewForm";
  712. myform.Name = "FormTest";
  713. myform.SetDesktopLocation (10, 10);
  714. Assert.AreEqual (10, myform.DesktopLocation.X, "#46");
  715. myform.Dispose ();
  716. }
  717. [Test]
  718. public void SetDialogResultOutOfRange ()
  719. {
  720. Form myform = new Form ();
  721. myform.ShowInTaskbar = false;
  722. try {
  723. myform.DialogResult = (DialogResult) (-1);
  724. Assert.Fail ("#48");
  725. } catch (InvalidEnumArgumentException) {
  726. }
  727. try {
  728. myform.DialogResult = (DialogResult) ((int) DialogResult.No + 1);
  729. Assert.Fail ("#49");
  730. } catch (InvalidEnumArgumentException) {
  731. }
  732. myform.Dispose ();
  733. }
  734. void myform_set_dialogresult (object sender, EventArgs e)
  735. {
  736. Form f = (Form)sender;
  737. f.DialogResult = DialogResult.OK;
  738. }
  739. void myform_close (object sender, EventArgs e)
  740. {
  741. Form f = (Form)sender;
  742. f.Close();
  743. }
  744. [Test]
  745. public void SetDialogResult ()
  746. {
  747. Form myform = new Form ();
  748. myform.ShowInTaskbar = false;
  749. myform.Visible = true;
  750. myform.DialogResult = DialogResult.Cancel;
  751. Assert.IsTrue (myform.Visible, "A1");
  752. Assert.IsFalse (myform.IsDisposed, "A2");
  753. myform.Close ();
  754. Assert.IsFalse (myform.Visible, "A3");
  755. Assert.IsTrue (myform.IsDisposed, "A4");
  756. DialogResult result;
  757. myform = new Form ();
  758. myform.ShowInTaskbar = false;
  759. myform.VisibleChanged += new EventHandler (myform_set_dialogresult);
  760. result = myform.ShowDialog ();
  761. Assert.AreEqual (result, DialogResult.OK, "A5");
  762. Assert.IsFalse (myform.Visible, "A6");
  763. Assert.IsFalse (myform.IsDisposed, "A7");
  764. myform = new Form ();
  765. myform.ShowInTaskbar = false;
  766. myform.VisibleChanged += new EventHandler (myform_close);
  767. result = myform.ShowDialog ();
  768. Assert.AreEqual (result, DialogResult.Cancel, "A8");
  769. Assert.IsFalse (myform.Visible, "A9");
  770. Assert.IsFalse (myform.IsDisposed, "A10");
  771. }
  772. [Test]
  773. public void ShowDialog_Child ()
  774. {
  775. Form main = new Form ();
  776. main.IsMdiContainer = true;
  777. Form child = new Form ();
  778. child.MdiParent = main;
  779. try {
  780. child.ShowDialog ();
  781. Assert.Fail ("#1");
  782. } catch (InvalidOperationException ex) {
  783. // Forms that are not top level forms cannot be displayed as a
  784. // modal dialog. Remove the form from any parent form before
  785. // calling ShowDialog.
  786. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
  787. Assert.IsNull (ex.InnerException, "#3");
  788. Assert.IsNotNull (ex.Message, "#4");
  789. }
  790. Assert.IsNull (child.Owner, "#5");
  791. child.Dispose ();
  792. main.Dispose ();
  793. }
  794. [Test]
  795. public void ShowDialog_Disabled ()
  796. {
  797. Form form = new Form ();
  798. form.Enabled = false;
  799. try {
  800. form.ShowDialog ();
  801. Assert.Fail ("#A1");
  802. } catch (InvalidOperationException ex) {
  803. // Forms that are not enabled cannot be displayed as a modal
  804. // dialog. Set the form's enabled property to true before
  805. // calling ShowDialog.
  806. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
  807. Assert.IsNull (ex.InnerException, "#A3");
  808. Assert.IsNotNull (ex.Message, "#A4");
  809. }
  810. Assert.IsNull (form.Owner, "#A5");
  811. form.Dispose ();
  812. Form main = new Form ();
  813. form = new Form ();
  814. form.Owner = main;
  815. form.Enabled = false;
  816. try {
  817. form.ShowDialog ();
  818. Assert.Fail ("#B1");
  819. } catch (InvalidOperationException) {
  820. }
  821. Assert.IsNotNull (form.Owner, "#B2");
  822. Assert.AreSame (main, form.Owner, "#B3");
  823. form.Dispose ();
  824. main.Dispose ();
  825. }
  826. [Test]
  827. [Category ("NotWorking")]
  828. public void ShowDialog_Owner_Circular ()
  829. {
  830. Form main = new Form ();
  831. Form child = new Form ();
  832. child.Owner = main;
  833. try {
  834. main.ShowDialog (child);
  835. Assert.Fail ("#1");
  836. } catch (ArgumentException ex) {
  837. // A circular control reference has been made. A control cannot
  838. // be owned or parented to itself
  839. Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
  840. Assert.IsNull (ex.InnerException, "#3");
  841. Assert.IsNotNull (ex.Message, "#4");
  842. Assert.IsNull (ex.ParamName, "#5");
  843. }
  844. Assert.IsNull (main.Owner, "#6");
  845. main.Dispose ();
  846. child.Dispose ();
  847. }
  848. [Test] // bug #80773
  849. public void ShowDialog_Owner_Self ()
  850. {
  851. Form form = new Form ();
  852. try {
  853. form.ShowDialog (form);
  854. Assert.Fail ("#A1");
  855. } catch (ArgumentException ex) {
  856. // Forms cannot own themselves or their owners
  857. Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
  858. Assert.IsNull (ex.InnerException, "#A3");
  859. Assert.IsNotNull (ex.Message, "#A4");
  860. Assert.IsNotNull (ex.ParamName, "#A5");
  861. Assert.AreEqual ("owner", ex.ParamName, "#A6");
  862. }
  863. Assert.IsNull (form.Owner, "#A7");
  864. form.Dispose ();
  865. Form main = new Form ();
  866. form = new Form ();
  867. form.Owner = main;
  868. try {
  869. form.ShowDialog (form);
  870. Assert.Fail ("#B1");
  871. } catch (ArgumentException) {
  872. }
  873. Assert.IsNotNull (form.Owner);
  874. Assert.AreSame (main, form.Owner, "#B2");
  875. form.Dispose ();
  876. main.Dispose ();
  877. }
  878. [Test]
  879. public void ShowDialog_Visible ()
  880. {
  881. Form form = new Form ();
  882. form.ShowInTaskbar = false;
  883. form.Visible = true;
  884. try {
  885. form.ShowDialog ();
  886. Assert.Fail ("#A1");
  887. } catch (InvalidOperationException ex) {
  888. // Forms that are already visible cannot be displayed as a modal
  889. // dialog. Set the form's visible property to false before
  890. // calling ShowDialog.
  891. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
  892. Assert.IsNull (ex.InnerException, "#A3");
  893. Assert.IsNotNull (ex.Message, "#A4");
  894. }
  895. Assert.IsNull (form.Owner, "#A5");
  896. form.Dispose ();
  897. Form main = new Form ();
  898. form = new Form ();
  899. form.Owner = main;
  900. form.Visible = true;
  901. try {
  902. form.ShowDialog ();
  903. Assert.Fail ("#B1");
  904. } catch (InvalidOperationException) {
  905. }
  906. Assert.IsNotNull (form.Owner, "#B2");
  907. Assert.AreSame (main, form.Owner, "#B3");
  908. form.Dispose ();
  909. main.Dispose ();
  910. }
  911. [Test] // bug #80604
  912. public void VisibleOnLoad ()
  913. {
  914. MockForm form = new MockForm ();
  915. form.CloseOnLoad = true;
  916. Application.Run (form);
  917. Assert.IsTrue (form.VisibleOnLoad, "#1");
  918. form.Dispose ();
  919. form = new MockForm ();
  920. form.ShowInTaskbar = false;
  921. form.Show ();
  922. Assert.IsTrue (form.VisibleOnLoad, "#2");
  923. form.Dispose ();
  924. }
  925. [Test] // bug #80052
  926. [Category ("NotWorking")]
  927. public void Location ()
  928. {
  929. //
  930. // CenterParent
  931. //
  932. Form formA = new Form ();
  933. formA.ShowInTaskbar = false;
  934. formA.StartPosition = FormStartPosition.CenterParent;
  935. formA.Location = new Point (151, 251);
  936. formA.Show ();
  937. Assert.AreEqual (FormStartPosition.CenterParent, formA.StartPosition, "#A1");
  938. Assert.IsFalse (formA.Location.X == 151, "#A2");
  939. Assert.IsFalse (formA.Location.Y == 251, "#A3");
  940. formA.Location = new Point (311, 221);
  941. Assert.AreEqual (FormStartPosition.CenterParent, formA.StartPosition, "#A4");
  942. Assert.AreEqual (311, formA.Location.X, "#A5");
  943. Assert.AreEqual (221, formA.Location.Y, "#A6");
  944. formA.Dispose ();
  945. //
  946. // CenterScreen
  947. //
  948. Form formB = new Form ();
  949. formB.ShowInTaskbar = false;
  950. formB.StartPosition = FormStartPosition.CenterScreen;
  951. formB.Location = new Point (151, 251);
  952. formB.Show ();
  953. Assert.AreEqual (FormStartPosition.CenterScreen, formB.StartPosition, "#B1");
  954. Assert.IsFalse (formB.Location.X == 151, "#B2");
  955. Assert.IsFalse (formB.Location.Y == 251, "#B3");
  956. formB.Location = new Point (311, 221);
  957. Assert.AreEqual (FormStartPosition.CenterScreen, formB.StartPosition, "#B4");
  958. Assert.AreEqual (311, formB.Location.X, "#B5");
  959. Assert.AreEqual (221, formB.Location.Y, "#B6");
  960. formB.Dispose ();
  961. //
  962. // Manual
  963. //
  964. Form formC = new Form ();
  965. formC.ShowInTaskbar = false;
  966. formC.StartPosition = FormStartPosition.Manual;
  967. formC.Location = new Point (151, 251);
  968. formC.Show ();
  969. Assert.AreEqual (FormStartPosition.Manual, formC.StartPosition, "#C1");
  970. Assert.AreEqual (151, formC.Location.X, "#C2");
  971. Assert.AreEqual (251, formC.Location.Y, "#C3");
  972. formC.Location = new Point (311, 221);
  973. Assert.AreEqual (FormStartPosition.Manual, formC.StartPosition, "#C4");
  974. Assert.AreEqual (311, formC.Location.X, "#C5");
  975. Assert.AreEqual (221, formC.Location.Y, "#C6");
  976. formC.Dispose ();
  977. //
  978. // WindowsDefaultBounds
  979. //
  980. Form formD = new Form ();
  981. formD.ShowInTaskbar = false;
  982. formD.StartPosition = FormStartPosition.WindowsDefaultBounds;
  983. formD.Location = new Point (151, 251);
  984. formD.Show ();
  985. Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, formD.StartPosition, "#D1");
  986. Assert.IsFalse (formD.Location.X == 151, "#D2");
  987. Assert.IsFalse (formD.Location.Y == 251, "#D3");
  988. formD.Location = new Point (311, 221);
  989. Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, formD.StartPosition, "#D4");
  990. Assert.AreEqual (311, formD.Location.X, "#D5");
  991. Assert.AreEqual (221, formD.Location.Y, "#D6");
  992. formD.Dispose ();
  993. //
  994. // WindowsDefaultLocation
  995. //
  996. Form formE = new Form ();
  997. formE.ShowInTaskbar = false;
  998. formE.Location = new Point (151, 251);
  999. formE.Show ();
  1000. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, formE.StartPosition, "#E1");
  1001. Assert.IsFalse (formE.Location.X == 151, "#E2");
  1002. Assert.IsFalse (formE.Location.Y == 251, "#E3");
  1003. formE.Location = new Point (311, 221);
  1004. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, formE.StartPosition, "#E4");
  1005. Assert.AreEqual (311, formE.Location.X, "#E5");
  1006. Assert.AreEqual (221, formE.Location.Y, "#E6");
  1007. formE.Dispose ();
  1008. }
  1009. [Test]
  1010. public void DisposeOwnerTest ()
  1011. {
  1012. Form f1 = new Form ();
  1013. Form f2 = new Form ();
  1014. f2.Owner = f1;
  1015. f1.Dispose ();
  1016. Assert.IsNull (f2.Owner, "1");
  1017. Assert.AreEqual (0, f1.OwnedForms.Length, "2");
  1018. }
  1019. [Test]
  1020. [ExpectedException (typeof (ObjectDisposedException))]
  1021. public void AccessDisposedForm ()
  1022. {
  1023. Form myform = new Form ();
  1024. myform.ShowInTaskbar = false;
  1025. myform.Show ();
  1026. myform.Close (); // this should result in the form being disposed
  1027. myform.Show (); // and this line should result in the ODE being thrown
  1028. }
  1029. class MyForm : Form
  1030. {
  1031. public void DoDestroyHandle ()
  1032. {
  1033. DestroyHandle();
  1034. }
  1035. public void DoRecreateHandle ()
  1036. {
  1037. RecreateHandle();
  1038. }
  1039. }
  1040. int handle_destroyed_count;
  1041. void handle_destroyed (object sender, EventArgs e)
  1042. {
  1043. handle_destroyed_count++;
  1044. }
  1045. [Test]
  1046. public void DestroyHandleTest ()
  1047. {
  1048. handle_destroyed_count = 0;
  1049. MyForm f1 = new MyForm ();
  1050. f1.HandleDestroyed += new EventHandler (handle_destroyed);
  1051. f1.Show ();
  1052. f1.DoDestroyHandle ();
  1053. Assert.AreEqual (1, handle_destroyed_count, "1");
  1054. f1 = new MyForm ();
  1055. f1.HandleDestroyed += new EventHandler (handle_destroyed);
  1056. f1.Show ();
  1057. f1.DoRecreateHandle ();
  1058. Assert.AreEqual (2, handle_destroyed_count, "2");
  1059. }
  1060. [Test]
  1061. public void FormClose ()
  1062. {
  1063. Form myform = new Form ();
  1064. myform.ShowInTaskbar = false;
  1065. Assert.IsFalse (myform.Visible, "A1");
  1066. Assert.IsFalse (myform.IsDisposed, "A2");
  1067. myform.Close ();
  1068. Assert.IsFalse (myform.Visible, "A3");
  1069. Assert.IsFalse (myform.IsDisposed, "A4");
  1070. myform.Show ();
  1071. Assert.IsTrue (myform.Visible, "A5");
  1072. Assert.IsFalse (myform.IsDisposed, "A6");
  1073. myform.Close ();
  1074. Assert.IsFalse (myform.Visible, "A7");
  1075. Assert.IsTrue (myform.IsDisposed, "A8");
  1076. }
  1077. [Test]
  1078. public void FormClose2 ()
  1079. {
  1080. WMCloseWatcher f = new WMCloseWatcher ();
  1081. f.ShowInTaskbar = false;
  1082. f.close_count = 0;
  1083. Assert.IsFalse (f.Visible, "A1");
  1084. f.Close ();
  1085. Assert.AreEqual (0, f.close_count, "A2");
  1086. f.Show ();
  1087. f.Close ();
  1088. Assert.AreEqual (1, f.close_count, "A3");
  1089. }
  1090. class WMCloseWatcher : Form {
  1091. public int close_count;
  1092. protected override void WndProc (ref Message msg) {
  1093. if (msg.Msg == 0x0010 /* WM_CLOSE */) {
  1094. close_count ++;
  1095. }
  1096. base.WndProc (ref msg);
  1097. }
  1098. }
  1099. class SwallowOnActivated : Form {
  1100. protected override void OnActivated (EventArgs e)
  1101. {
  1102. // do nothing
  1103. }
  1104. protected override void OnCreateControl () {
  1105. base.OnCreateControl ();
  1106. }
  1107. }
  1108. class EnterTest : Button {
  1109. protected override void OnEnter (EventArgs e)
  1110. {
  1111. on_enter = true;
  1112. base.OnEnter (e);
  1113. }
  1114. public bool on_enter;
  1115. }
  1116. [Test]
  1117. public void OnActivateEventHandlingTest1 ()
  1118. {
  1119. if (TestHelper.RunningOnUnix) {
  1120. Assert.Ignore ("Relies on form.Show() synchronously generating WM_ACTIVATE");
  1121. }
  1122. SwallowOnActivated f = new SwallowOnActivated ();
  1123. f.ShowInTaskbar = false;
  1124. EnterTest c = new EnterTest ();
  1125. f.Controls.Add (c);
  1126. f.Show ();
  1127. Assert.IsTrue (c.on_enter, "1");
  1128. f.Dispose ();
  1129. }
  1130. #if NET_2_0
  1131. [Test]
  1132. public void FormClosingEvents ()
  1133. {
  1134. // Standard Close
  1135. Form f = new Form ();
  1136. string events = string.Empty;
  1137. f.Closing += new CancelEventHandler (delegate (Object obj, CancelEventArgs e) { events += ("Closing;"); });
  1138. f.FormClosing += new FormClosingEventHandler (delegate (Object obj, FormClosingEventArgs e) { events += string.Format ("FormClosing [Reason:{0} - Cancel:{1}]", e.CloseReason, e.Cancel); });
  1139. f.Show ();
  1140. f.Close ();
  1141. Assert.AreEqual ("Closing;FormClosing [Reason:UserClosing - Cancel:False]", events, "A1");
  1142. }
  1143. [Test]
  1144. public void FormClosingEventsCancel ()
  1145. {
  1146. // Shows that setting Cancel in Closing flows through to FormClosing
  1147. Form f = new Form ();
  1148. string events = string.Empty;
  1149. f.Closing += new CancelEventHandler (delegate (Object obj, CancelEventArgs e) { events += ("Closing;"); e.Cancel = true; });
  1150. f.FormClosing += new FormClosingEventHandler (delegate (Object obj, FormClosingEventArgs e) { events += string.Format("FormClosing [Reason:{0} - Cancel:{1}]", e.CloseReason, e.Cancel); e.Cancel = false; });
  1151. f.Show ();
  1152. f.Close ();
  1153. Assert.AreEqual ("Closing;FormClosing [Reason:UserClosing - Cancel:True]", events, "A1");
  1154. }
  1155. [Test]
  1156. public void FormClosedEvents ()
  1157. {
  1158. // Standard Closed
  1159. Form f = new Form ();
  1160. string events = string.Empty;
  1161. f.Closed += new EventHandler (delegate (Object obj, EventArgs e) { events += ("Closed;"); });
  1162. f.FormClosed += new FormClosedEventHandler (delegate (Object obj, FormClosedEventArgs e) { events += string.Format ("FormClosed [Reason:{0}]", e.CloseReason); });
  1163. f.Show ();
  1164. f.Close ();
  1165. Assert.AreEqual ("Closed;FormClosed [Reason:UserClosing]", events, "A1");
  1166. }
  1167. [Test]
  1168. public void ShowWithOwner ()
  1169. {
  1170. Form f = new Form ();
  1171. Button b = new Button ();
  1172. f.Controls.Add (b);
  1173. Form f2 = new Form ();
  1174. f2.Show (f);
  1175. Assert.AreSame (f, f2.Owner, "A1");
  1176. f2 = new Form ();
  1177. f2.Show (b);
  1178. Assert.AreSame (f, f2.Owner, "A2");
  1179. Button b2 = new Button ();
  1180. f2 = new Form ();
  1181. f2.Show (b2);
  1182. Assert.AreEqual (null, f2.Owner, "A3");
  1183. f2 = new Form ();
  1184. f2.Show (null);
  1185. Assert.AreEqual (null, f2.Owner, "A4");
  1186. }
  1187. [Test]
  1188. [ExpectedException (typeof (InvalidOperationException))]
  1189. public void ShowWithOwnerIOE ()
  1190. {
  1191. Form f = new Form ();
  1192. f.Show (f);
  1193. }
  1194. [Test] // Bug #79959, #80574, #80791
  1195. [Category ("NotWorking")]
  1196. public void BehaviorResizeOnBorderStyleChanged ()
  1197. {
  1198. // Marked NotWorking because the ClientSize is dependent on the WM.
  1199. // The values below match XP Luna to make sure our behavior is the same.
  1200. Form f = new Form ();
  1201. f.ShowInTaskbar = false;
  1202. f.Show ();
  1203. Assert.AreEqual (true, f.IsHandleCreated, "A0");
  1204. Assert.AreEqual (new Size (300, 300), f.Size, "A1");
  1205. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A2");
  1206. f.FormBorderStyle = FormBorderStyle.Fixed3D;
  1207. Assert.AreEqual (new Size (302, 302), f.Size, "A3");
  1208. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A4");
  1209. f.FormBorderStyle = FormBorderStyle.FixedDialog;
  1210. Assert.AreEqual (new Size (298, 298), f.Size, "A5");
  1211. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A6");
  1212. f.FormBorderStyle = FormBorderStyle.FixedSingle;
  1213. Assert.AreEqual (new Size (298, 298), f.Size, "A7");
  1214. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A8");
  1215. f.FormBorderStyle = FormBorderStyle.FixedToolWindow;
  1216. Assert.AreEqual (new Size (298, 290), f.Size, "A9");
  1217. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A0");
  1218. f.FormBorderStyle = FormBorderStyle.None;
  1219. Assert.AreEqual (new Size (292, 266), f.Size, "A11");
  1220. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A12");
  1221. f.FormBorderStyle = FormBorderStyle.SizableToolWindow;
  1222. Assert.AreEqual (new Size (300, 292), f.Size, "A13");
  1223. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A14");
  1224. f.FormBorderStyle = FormBorderStyle.Sizable;
  1225. Assert.AreEqual (new Size (300, 300), f.Size, "A15");
  1226. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A16");
  1227. f.Close ();
  1228. }
  1229. [Test] // Bug #80574, #80791
  1230. [Category ("NotWorking")]
  1231. public void BehaviorResizeOnBorderStyleChangedNotVisible ()
  1232. {
  1233. // Marked NotWorking because the ClientSize is dependent on the WM.
  1234. // The values below match XP Luna to make sure our behavior is the same.
  1235. Form f = new Form ();
  1236. f.ShowInTaskbar = false;
  1237. Assert.AreEqual (false, f.IsHandleCreated, "A0");
  1238. Assert.AreEqual (new Size (300, 300), f.Size, "A1");
  1239. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A2");
  1240. f.FormBorderStyle = FormBorderStyle.Fixed3D;
  1241. Assert.AreEqual (new Size (300, 300), f.Size, "A3");
  1242. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A4");
  1243. f.FormBorderStyle = FormBorderStyle.FixedDialog;
  1244. Assert.AreEqual (new Size (300, 300), f.Size, "A5");
  1245. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A6");
  1246. f.FormBorderStyle = FormBorderStyle.FixedSingle;
  1247. Assert.AreEqual (new Size (300, 300), f.Size, "A7");
  1248. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A8");
  1249. f.FormBorderStyle = FormBorderStyle.FixedToolWindow;
  1250. Assert.AreEqual (new Size (300, 300), f.Size, "A9");
  1251. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A0");
  1252. f.FormBorderStyle = FormBorderStyle.None;
  1253. Assert.AreEqual (new Size (300, 300), f.Size, "A11");
  1254. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A12");
  1255. f.FormBorderStyle = FormBorderStyle.SizableToolWindow;
  1256. Assert.AreEqual (new Size (300, 300), f.Size, "A13");
  1257. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A14");
  1258. f.FormBorderStyle = FormBorderStyle.Sizable;
  1259. Assert.AreEqual (new Size (300, 300), f.Size, "A15");
  1260. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A16");
  1261. }
  1262. [Test] // Bug #80574, #80791
  1263. [Category ("NotWorking")]
  1264. public void MoreBehaviorResizeOnBorderStyleChangedNotVisible ()
  1265. {
  1266. // Marked NotWorking because the ClientSize is dependent on the WM.
  1267. // The values below match XP Luna to make sure our behavior is the same.
  1268. Form f = new Form ();
  1269. f.ShowInTaskbar = false;
  1270. f.Show ();
  1271. f.Hide ();
  1272. Assert.AreEqual (true, f.IsHandleCreated, "A0");
  1273. f.FormBorderStyle = FormBorderStyle.Sizable;
  1274. Assert.AreEqual (new Size (300, 300), f.Size, "A1");
  1275. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A2");
  1276. f.FormBorderStyle = FormBorderStyle.None;
  1277. Assert.AreEqual (new Size (292, 266), f.Size, "A3");
  1278. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A4");
  1279. }
  1280. #endif
  1281. [Test] // Bug #80773
  1282. public void DontSetOwnerOnShowDialogException ()
  1283. {
  1284. Form f = new Form ();
  1285. f.ShowInTaskbar = false;
  1286. try { f.ShowDialog (f); }
  1287. catch { }
  1288. Assert.AreEqual (null, f.Owner, "H1");
  1289. }
  1290. private class MockForm : Form
  1291. {
  1292. public bool CloseOnLoad {
  1293. get { return _closeOnLoad; }
  1294. set { _closeOnLoad = value; }
  1295. }
  1296. public bool VisibleOnLoad {
  1297. get { return _visibleOnLoad; }
  1298. }
  1299. protected override void OnLoad(EventArgs e) {
  1300. base.OnLoad(e);
  1301. _visibleOnLoad = Visible;
  1302. if (CloseOnLoad)
  1303. Close ();
  1304. }
  1305. private bool _closeOnLoad;
  1306. private bool _visibleOnLoad;
  1307. }
  1308. }
  1309. }