FormTest.cs 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716
  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.CloseOnLoad = true;
  222. Application.Run (form);
  223. Assert.IsTrue (form.VisibleOnLoad, "#1");
  224. form.Dispose ();
  225. form = new MockForm ();
  226. form.ShowInTaskbar = false;
  227. form.Show ();
  228. Assert.IsTrue (form.VisibleOnLoad, "#2");
  229. form.Dispose ();
  230. }
  231. [Test] // bug #80052
  232. [NUnit.Framework.Category ("NotWorking")]
  233. public void Location ()
  234. {
  235. //
  236. // CenterParent
  237. //
  238. Form formA = new Form ();
  239. formA.ShowInTaskbar = false;
  240. formA.StartPosition = FormStartPosition.CenterParent;
  241. formA.Location = new Point (151, 251);
  242. formA.Show ();
  243. Assert.AreEqual (FormStartPosition.CenterParent, formA.StartPosition, "#A1");
  244. Assert.IsFalse (formA.Location.X == 151, "#A2");
  245. Assert.IsFalse (formA.Location.Y == 251, "#A3");
  246. formA.Location = new Point (311, 221);
  247. Assert.AreEqual (FormStartPosition.CenterParent, formA.StartPosition, "#A4");
  248. Assert.AreEqual (311, formA.Location.X, "#A5");
  249. Assert.AreEqual (221, formA.Location.Y, "#A6");
  250. formA.Dispose ();
  251. //
  252. // CenterScreen
  253. //
  254. Form formB = new Form ();
  255. formB.ShowInTaskbar = false;
  256. formB.StartPosition = FormStartPosition.CenterScreen;
  257. formB.Location = new Point (151, 251);
  258. formB.Show ();
  259. Assert.AreEqual (FormStartPosition.CenterScreen, formB.StartPosition, "#B1");
  260. Assert.IsFalse (formB.Location.X == 151, "#B2");
  261. Assert.IsFalse (formB.Location.Y == 251, "#B3");
  262. formB.Location = new Point (311, 221);
  263. Assert.AreEqual (FormStartPosition.CenterScreen, formB.StartPosition, "#B4");
  264. Assert.AreEqual (311, formB.Location.X, "#B5");
  265. Assert.AreEqual (221, formB.Location.Y, "#B6");
  266. formB.Dispose ();
  267. //
  268. // Manual
  269. //
  270. Form formC = new Form ();
  271. formC.ShowInTaskbar = false;
  272. formC.StartPosition = FormStartPosition.Manual;
  273. formC.Location = new Point (151, 251);
  274. formC.Show ();
  275. Assert.AreEqual (FormStartPosition.Manual, formC.StartPosition, "#C1");
  276. Assert.AreEqual (151, formC.Location.X, "#C2");
  277. Assert.AreEqual (251, formC.Location.Y, "#C3");
  278. formC.Location = new Point (311, 221);
  279. Assert.AreEqual (FormStartPosition.Manual, formC.StartPosition, "#C4");
  280. Assert.AreEqual (311, formC.Location.X, "#C5");
  281. Assert.AreEqual (221, formC.Location.Y, "#C6");
  282. formC.Dispose ();
  283. //
  284. // WindowsDefaultBounds
  285. //
  286. Form formD = new Form ();
  287. formD.ShowInTaskbar = false;
  288. formD.StartPosition = FormStartPosition.WindowsDefaultBounds;
  289. formD.Location = new Point (151, 251);
  290. formD.Show ();
  291. Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, formD.StartPosition, "#D1");
  292. Assert.IsFalse (formD.Location.X == 151, "#D2");
  293. Assert.IsFalse (formD.Location.Y == 251, "#D3");
  294. formD.Location = new Point (311, 221);
  295. Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, formD.StartPosition, "#D4");
  296. Assert.AreEqual (311, formD.Location.X, "#D5");
  297. Assert.AreEqual (221, formD.Location.Y, "#D6");
  298. formD.Dispose ();
  299. //
  300. // WindowsDefaultLocation
  301. //
  302. Form formE = new Form ();
  303. formE.ShowInTaskbar = false;
  304. formE.Location = new Point (151, 251);
  305. formE.Show ();
  306. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, formE.StartPosition, "#E1");
  307. Assert.IsFalse (formE.Location.X == 151, "#E2");
  308. Assert.IsFalse (formE.Location.Y == 251, "#E3");
  309. formE.Location = new Point (311, 221);
  310. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, formE.StartPosition, "#E4");
  311. Assert.AreEqual (311, formE.Location.X, "#E5");
  312. Assert.AreEqual (221, formE.Location.Y, "#E6");
  313. formE.Dispose ();
  314. }
  315. [Test]
  316. public void DisposeOwnerTest ()
  317. {
  318. Form f1 = new Form ();
  319. Form f2 = new Form ();
  320. f2.Owner = f1;
  321. f1.Dispose ();
  322. Assert.IsNull (f2.Owner, "1");
  323. Assert.AreEqual (0, f1.OwnedForms.Length, "2");
  324. }
  325. [Test]
  326. [ExpectedException (typeof (ObjectDisposedException))]
  327. public void AccessDisposedForm ()
  328. {
  329. Form myform = new Form ();
  330. myform.ShowInTaskbar = false;
  331. myform.Show ();
  332. myform.Close (); // this should result in the form being disposed
  333. myform.Show (); // and this line should result in the ODE being thrown
  334. }
  335. class MyForm : Form
  336. {
  337. public void DoDestroyHandle ()
  338. {
  339. DestroyHandle();
  340. }
  341. public void DoRecreateHandle ()
  342. {
  343. RecreateHandle();
  344. }
  345. }
  346. int handle_destroyed_count;
  347. void handle_destroyed (object sender, EventArgs e)
  348. {
  349. handle_destroyed_count++;
  350. }
  351. [Test]
  352. public void DestroyHandleTest ()
  353. {
  354. handle_destroyed_count = 0;
  355. MyForm f1 = new MyForm ();
  356. f1.HandleDestroyed += new EventHandler (handle_destroyed);
  357. f1.Show ();
  358. f1.DoDestroyHandle ();
  359. Assert.AreEqual (1, handle_destroyed_count, "1");
  360. f1 = new MyForm ();
  361. f1.HandleDestroyed += new EventHandler (handle_destroyed);
  362. f1.Show ();
  363. f1.DoRecreateHandle ();
  364. Assert.AreEqual (2, handle_destroyed_count, "2");
  365. }
  366. [Test]
  367. public void FormClose ()
  368. {
  369. Form myform = new Form ();
  370. myform.ShowInTaskbar = false;
  371. Assert.IsFalse (myform.Visible, "A1");
  372. Assert.IsFalse (myform.IsDisposed, "A2");
  373. myform.Close ();
  374. Assert.IsFalse (myform.Visible, "A3");
  375. Assert.IsFalse (myform.IsDisposed, "A4");
  376. myform.Show ();
  377. Assert.IsTrue (myform.Visible, "A5");
  378. Assert.IsFalse (myform.IsDisposed, "A6");
  379. myform.Close ();
  380. Assert.IsFalse (myform.Visible, "A7");
  381. Assert.IsTrue (myform.IsDisposed, "A8");
  382. }
  383. [Test]
  384. public void FormClose2 ()
  385. {
  386. WMCloseWatcher f = new WMCloseWatcher ();
  387. f.ShowInTaskbar = false;
  388. f.close_count = 0;
  389. Assert.IsFalse (f.Visible, "A1");
  390. f.Close ();
  391. Assert.AreEqual (0, f.close_count, "A2");
  392. f.Show ();
  393. f.Close ();
  394. Assert.AreEqual (1, f.close_count, "A3");
  395. }
  396. class WMCloseWatcher : Form {
  397. public int close_count;
  398. protected override void WndProc (ref Message msg) {
  399. if (msg.Msg == 0x0010 /* WM_CLOSE */) {
  400. close_count ++;
  401. }
  402. base.WndProc (ref msg);
  403. }
  404. }
  405. class SwallowOnActivated : Form {
  406. protected override void OnActivated (EventArgs e)
  407. {
  408. // do nothing
  409. }
  410. protected override void OnCreateControl () {
  411. base.OnCreateControl ();
  412. }
  413. }
  414. class EnterTest : Button {
  415. protected override void OnEnter (EventArgs e)
  416. {
  417. on_enter = true;
  418. base.OnEnter (e);
  419. }
  420. public bool on_enter;
  421. }
  422. [Test]
  423. public void OnActivateEventHandlingTest1 ()
  424. {
  425. if (RunningOnUnix) {
  426. Assert.Ignore ("Relies on form.Show() synchronously generating WM_ACTIVATE");
  427. }
  428. SwallowOnActivated f = new SwallowOnActivated ();
  429. f.ShowInTaskbar = false;
  430. EnterTest c = new EnterTest ();
  431. f.Controls.Add (c);
  432. f.Show ();
  433. Assert.IsTrue (c.on_enter, "1");
  434. f.Dispose ();
  435. }
  436. #if NET_2_0
  437. [Test]
  438. public void FormClosingEvents ()
  439. {
  440. // Standard Close
  441. Form f = new Form ();
  442. string events = string.Empty;
  443. f.Closing += new CancelEventHandler (delegate (Object obj, CancelEventArgs e) { events += ("Closing;"); });
  444. f.FormClosing += new FormClosingEventHandler (delegate (Object obj, FormClosingEventArgs e) { events += string.Format ("FormClosing [Reason:{0} - Cancel:{1}]", e.CloseReason, e.Cancel); });
  445. f.Show ();
  446. f.Close ();
  447. Assert.AreEqual ("Closing;FormClosing [Reason:UserClosing - Cancel:False]", events, "A1");
  448. }
  449. [Test]
  450. public void FormClosingEventsCancel ()
  451. {
  452. // Shows that setting Cancel in Closing flows through to FormClosing
  453. Form f = new Form ();
  454. string events = string.Empty;
  455. f.Closing += new CancelEventHandler (delegate (Object obj, CancelEventArgs e) { events += ("Closing;"); e.Cancel = true; });
  456. f.FormClosing += new FormClosingEventHandler (delegate (Object obj, FormClosingEventArgs e) { events += string.Format("FormClosing [Reason:{0} - Cancel:{1}]", e.CloseReason, e.Cancel); e.Cancel = false; });
  457. f.Show ();
  458. f.Close ();
  459. Assert.AreEqual ("Closing;FormClosing [Reason:UserClosing - Cancel:True]", events, "A1");
  460. }
  461. [Test]
  462. public void FormClosedEvents ()
  463. {
  464. // Standard Closed
  465. Form f = new Form ();
  466. string events = string.Empty;
  467. f.Closed += new EventHandler (delegate (Object obj, EventArgs e) { events += ("Closed;"); });
  468. f.FormClosed += new FormClosedEventHandler (delegate (Object obj, FormClosedEventArgs e) { events += string.Format ("FormClosed [Reason:{0}]", e.CloseReason); });
  469. f.Show ();
  470. f.Close ();
  471. Assert.AreEqual ("Closed;FormClosed [Reason:UserClosing]", events, "A1");
  472. }
  473. [Test]
  474. public void ShowWithOwner ()
  475. {
  476. Form f = new Form ();
  477. Button b = new Button ();
  478. f.Controls.Add (b);
  479. Form f2 = new Form ();
  480. f2.Show (f);
  481. Assert.AreSame (f, f2.Owner, "A1");
  482. f2 = new Form ();
  483. f2.Show (b);
  484. Assert.AreSame (f, f2.Owner, "A2");
  485. Button b2 = new Button ();
  486. f2 = new Form ();
  487. f2.Show (b2);
  488. Assert.AreEqual (null, f2.Owner, "A3");
  489. f2 = new Form ();
  490. f2.Show (null);
  491. Assert.AreEqual (null, f2.Owner, "A4");
  492. }
  493. [Test]
  494. [ExpectedException (typeof (InvalidOperationException))]
  495. public void ShowWithOwnerIOE ()
  496. {
  497. Form f = new Form ();
  498. f.Show (f);
  499. }
  500. [Test] // Bug #79959
  501. [NUnit.Framework.Category ("NotWorking")]
  502. public void BehaviorResizeOnBorderStyleChanged ()
  503. {
  504. // Marked NotWorking because the ClientSize is probably dependent on the WM.
  505. // The values below match .Net to make sure our behavior is the same.
  506. Form f = new Form ();
  507. f.Show ();
  508. Assert.AreEqual (new Size (300, 300), f.Size, "A1");
  509. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A2");
  510. f.FormBorderStyle = FormBorderStyle.FixedSingle;
  511. Assert.AreEqual (new Size (298, 298), f.Size, "A3");
  512. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A4");
  513. f.FormBorderStyle = FormBorderStyle.Sizable;
  514. Assert.AreEqual (new Size (300, 300), f.Size, "A5");
  515. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A6");
  516. f.Close ();
  517. }
  518. [Test] // bug #80574
  519. [NUnit.Framework.Category ("NotWorking")]
  520. public void BehaviorResizeOnBorderStyleChangedNotVisible ()
  521. {
  522. // Marked NotWorking because the ClientSize is probably dependent on the WM.
  523. // The values below match .Net to make sure our behavior is the same.
  524. Form f = new Form ();
  525. Assert.AreEqual (new Size (300, 300), f.Size, "A1");
  526. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A2");
  527. f.FormBorderStyle = FormBorderStyle.Fixed3D;
  528. Assert.AreEqual (new Size (300, 300), f.Size, "A3");
  529. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A4");
  530. f.FormBorderStyle = FormBorderStyle.FixedDialog;
  531. Assert.AreEqual (new Size (300, 300), f.Size, "A5");
  532. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A6");
  533. f.FormBorderStyle = FormBorderStyle.FixedSingle;
  534. Assert.AreEqual (new Size (300, 300), f.Size, "A7");
  535. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A8");
  536. f.FormBorderStyle = FormBorderStyle.FixedToolWindow;
  537. Assert.AreEqual (new Size (300, 300), f.Size, "A9");
  538. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A0");
  539. f.FormBorderStyle = FormBorderStyle.None;
  540. Assert.AreEqual (new Size (300, 300), f.Size, "A11");
  541. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A12");
  542. f.FormBorderStyle = FormBorderStyle.SizableToolWindow;
  543. Assert.AreEqual (new Size (300, 300), f.Size, "A13");
  544. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A14");
  545. f.FormBorderStyle = FormBorderStyle.Sizable;
  546. Assert.AreEqual (new Size (300, 300), f.Size, "A15");
  547. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A16");
  548. }
  549. #endif
  550. private bool RunningOnUnix {
  551. get {
  552. // check for Unix platforms - see FAQ for more details
  553. // http://www.mono-project.com/FAQ:_Technical#How_to_detect_the_execution_platform_.3F
  554. int platform = (int) Environment.OSVersion.Platform;
  555. return ((platform == 4) || (platform == 128));
  556. }
  557. }
  558. private class MockForm : Form
  559. {
  560. public bool CloseOnLoad {
  561. get { return _closeOnLoad; }
  562. set { _closeOnLoad = value; }
  563. }
  564. public bool VisibleOnLoad {
  565. get { return _visibleOnLoad; }
  566. }
  567. protected override void OnLoad(EventArgs e) {
  568. base.OnLoad(e);
  569. _visibleOnLoad = Visible;
  570. if (CloseOnLoad)
  571. Close ();
  572. }
  573. private bool _closeOnLoad;
  574. private bool _visibleOnLoad;
  575. }
  576. }
  577. }