FormTest.cs 66 KB

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