FormTest.cs 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702
  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. namespace MonoTests.System.Windows.Forms
  16. {
  17. [TestFixture]
  18. public class FormTest
  19. {
  20. [Test]
  21. public void FormPropertyTest ()
  22. {
  23. Form myform = new Form ();
  24. myform.Visible = true;
  25. myform.Text = "NewForm";
  26. myform.Name = "FormTest";
  27. Assert.IsNull (myform.AcceptButton, "#1");
  28. Assert.IsNull (myform.ActiveMdiChild, "#2");
  29. Assert.IsFalse (myform.AutoScale, "#3");
  30. Assert.IsNull (myform.CancelButton, "#6");
  31. Assert.IsTrue (myform.ControlBox, "#9");
  32. Assert.IsTrue (myform.DesktopBounds.X > 0, "#10a");
  33. Assert.IsTrue (myform.DesktopBounds.Y > 0, "#10b");
  34. Assert.AreEqual (300, myform.DesktopBounds.Height, "#10c");
  35. Assert.AreEqual (300, myform.DesktopBounds.Width, "#10d");
  36. Assert.IsTrue (myform.DesktopLocation.X > 0, "#11a");
  37. Assert.IsTrue (myform.DesktopLocation.Y > 0, "#11b");
  38. Assert.AreEqual (DialogResult.None, myform.DialogResult, "#12");
  39. Assert.AreEqual (FormBorderStyle.Sizable, myform.FormBorderStyle, "#13");
  40. Assert.IsFalse (myform.HelpButton, "#14");
  41. Assert.AreEqual ("System.Drawing.Icon", myform.Icon.GetType ().ToString (), "#15");
  42. Assert.IsFalse (myform.IsMdiChild, "#16");
  43. Assert.IsFalse (myform.IsMdiContainer, "#17");
  44. Assert.IsFalse (myform.KeyPreview, "#18");
  45. Assert.IsTrue (myform.MaximizeBox, "#19");
  46. Assert.AreEqual (0, myform.MaximumSize.Height, "#20a");
  47. Assert.AreEqual (0, myform.MaximumSize.Width, "#20b");
  48. Assert.AreEqual (0, myform.MdiChildren.Length, "#21a");
  49. Assert.AreEqual (1, myform.MdiChildren.Rank, "#21b");
  50. Assert.IsFalse (myform.MdiChildren.IsSynchronized, "#21c");
  51. Assert.IsNull (myform.MdiParent, "#22");
  52. Assert.IsNull (myform.Menu, "#23");
  53. Assert.IsNull (myform.MergedMenu, "#24");
  54. Assert.IsTrue (myform.MinimizeBox, "#25");
  55. Assert.AreEqual (0, myform.MinimumSize.Height, "#26a");
  56. Assert.AreEqual (0, myform.MinimumSize.Width, "#26b");
  57. Assert.IsTrue (myform.MinimumSize.IsEmpty, "#26c");
  58. Assert.IsFalse (myform.Modal, "#27");
  59. Assert.AreEqual (1, myform.Opacity, "#28");
  60. Assert.AreEqual (0, myform.OwnedForms.Length, "#29a");
  61. Assert.AreEqual (1, myform.OwnedForms.Rank, "#29b");
  62. Assert.IsNull (myform.Owner, "#30");
  63. Assert.IsTrue (myform.ShowInTaskbar, "#31");
  64. Assert.AreEqual (300, myform.Size.Height, "#32a");
  65. Assert.AreEqual (300, myform.Size.Width, "#32b");
  66. Assert.AreEqual (SizeGripStyle.Auto, myform.SizeGripStyle, "#33");
  67. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, myform.StartPosition, "#34");
  68. Assert.IsTrue (myform.TopLevel, "#35");
  69. Assert.IsFalse (myform.TopMost, "#36");
  70. Assert.AreEqual (Color.Empty, myform.TransparencyKey, "#37");
  71. Assert.AreEqual (FormWindowState.Normal, myform.WindowState, "#38");
  72. Assert.AreEqual (ImeMode.NoControl, myform.ImeMode, "#39");
  73. myform.Dispose ();
  74. }
  75. [Test]
  76. [NUnit.Framework.Category ("NotWorking")]
  77. public void ActivateTest ()
  78. {
  79. Form myform = new Form ();
  80. myform.ShowInTaskbar = false;
  81. myform.Visible = true;
  82. myform.Text = "NewForm";
  83. myform.Name = "FormTest";
  84. myform.Activate ();
  85. Assert.AreEqual (true, myform.Focus (), "#40");
  86. myform.Dispose ();
  87. }
  88. [Test]
  89. public void AddOwnedFormTest ()
  90. {
  91. Form parent = new Form ();
  92. parent.ShowInTaskbar = false;
  93. parent.Text = "NewParent";
  94. Form ownedForm = new Form ();
  95. ownedForm.ShowInTaskbar = false;
  96. ownedForm.Text = "Owned Form";
  97. parent.AddOwnedForm (ownedForm);
  98. ownedForm.Show ();
  99. Assert.AreEqual ("NewParent", ownedForm.Owner.Text, "#41");
  100. ownedForm.Dispose ();
  101. parent.Dispose ();
  102. }
  103. [Test] // bug #80020
  104. [NUnit.Framework.Category ("NotWorking")]
  105. public void IsHandleCreated ()
  106. {
  107. Form main = new Form ();
  108. main.Name = "main";
  109. main.IsMdiContainer = true;
  110. main.ShowInTaskbar = false;
  111. Assert.IsFalse (main.IsHandleCreated, "#1");
  112. Form child = new Form ();
  113. child.MdiParent = main;
  114. child.WindowState = FormWindowState.Maximized;
  115. Assert.IsFalse (main.IsHandleCreated, "#2");
  116. child.Show ();
  117. Assert.IsFalse (child.IsHandleCreated, "#3");
  118. Assert.IsFalse (main.IsHandleCreated, "#4");
  119. main.Show ();
  120. Assert.IsTrue (child.IsHandleCreated, "#5");
  121. Assert.IsTrue (main.IsHandleCreated, "#6");
  122. child.Dispose ();
  123. main.Dispose ();
  124. }
  125. [Test]
  126. public void RemoveOwnedFormTest ()
  127. {
  128. Form myform = new Form ();
  129. myform.ShowInTaskbar = false;
  130. myform.Text = "NewForm";
  131. myform.Name = "FormTest";
  132. myform.RemoveOwnedForm (myform);
  133. myform.Show ();
  134. Assert.AreEqual (null, myform.Owner, "#44");
  135. myform.Dispose ();
  136. }
  137. [Test]
  138. public void SetDesktopBoundsTest ()
  139. {
  140. Form myform = new Form ();
  141. myform.ShowInTaskbar = false;
  142. myform.Visible = true;
  143. myform.Text = "NewForm";
  144. myform.Name = "FormTest";
  145. myform.SetDesktopBounds (10, 10, 200 , 200);
  146. Assert.AreEqual (200, myform.DesktopBounds.Height, "#45");
  147. myform.Dispose ();
  148. }
  149. [Test]
  150. public void SetDesktopLocationTest ()
  151. {
  152. Form myform = new Form ();
  153. myform.ShowInTaskbar = false;
  154. myform.Visible = true;
  155. myform.Text = "NewForm";
  156. myform.Name = "FormTest";
  157. myform.SetDesktopLocation (10, 10);
  158. Assert.AreEqual (10, myform.DesktopLocation.X, "#46");
  159. myform.Dispose ();
  160. }
  161. [Test]
  162. public void SetDialogResultOutOfRange ()
  163. {
  164. Form myform = new Form ();
  165. myform.ShowInTaskbar = false;
  166. try {
  167. myform.DialogResult = (DialogResult) (-1);
  168. Assert.Fail ("#48");
  169. } catch (InvalidEnumArgumentException) {
  170. }
  171. try {
  172. myform.DialogResult = (DialogResult) ((int) DialogResult.No + 1);
  173. Assert.Fail ("#49");
  174. } catch (InvalidEnumArgumentException) {
  175. }
  176. myform.Dispose ();
  177. }
  178. void myform_set_dialogresult (object sender, EventArgs e)
  179. {
  180. Form f = (Form)sender;
  181. f.DialogResult = DialogResult.OK;
  182. }
  183. void myform_close (object sender, EventArgs e)
  184. {
  185. Form f = (Form)sender;
  186. f.Close();
  187. }
  188. [Test]
  189. public void SetDialogResult ()
  190. {
  191. Form myform = new Form ();
  192. myform.ShowInTaskbar = false;
  193. myform.Visible = true;
  194. myform.DialogResult = DialogResult.Cancel;
  195. Assert.IsTrue (myform.Visible, "A1");
  196. Assert.IsFalse (myform.IsDisposed, "A2");
  197. myform.Close ();
  198. Assert.IsFalse (myform.Visible, "A3");
  199. Assert.IsTrue (myform.IsDisposed, "A4");
  200. DialogResult result;
  201. myform = new Form ();
  202. myform.ShowInTaskbar = false;
  203. myform.VisibleChanged += new EventHandler (myform_set_dialogresult);
  204. result = myform.ShowDialog ();
  205. Assert.AreEqual (result, DialogResult.OK, "A5");
  206. Assert.IsFalse (myform.Visible, "A6");
  207. Assert.IsFalse (myform.IsDisposed, "A7");
  208. myform = new Form ();
  209. myform.ShowInTaskbar = false;
  210. myform.VisibleChanged += new EventHandler (myform_close);
  211. result = myform.ShowDialog ();
  212. Assert.AreEqual (result, DialogResult.Cancel, "A8");
  213. Assert.IsFalse (myform.Visible, "A9");
  214. Assert.IsFalse (myform.IsDisposed, "A10");
  215. }
  216. [Test] // bug #80604
  217. [NUnit.Framework.Category ("NotWorking")]
  218. public void VisibleOnLoad ()
  219. {
  220. MockForm form = new MockForm ();
  221. form.ShowInTaskbar = false;
  222. form.Show ();
  223. Assert.IsTrue (form.VisibleOnLoad);
  224. form.Dispose ();
  225. }
  226. [Test] // bug #80052
  227. [NUnit.Framework.Category ("NotWorking")]
  228. public void Location ()
  229. {
  230. //
  231. // CenterParent
  232. //
  233. Form formA = new Form ();
  234. formA.ShowInTaskbar = false;
  235. formA.StartPosition = FormStartPosition.CenterParent;
  236. formA.Location = new Point (151, 251);
  237. formA.Show ();
  238. Assert.AreEqual (FormStartPosition.CenterParent, formA.StartPosition, "#A1");
  239. Assert.IsFalse (formA.Location.X == 151, "#A2");
  240. Assert.IsFalse (formA.Location.Y == 251, "#A3");
  241. formA.Location = new Point (311, 221);
  242. Assert.AreEqual (FormStartPosition.CenterParent, formA.StartPosition, "#A4");
  243. Assert.AreEqual (311, formA.Location.X, "#A5");
  244. Assert.AreEqual (221, formA.Location.Y, "#A6");
  245. formA.Dispose ();
  246. //
  247. // CenterScreen
  248. //
  249. Form formB = new Form ();
  250. formB.ShowInTaskbar = false;
  251. formB.StartPosition = FormStartPosition.CenterScreen;
  252. formB.Location = new Point (151, 251);
  253. formB.Show ();
  254. Assert.AreEqual (FormStartPosition.CenterScreen, formB.StartPosition, "#B1");
  255. Assert.IsFalse (formB.Location.X == 151, "#B2");
  256. Assert.IsFalse (formB.Location.Y == 251, "#B3");
  257. formB.Location = new Point (311, 221);
  258. Assert.AreEqual (FormStartPosition.CenterScreen, formB.StartPosition, "#B4");
  259. Assert.AreEqual (311, formB.Location.X, "#B5");
  260. Assert.AreEqual (221, formB.Location.Y, "#B6");
  261. formB.Dispose ();
  262. //
  263. // Manual
  264. //
  265. Form formC = new Form ();
  266. formC.ShowInTaskbar = false;
  267. formC.StartPosition = FormStartPosition.Manual;
  268. formC.Location = new Point (151, 251);
  269. formC.Show ();
  270. Assert.AreEqual (FormStartPosition.Manual, formC.StartPosition, "#C1");
  271. Assert.AreEqual (151, formC.Location.X, "#C2");
  272. Assert.AreEqual (251, formC.Location.Y, "#C3");
  273. formC.Location = new Point (311, 221);
  274. Assert.AreEqual (FormStartPosition.Manual, formC.StartPosition, "#C4");
  275. Assert.AreEqual (311, formC.Location.X, "#C5");
  276. Assert.AreEqual (221, formC.Location.Y, "#C6");
  277. formC.Dispose ();
  278. //
  279. // WindowsDefaultBounds
  280. //
  281. Form formD = new Form ();
  282. formD.ShowInTaskbar = false;
  283. formD.StartPosition = FormStartPosition.WindowsDefaultBounds;
  284. formD.Location = new Point (151, 251);
  285. formD.Show ();
  286. Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, formD.StartPosition, "#D1");
  287. Assert.IsFalse (formD.Location.X == 151, "#D2");
  288. Assert.IsFalse (formD.Location.Y == 251, "#D3");
  289. formD.Location = new Point (311, 221);
  290. Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, formD.StartPosition, "#D4");
  291. Assert.AreEqual (311, formD.Location.X, "#D5");
  292. Assert.AreEqual (221, formD.Location.Y, "#D6");
  293. formD.Dispose ();
  294. //
  295. // WindowsDefaultLocation
  296. //
  297. Form formE = new Form ();
  298. formE.ShowInTaskbar = false;
  299. formE.Location = new Point (151, 251);
  300. formE.Show ();
  301. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, formE.StartPosition, "#E1");
  302. Assert.IsFalse (formE.Location.X == 151, "#E2");
  303. Assert.IsFalse (formE.Location.Y == 251, "#E3");
  304. formE.Location = new Point (311, 221);
  305. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, formE.StartPosition, "#E4");
  306. Assert.AreEqual (311, formE.Location.X, "#E5");
  307. Assert.AreEqual (221, formE.Location.Y, "#E6");
  308. formE.Dispose ();
  309. }
  310. [Test]
  311. public void DisposeOwnerTest ()
  312. {
  313. Form f1 = new Form ();
  314. Form f2 = new Form ();
  315. f2.Owner = f1;
  316. f1.Dispose ();
  317. Assert.IsNull (f2.Owner, "1");
  318. Assert.AreEqual (0, f1.OwnedForms.Length, "2");
  319. }
  320. [Test]
  321. [ExpectedException (typeof (ObjectDisposedException))]
  322. public void AccessDisposedForm ()
  323. {
  324. Form myform = new Form ();
  325. myform.ShowInTaskbar = false;
  326. myform.Show ();
  327. myform.Close (); // this should result in the form being disposed
  328. myform.Show (); // and this line should result in the ODE being thrown
  329. }
  330. class MyForm : Form
  331. {
  332. public void DoDestroyHandle ()
  333. {
  334. DestroyHandle();
  335. }
  336. public void DoRecreateHandle ()
  337. {
  338. RecreateHandle();
  339. }
  340. }
  341. int handle_destroyed_count;
  342. void handle_destroyed (object sender, EventArgs e)
  343. {
  344. handle_destroyed_count++;
  345. }
  346. [Test]
  347. public void DestroyHandleTest ()
  348. {
  349. handle_destroyed_count = 0;
  350. MyForm f1 = new MyForm ();
  351. f1.HandleDestroyed += new EventHandler (handle_destroyed);
  352. f1.Show ();
  353. f1.DoDestroyHandle ();
  354. Assert.AreEqual (1, handle_destroyed_count, "1");
  355. f1 = new MyForm ();
  356. f1.HandleDestroyed += new EventHandler (handle_destroyed);
  357. f1.Show ();
  358. f1.DoRecreateHandle ();
  359. Assert.AreEqual (2, handle_destroyed_count, "2");
  360. }
  361. [Test]
  362. public void FormClose ()
  363. {
  364. Form myform = new Form ();
  365. myform.ShowInTaskbar = false;
  366. Assert.IsFalse (myform.Visible, "A1");
  367. Assert.IsFalse (myform.IsDisposed, "A2");
  368. myform.Close ();
  369. Assert.IsFalse (myform.Visible, "A3");
  370. Assert.IsFalse (myform.IsDisposed, "A4");
  371. myform.Show ();
  372. Assert.IsTrue (myform.Visible, "A5");
  373. Assert.IsFalse (myform.IsDisposed, "A6");
  374. myform.Close ();
  375. Assert.IsFalse (myform.Visible, "A7");
  376. Assert.IsTrue (myform.IsDisposed, "A8");
  377. }
  378. [Test]
  379. public void FormClose2 ()
  380. {
  381. WMCloseWatcher f = new WMCloseWatcher ();
  382. f.ShowInTaskbar = false;
  383. f.close_count = 0;
  384. Assert.IsFalse (f.Visible, "A1");
  385. f.Close ();
  386. Assert.AreEqual (0, f.close_count, "A2");
  387. f.Show ();
  388. f.Close ();
  389. Assert.AreEqual (1, f.close_count, "A3");
  390. }
  391. class WMCloseWatcher : Form {
  392. public int close_count;
  393. protected override void WndProc (ref Message msg) {
  394. if (msg.Msg == 0x0010 /* WM_CLOSE */) {
  395. close_count ++;
  396. }
  397. base.WndProc (ref msg);
  398. }
  399. }
  400. class SwallowOnActivated : Form {
  401. protected override void OnActivated (EventArgs e)
  402. {
  403. // do nothing
  404. }
  405. protected override void OnCreateControl () {
  406. base.OnCreateControl ();
  407. }
  408. }
  409. class EnterTest : Button {
  410. protected override void OnEnter (EventArgs e)
  411. {
  412. on_enter = true;
  413. base.OnEnter (e);
  414. }
  415. public bool on_enter;
  416. }
  417. [Test]
  418. public void OnActivateEventHandlingTest1 ()
  419. {
  420. if (RunningOnUnix) {
  421. Assert.Ignore ("Relies on form.Show() synchronously generating WM_ACTIVATE");
  422. }
  423. SwallowOnActivated f = new SwallowOnActivated ();
  424. f.ShowInTaskbar = false;
  425. EnterTest c = new EnterTest ();
  426. f.Controls.Add (c);
  427. f.Show ();
  428. Assert.IsTrue (c.on_enter, "1");
  429. f.Dispose ();
  430. }
  431. #if NET_2_0
  432. [Test]
  433. public void FormClosingEvents ()
  434. {
  435. // Standard Close
  436. Form f = new Form ();
  437. string events = string.Empty;
  438. f.Closing += new CancelEventHandler (delegate (Object obj, CancelEventArgs e) { events += ("Closing;"); });
  439. f.FormClosing += new FormClosingEventHandler (delegate (Object obj, FormClosingEventArgs e) { events += string.Format ("FormClosing [Reason:{0} - Cancel:{1}]", e.CloseReason, e.Cancel); });
  440. f.Show ();
  441. f.Close ();
  442. Assert.AreEqual ("Closing;FormClosing [Reason:UserClosing - Cancel:False]", events, "A1");
  443. }
  444. [Test]
  445. public void FormClosingEventsCancel ()
  446. {
  447. // Shows that setting Cancel in Closing flows through to FormClosing
  448. Form f = new Form ();
  449. string events = string.Empty;
  450. f.Closing += new CancelEventHandler (delegate (Object obj, CancelEventArgs e) { events += ("Closing;"); e.Cancel = true; });
  451. f.FormClosing += new FormClosingEventHandler (delegate (Object obj, FormClosingEventArgs e) { events += string.Format("FormClosing [Reason:{0} - Cancel:{1}]", e.CloseReason, e.Cancel); e.Cancel = false; });
  452. f.Show ();
  453. f.Close ();
  454. Assert.AreEqual ("Closing;FormClosing [Reason:UserClosing - Cancel:True]", events, "A1");
  455. }
  456. [Test]
  457. public void FormClosedEvents ()
  458. {
  459. // Standard Closed
  460. Form f = new Form ();
  461. string events = string.Empty;
  462. f.Closed += new EventHandler (delegate (Object obj, EventArgs e) { events += ("Closed;"); });
  463. f.FormClosed += new FormClosedEventHandler (delegate (Object obj, FormClosedEventArgs e) { events += string.Format ("FormClosed [Reason:{0}]", e.CloseReason); });
  464. f.Show ();
  465. f.Close ();
  466. Assert.AreEqual ("Closed;FormClosed [Reason:UserClosing]", events, "A1");
  467. }
  468. [Test]
  469. public void ShowWithOwner ()
  470. {
  471. Form f = new Form ();
  472. Button b = new Button ();
  473. f.Controls.Add (b);
  474. Form f2 = new Form ();
  475. f2.Show (f);
  476. Assert.AreSame (f, f2.Owner, "A1");
  477. f2 = new Form ();
  478. f2.Show (b);
  479. Assert.AreSame (f, f2.Owner, "A2");
  480. Button b2 = new Button ();
  481. f2 = new Form ();
  482. f2.Show (b2);
  483. Assert.AreEqual (null, f2.Owner, "A3");
  484. f2 = new Form ();
  485. f2.Show (null);
  486. Assert.AreEqual (null, f2.Owner, "A4");
  487. }
  488. [Test]
  489. [ExpectedException (typeof (InvalidOperationException))]
  490. public void ShowWithOwnerIOE ()
  491. {
  492. Form f = new Form ();
  493. f.Show (f);
  494. }
  495. [Test] // Bug #79959
  496. [NUnit.Framework.Category ("NotWorking")]
  497. public void BehaviorResizeOnBorderStyleChanged ()
  498. {
  499. // Marked NotWorking because the ClientSize is probably dependent on the WM.
  500. // The values below match .Net to make sure our behavior is the same.
  501. Form f = new Form ();
  502. f.Show ();
  503. Assert.AreEqual (new Size (300, 300), f.Size, "A1");
  504. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A2");
  505. f.FormBorderStyle = FormBorderStyle.FixedSingle;
  506. Assert.AreEqual (new Size (298, 298), f.Size, "A3");
  507. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A4");
  508. f.FormBorderStyle = FormBorderStyle.Sizable;
  509. Assert.AreEqual (new Size (300, 300), f.Size, "A5");
  510. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A6");
  511. f.Close ();
  512. }
  513. [Test] // bug #80574
  514. [NUnit.Framework.Category ("NotWorking")]
  515. public void BehaviorResizeOnBorderStyleChangedNotVisible ()
  516. {
  517. // Marked NotWorking because the ClientSize is probably dependent on the WM.
  518. // The values below match .Net to make sure our behavior is the same.
  519. Form f = new Form ();
  520. Assert.AreEqual (new Size (300, 300), f.Size, "A1");
  521. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A2");
  522. f.FormBorderStyle = FormBorderStyle.Fixed3D;
  523. Assert.AreEqual (new Size (300, 300), f.Size, "A3");
  524. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A4");
  525. f.FormBorderStyle = FormBorderStyle.FixedDialog;
  526. Assert.AreEqual (new Size (300, 300), f.Size, "A5");
  527. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A6");
  528. f.FormBorderStyle = FormBorderStyle.FixedSingle;
  529. Assert.AreEqual (new Size (300, 300), f.Size, "A7");
  530. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A8");
  531. f.FormBorderStyle = FormBorderStyle.FixedToolWindow;
  532. Assert.AreEqual (new Size (300, 300), f.Size, "A9");
  533. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A0");
  534. f.FormBorderStyle = FormBorderStyle.None;
  535. Assert.AreEqual (new Size (300, 300), f.Size, "A11");
  536. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A12");
  537. f.FormBorderStyle = FormBorderStyle.SizableToolWindow;
  538. Assert.AreEqual (new Size (300, 300), f.Size, "A13");
  539. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A14");
  540. f.FormBorderStyle = FormBorderStyle.Sizable;
  541. Assert.AreEqual (new Size (300, 300), f.Size, "A15");
  542. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A16");
  543. }
  544. #endif
  545. private bool RunningOnUnix {
  546. get {
  547. // check for Unix platforms - see FAQ for more details
  548. // http://www.mono-project.com/FAQ:_Technical#How_to_detect_the_execution_platform_.3F
  549. int platform = (int) Environment.OSVersion.Platform;
  550. return ((platform == 4) || (platform == 128));
  551. }
  552. }
  553. private class MockForm : Form
  554. {
  555. public bool VisibleOnLoad {
  556. get { return _visibleOnLoad; }
  557. }
  558. protected override void OnLoad(EventArgs e) {
  559. base.OnLoad(e);
  560. _visibleOnLoad = Visible;
  561. }
  562. private bool _visibleOnLoad;
  563. }
  564. }
  565. }