MdiFormTest.cs 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614
  1. //
  2. // MdiFormTest.cs: Test cases for MDI Forms.
  3. //
  4. // Author:
  5. // Rolf Bjarne Kvinge ([email protected])
  6. //
  7. // (C) 2006 Novell, Inc. (http://www.novell.com)
  8. //
  9. using System;
  10. using System.Drawing;
  11. using System.Reflection;
  12. using System.Windows.Forms;
  13. using System.ComponentModel;
  14. using NUnit.Framework;
  15. using CategoryAttribute = NUnit.Framework.CategoryAttribute;
  16. using System.Threading;
  17. namespace MonoTests.System.Windows.Forms
  18. {
  19. [TestFixture]
  20. public class MdiFormTest : TestHelper
  21. {
  22. private Form main;
  23. private Form child1;
  24. private Form child2;
  25. private Form child3;
  26. [TearDown]
  27. protected override void TearDown ()
  28. {
  29. if (main != null)
  30. main.Dispose ();
  31. if (child1 != null)
  32. child1.Dispose ();
  33. if (child2 != null)
  34. child2.Dispose ();
  35. if (child3 != null)
  36. child3.Dispose ();
  37. main = null;
  38. child1 = null;
  39. child2 = null;
  40. child3 = null;
  41. base.TearDown ();
  42. }
  43. // No attribute here since this is supposed to be called from
  44. // each test directly, not by nunit.
  45. void SetUp (bool only_create, bool only_text)
  46. {
  47. SetUp (only_create, only_text, false);
  48. }
  49. // No attribute here since this is supposed to be called from
  50. // each test directly, not by nunit.
  51. public void SetUp (bool only_create, bool only_text, bool set_parent)
  52. {
  53. TearDown ();
  54. main = new Form ();
  55. child1 = new Form ();
  56. child2 = new Form ();
  57. child3 = new Form ();
  58. if (only_create)
  59. return;
  60. main.Text = main.Name = "main";
  61. main.ShowInTaskbar = false;
  62. child1.Text = child1.Name = "child1";
  63. child2.Text = child2.Name = "child2";
  64. child3.Text = child3.Name = "child3";
  65. if (only_text)
  66. return;
  67. main.IsMdiContainer = true;
  68. if (set_parent) {
  69. child1.MdiParent = main;
  70. child2.MdiParent = main;
  71. child3.MdiParent = main;
  72. }
  73. }
  74. [Test]
  75. public void DeactivatedEventTest ()
  76. {
  77. using (Form f = new Form ()) {
  78. Form c1 = new Form ();
  79. Form c2 = new Form ();
  80. EventLogger log1 = new EventLogger (c1);
  81. EventLogger log2 = new EventLogger (c2);
  82. f.IsMdiContainer = true;
  83. f.ShowInTaskbar = false;
  84. c2.MdiParent = c1.MdiParent = f;
  85. c1.Show ();
  86. c2.Show ();
  87. Assert.AreEqual (0, log1.CountEvents ("Deactivate"), "#A1");
  88. Assert.AreEqual (0, log2.CountEvents ("Deactivate"), "#A2");
  89. f.Show ();
  90. Assert.AreEqual (1, log1.CountEvents ("Deactivate"), "#B1");
  91. Assert.AreEqual (0, log2.CountEvents ("Deactivate"), "#B2");
  92. c1.Show ();
  93. c2.Show ();
  94. Assert.AreEqual (1, log1.CountEvents ("Deactivate"), "#C1");
  95. Assert.AreEqual (0, log2.CountEvents ("Deactivate"), "#C2");
  96. c1.Activate ();
  97. Assert.AreEqual (1, log1.CountEvents ("Deactivate"), "#D1");
  98. Assert.AreEqual (1, log2.CountEvents ("Deactivate"), "#D2");
  99. c1.Activate ();
  100. Assert.AreEqual (1, log1.CountEvents ("Deactivate"), "#E1");
  101. Assert.AreEqual (1, log2.CountEvents ("Deactivate"), "#E2");
  102. c2.Activate ();
  103. Assert.AreEqual (2, log1.CountEvents ("Deactivate"), "#F1");
  104. Assert.AreEqual (1, log2.CountEvents ("Deactivate"), "#F2");
  105. c1.Activate ();
  106. Assert.AreEqual (2, log1.CountEvents ("Deactivate"), "#G1");
  107. Assert.AreEqual (2, log2.CountEvents ("Deactivate"), "#G2");
  108. }
  109. }
  110. [Test]
  111. public void ActivatedEventTest ()
  112. {
  113. using (Form f = new Form ()) {
  114. Form c1 = new Form ();
  115. Form c2 = new Form ();
  116. EventLogger log1 = new EventLogger (c1);
  117. EventLogger log2 = new EventLogger (c2);
  118. f.IsMdiContainer = true;
  119. f.ShowInTaskbar = false;
  120. c2.MdiParent = c1.MdiParent = f;
  121. c1.Show ();
  122. c2.Show ();
  123. Assert.AreEqual (0, log1.CountEvents ("Activated"), "#A1");
  124. Assert.AreEqual (0, log2.CountEvents ("Activated"), "#A2");
  125. f.Show ();
  126. Assert.AreEqual (1, log1.CountEvents ("Activated"), "#B1");
  127. Assert.AreEqual (1, log2.CountEvents ("Activated"), "#B2");
  128. c1.Show ();
  129. c2.Show ();
  130. Assert.AreEqual (1, log1.CountEvents ("Activated"), "#C1");
  131. Assert.AreEqual (1, log2.CountEvents ("Activated"), "#C2");
  132. c1.Activate ();
  133. Assert.AreEqual (2, log1.CountEvents ("Activated"), "#D1");
  134. Assert.AreEqual (1, log2.CountEvents ("Activated"), "#D2");
  135. c1.Activate ();
  136. Assert.AreEqual (2, log1.CountEvents ("Activated"), "#E1");
  137. Assert.AreEqual (1, log2.CountEvents ("Activated"), "#E2");
  138. c2.Activate ();
  139. Assert.AreEqual (2, log1.CountEvents ("Activated"), "#F1");
  140. Assert.AreEqual (2, log2.CountEvents ("Activated"), "#F2");
  141. c1.Activate ();
  142. Assert.AreEqual (3, log1.CountEvents ("Activated"), "#G1");
  143. Assert.AreEqual (2, log2.CountEvents ("Activated"), "#G2");
  144. }
  145. }
  146. [Test]
  147. public void ActiveControlTest ()
  148. {
  149. SetUp (false, false, true);
  150. main.Show ();
  151. Assert.IsNull (main.ActiveControl, "#01");
  152. child1.Visible = true;
  153. Assert.AreSame (child1, main.ActiveControl, "#02");
  154. child2.Visible = true;
  155. Assert.AreSame (child2, main.ActiveControl, "#03");
  156. child3.Visible = true;
  157. Assert.AreSame (child3, main.ActiveControl, "#04");
  158. TearDown ();
  159. }
  160. [Test]
  161. public void SelectNextControlTest ()
  162. {
  163. SetUp (false, false, true);
  164. main.Show ();
  165. child1.Visible = true;
  166. child2.Visible = true;
  167. child3.Visible = true;
  168. main.SelectNextControl (main.ActiveControl, true, false, true, true);
  169. Assert.AreSame (child1, main.ActiveControl, "#01");
  170. main.SelectNextControl (main.ActiveControl, true, false, true, true);
  171. Assert.AreSame (child2, main.ActiveControl, "#02");
  172. main.SelectNextControl (main.ActiveControl, true, false, true, true);
  173. Assert.AreSame (child3, main.ActiveControl, "#03");
  174. TearDown ();
  175. }
  176. [Test]
  177. public void SelectPreviousControlTest ()
  178. {
  179. SetUp (false, false, true);
  180. main.Show ();
  181. child1.Visible = true;
  182. child2.Visible = true;
  183. child3.Visible = true;
  184. main.SelectNextControl (main.ActiveControl, false, false, true, true);
  185. Assert.AreSame (child2, main.ActiveControl, "#01");
  186. main.SelectNextControl (main.ActiveControl, false, false, true, true);
  187. Assert.AreSame (child1, main.ActiveControl, "#02");
  188. main.SelectNextControl (main.ActiveControl, false, false, true, true);
  189. Assert.AreSame (child3, main.ActiveControl, "#03");
  190. TearDown ();
  191. }
  192. [TestFixture]
  193. public class CloseTest
  194. {
  195. class ChildForm : Form
  196. {
  197. public ChildForm ()
  198. {
  199. Closed += new EventHandler (ChildForm_Closed);
  200. Closing += new CancelEventHandler (ChildForm_Closing);
  201. #if NET_2_0
  202. FormClosed += new FormClosedEventHandler (ChildForm_FormClosed);
  203. FormClosing += new FormClosingEventHandler (ChildForm_FormClosing);
  204. #endif
  205. }
  206. #if NET_2_0
  207. void ChildForm_FormClosing (object sender, FormClosingEventArgs e)
  208. {
  209. Assert.IsNotNull (MdiParent, "ChildForm_FormClosing");
  210. }
  211. void ChildForm_FormClosed (object sender, FormClosedEventArgs e)
  212. {
  213. Assert.IsNotNull (MdiParent, "ChildForm_FormClosed");
  214. }
  215. #endif
  216. void ChildForm_Closing (object sender, CancelEventArgs e)
  217. {
  218. Assert.IsNotNull (MdiParent, "ChildForm_Closing");
  219. }
  220. void ChildForm_Closed (object sender, EventArgs e)
  221. {
  222. Assert.IsNotNull (MdiParent, "ChildForm_Closed");
  223. }
  224. protected override void OnClosed (EventArgs e)
  225. {
  226. Assert.IsNotNull (MdiParent, "OnClosed 1");
  227. base.OnClosed (e);
  228. Assert.IsNotNull (MdiParent, "OnClosed 2");
  229. }
  230. protected override void OnClosing (CancelEventArgs e)
  231. {
  232. Assert.IsNotNull (MdiParent, "OnClosing 1");
  233. base.OnClosing (e);
  234. Assert.IsNotNull (MdiParent, "OnClosing 2");
  235. }
  236. }
  237. [Test]
  238. public void Test () {
  239. using (Form main = new Form ()) {
  240. main.IsMdiContainer = true;
  241. main.ShowInTaskbar = false;
  242. main.Visible = true;
  243. ChildForm child = new ChildForm ();
  244. EventLogger log = new EventLogger (child);
  245. child.MdiParent = main;
  246. child.Visible = true;
  247. child.Close ();
  248. Assert.AreEqual (1, log.CountEvents ("Closed"), "#01");
  249. Assert.AreEqual (1, log.CountEvents ("Closing"), "#02");
  250. Assert.IsNull (child.MdiParent, "#03");
  251. Assert.AreEqual (0, main.MdiChildren.Length, "#04");
  252. Assert.AreEqual (false, child.IsMdiChild, "#05");
  253. }
  254. }
  255. }
  256. [Test]
  257. [Category ("NotWorking")]
  258. public void StartLocationTest ()
  259. {
  260. SetUp (false, false);
  261. child1.MdiParent = main;
  262. child2.MdiParent = main;
  263. child1.Visible = true;
  264. child2.Visible = true;
  265. main.Show ();
  266. Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
  267. Assert.AreEqual (true, "{X=0,Y=0}" != child2.Location.ToString (), "#2");
  268. TearDown ();
  269. }
  270. [Test]
  271. public void StartLocationTest2 ()
  272. {
  273. SetUp (false, false);
  274. child1.MdiParent = main;
  275. child2.MdiParent = main;
  276. child1.Visible = true;
  277. child2.Visible = true;
  278. child2.StartPosition = FormStartPosition.Manual;
  279. child2.Location = new Point(23, 34);
  280. main.Show ();
  281. Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
  282. Assert.AreEqual ("{X=23,Y=34}",child2.Location.ToString (), "#2");
  283. TearDown ();
  284. }
  285. [Test]
  286. public void NewFormShouldAlsoBeMaximized ()
  287. {
  288. Form parent = new Form ();
  289. Form child1 = new Form ();
  290. Form child2 = new Form ();
  291. parent.ShowInTaskbar = false;
  292. parent.IsMdiContainer = true;
  293. parent.ClientSize = new Size (300, 300);
  294. parent.Show ();
  295. child1.MdiParent = parent;
  296. child1.Show ();
  297. child1.WindowState = FormWindowState.Maximized;
  298. child2.MdiParent = parent;
  299. child2.ClientSize = new Size (100, 100);
  300. child2.Show ();
  301. Assert.IsTrue (child2.Width > 200, "Width should be maximized");
  302. Assert.IsTrue (child2.Height > 200, "Height should be maximized");
  303. parent.Dispose ();
  304. }
  305. #if NET_2_0
  306. [Test]
  307. public void RestoreWithMainMenuStrip ()
  308. {
  309. Form parent = new Form ();
  310. Form child1 = new Form ();
  311. parent.ShowInTaskbar = false;
  312. parent.IsMdiContainer = true;
  313. parent.ClientSize = new Size (500, 500);
  314. MenuStrip ms = new MenuStrip ();
  315. ms.Items.Add (new ToolStripMenuItem ("main", null, new ToolStripMenuItem ("item1")));
  316. parent.Controls.Add (ms);
  317. parent.MainMenuStrip = ms;
  318. parent.Show ();
  319. child1.MdiParent = parent;
  320. child1.Show ();
  321. Size s = child1.Size;
  322. child1.WindowState = FormWindowState.Maximized;
  323. child1.WindowState = FormWindowState.Normal;
  324. Assert.AreEqual (s, child1.Size, "A1");
  325. parent.Dispose ();
  326. }
  327. #endif
  328. /* These tests are all failing on WinXP with XP Theme.
  329. * offset seems to be 22,22 normally, and 22,29 with XP theme.
  330. * Find a way to test this reliably.
  331. * /
  332. [Category("NotWorking")]
  333. [Test]
  334. public void StartLocationTest1 ()
  335. {
  336. SetUp (false, false);
  337. child1.MdiParent = main;
  338. child2.MdiParent = main;
  339. child1.Visible = true;
  340. child2.Visible = true;
  341. main.Show ();
  342. Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
  343. Assert.AreEqual ("{X=22,Y=22}", child2.Location.ToString (), "#2");
  344. TearDown ();
  345. }
  346. [Category("NotWorking")]
  347. [Test]
  348. public void StartLocationTest2 ()
  349. {
  350. SetUp (false, false);
  351. child1.MdiParent = main;
  352. child2.MdiParent = main;
  353. child1.StartPosition = FormStartPosition.Manual;
  354. child1.Visible = true;
  355. child2.Visible = true;
  356. main.Show ();
  357. Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
  358. Assert.AreEqual ("{X=22,Y=22}", child2.Location.ToString (), "#2");
  359. TearDown ();
  360. }
  361. [Category("NotWorking")]
  362. [Test]
  363. public void StartLocationTest3 ()
  364. {
  365. SetUp (false, false);
  366. child1.MdiParent = main;
  367. child2.MdiParent = main;
  368. child2.StartPosition = FormStartPosition.Manual;
  369. child1.Visible = true;
  370. child2.Visible = true;
  371. main.Show ();
  372. Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
  373. Assert.AreEqual ("{X=0,Y=0}", child2.Location.ToString (), "#2");
  374. TearDown ();
  375. }
  376. [Category("NotWorking")]
  377. [Test]
  378. public void StartLocationTest4 ()
  379. {
  380. SetUp (false, false);
  381. child1.MdiParent = main;
  382. child2.MdiParent = main;
  383. child1.StartPosition = FormStartPosition.Manual;
  384. child2.StartPosition = FormStartPosition.Manual;
  385. child1.Visible = true;
  386. child2.Visible = true;
  387. main.Show ();
  388. Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
  389. Assert.AreEqual ("{X=0,Y=0}", child2.Location.ToString (), "#2");
  390. TearDown ();
  391. }
  392. [Category("NotWorking")]
  393. [Test]
  394. public void StartLocationTest5 ()
  395. {
  396. SetUp (false, false);
  397. child1.MdiParent = main;
  398. child2.MdiParent = main;
  399. child3.MdiParent = main;
  400. child2.StartPosition = FormStartPosition.Manual;
  401. child1.Visible = true;
  402. child2.Visible = true;
  403. child3.Visible = true;
  404. main.Show ();
  405. Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
  406. Assert.AreEqual ("{X=0,Y=0}", child2.Location.ToString (), "#2");
  407. Assert.AreEqual ("{X=44,Y=44}", child3.Location.ToString (), "#3");
  408. TearDown ();
  409. }
  410. [Category("NotWorking")]
  411. [Test]
  412. public void StartLocationTest6 ()
  413. {
  414. SetUp (false, false);
  415. child1.MdiParent = main;
  416. child2.MdiParent = main;
  417. child3.MdiParent = main;
  418. child2.StartPosition = FormStartPosition.CenterParent;
  419. child1.Visible = true;
  420. child2.Visible = true;
  421. child3.Visible = true;
  422. main.Show ();
  423. Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
  424. Assert.AreEqual ("{X=22,Y=22}", child2.Location.ToString (), "#2");
  425. Assert.AreEqual ("{X=44,Y=44}", child3.Location.ToString (), "#3");
  426. TearDown ();
  427. }
  428. [Category("NotWorking")]
  429. [Test]
  430. public void StartLocationTest7 ()
  431. {
  432. SetUp (false, false);
  433. child1.MdiParent = main;
  434. child2.MdiParent = main;
  435. child3.MdiParent = main;
  436. child2.StartPosition = FormStartPosition.CenterScreen;
  437. child1.Visible = true;
  438. child2.Visible = true;
  439. child3.Visible = true;
  440. main.Show ();
  441. Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
  442. Assert.AreEqual ("{X=0,Y=0}", child2.Location.ToString (), "#2");
  443. Assert.AreEqual ("{X=44,Y=44}", child3.Location.ToString (), "#3");
  444. TearDown ();
  445. }
  446. [Category("NotWorking")]
  447. [Test]
  448. public void StartLocationTest8 ()
  449. {
  450. SetUp (false, false);
  451. child1.MdiParent = main;
  452. child2.MdiParent = main;
  453. child3.MdiParent = main;
  454. child2.StartPosition = FormStartPosition.WindowsDefaultBounds;
  455. child1.Visible = true;
  456. child2.Visible = true;
  457. child3.Visible = true;
  458. main.Show ();
  459. Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
  460. Assert.AreEqual ("{X=22,Y=22}", child2.Location.ToString (), "#2");
  461. Assert.AreEqual ("{X=44,Y=44}", child3.Location.ToString (), "#3");
  462. TearDown ();
  463. }
  464. [Category("NotWorking")]
  465. [Test]
  466. public void StartLocationTest9 ()
  467. {
  468. SetUp (false, false);
  469. child1.MdiParent = main;
  470. child2.MdiParent = main;
  471. child3.MdiParent = main;
  472. child2.StartPosition = FormStartPosition.WindowsDefaultLocation;
  473. child1.Visible = true;
  474. child2.Visible = true;
  475. child3.Visible = true;
  476. main.Show ();
  477. Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
  478. Assert.AreEqual ("{X=22,Y=22}", child2.Location.ToString (), "#2");
  479. Assert.AreEqual ("{X=44,Y=44}", child3.Location.ToString (), "#3");
  480. TearDown ();
  481. }
  482. [Category("NotWorking")]
  483. [Test]
  484. public void StartLocationTest10 ()
  485. {
  486. SetUp (false, false);
  487. child1.MdiParent = main;
  488. child2.MdiParent = main;
  489. child3.MdiParent = main;
  490. child2.StartPosition = FormStartPosition.Manual;
  491. child2.Location = new Point (123, 123);
  492. child1.Visible = true;
  493. child2.Visible = true;
  494. child3.Visible = true;
  495. main.Show ();
  496. Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
  497. Assert.AreEqual ("{X=123,Y=123}", child2.Location.ToString (), "#2");
  498. Assert.AreEqual ("{X=44,Y=44}", child3.Location.ToString (), "#3");
  499. TearDown ();
  500. }
  501. [Category("NotWorking")]
  502. [Test]
  503. public void StartLocationTest11 ()
  504. {
  505. SetUp (false, false);
  506. child1.MdiParent = main;
  507. child2.MdiParent = main;
  508. child3.MdiParent = main;
  509. child2.Location = new Point (123, 123);
  510. Assert.AreEqual ("{X=123,Y=123}", child2.Location.ToString (), "#0");
  511. child1.Visible = true;
  512. child2.Visible = true;
  513. child3.Visible = true;
  514. Assert.AreEqual ("{X=123,Y=123}", child2.Location.ToString (), "#0");
  515. main.Show ();
  516. Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
  517. Assert.AreEqual ("{X=22,Y=22}", child2.Location.ToString (), "#2");
  518. Assert.AreEqual ("{X=44,Y=44}", child3.Location.ToString (), "#3");
  519. TearDown ();
  520. }
  521. [Category("NotWorking")]
  522. [Test]
  523. public void StartLocationTest12 ()
  524. {
  525. SetUp (false, false);
  526. child1.MdiParent = main;
  527. child2.MdiParent = main;
  528. child3.MdiParent = main;
  529. child1.Visible = true;
  530. //child2.Visible = true;
  531. child3.Visible = true;
  532. main.Show ();
  533. Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
  534. Assert.AreEqual ("{X=0,Y=0}", child2.Location.ToString (), "#2");
  535. Assert.AreEqual ("{X=22,Y=22}", child3.Location.ToString (), "#3");
  536. child2.Visible = true;
  537. Assert.AreEqual ("{X=44,Y=44}", child2.Location.ToString (), "#4");
  538. child1.Visible = false;
  539. child1.Visible = true;
  540. Assert.AreEqual ("{X=66,Y=66}", child1.Location.ToString (), "#1");
  541. TearDown ();
  542. }
  543. [Category("NotWorking")]
  544. [Test]
  545. public void StartLocationTest13 ()
  546. {
  547. SetUp (false, false);
  548. child1.MdiParent = main;
  549. child2.MdiParent = main;
  550. child3.MdiParent = main;
  551. child1.Visible = true;
  552. //child2.Visible = true;
  553. child3.Visible = true;
  554. main.Show ();
  555. Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
  556. Assert.AreEqual ("{X=0,Y=0}", child2.Location.ToString (), "#2");
  557. Assert.AreEqual ("{X=22,Y=22}", child3.Location.ToString (), "#3");
  558. child2.Visible = true;
  559. Assert.AreEqual ("{X=44,Y=44}", child2.Location.ToString (), "#4");
  560. child1.Visible = false;
  561. child1.Visible = true;
  562. Assert.AreEqual ("{X=66,Y=66}", child1.Location.ToString (), "#5");
  563. child3.Visible = true;
  564. Assert.AreEqual ("{X=22,Y=22}", child3.Location.ToString (), "#6");
  565. // MDI Child size does not seem to affect layout.
  566. // Size 500,500
  567. child2.Visible = false;
  568. child2.Size = new Size (500, 500);
  569. child2.Visible = true;
  570. Assert.AreEqual ("{X=88,Y=88}", child2.Location.ToString (), "#7");
  571. child2.Visible = false;
  572. child2.Visible = true;
  573. Assert.AreEqual ("{X=0,Y=0}", child2.Location.ToString (), "#8");
  574. child2.Visible = false;
  575. child2.Visible = true;
  576. Assert.AreEqual ("{X=22,Y=22}", child2.Location.ToString (), "#9");
  577. // Size 5,5
  578. child2.Visible = false;
  579. child2.Size = new Size (5, 5);
  580. child2.Visible = true;
  581. Assert.AreEqual ("{X=44,Y=44}", child2.Location.ToString (), "#10");
  582. child2.Visible = false;
  583. child2.Visible = true;
  584. Assert.AreEqual ("{X=66,Y=66}", child2.Location.ToString (), "#11");
  585. child2.Visible = false;
  586. child2.Visible = true;
  587. Assert.AreEqual ("{X=88,Y=88}", child2.Location.ToString (), "#12");
  588. child2.Visible = false;
  589. child2.Visible = true;
  590. Assert.AreEqual ("{X=0,Y=0}", child2.Location.ToString (), "#13");
  591. TearDown ();
  592. }
  593. [Category("NotWorking")]
  594. [Test]
  595. public void StartLocationTest14 ()
  596. {
  597. SetUp (false, false);
  598. child1.MdiParent = main;
  599. child2.MdiParent = main;
  600. child3.MdiParent = main;
  601. child2.StartPosition = FormStartPosition.Manual;
  602. child2.Location = new Point (44, 44);
  603. child1.Visible = true;
  604. child2.Visible = true;
  605. child3.Visible = true;
  606. main.Show ();
  607. Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
  608. Assert.AreEqual ("{X=44,Y=44}", child2.Location.ToString (), "#2");
  609. Assert.AreEqual ("{X=44,Y=44}", child3.Location.ToString (), "#3");
  610. child1.Visible = false;
  611. child1.Visible = true;
  612. Assert.AreEqual ("{X=66,Y=66}", child1.Location.ToString (), "#4");
  613. TearDown ();
  614. }
  615. [Category("NotWorking")]
  616. [Test]
  617. public void StartLocationTest15 ()
  618. {
  619. SetUp (false, false);
  620. child1.MdiParent = main;
  621. child2.MdiParent = main;
  622. child3.MdiParent = main;
  623. main.Show ();
  624. child1.Visible = true;
  625. child2.Visible = true;
  626. child2.Location = new Point (22, 44);
  627. child3.Visible = true;
  628. Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
  629. Assert.AreEqual ("{X=22,Y=44}", child2.Location.ToString (), "#2");
  630. Assert.AreEqual ("{X=44,Y=44}", child3.Location.ToString (), "#3");
  631. child1.Visible = false;
  632. child1.Visible = true;
  633. Assert.AreEqual ("{X=66,Y=66}", child1.Location.ToString (), "#4");
  634. TearDown ();
  635. }
  636. [Category("NotWorking")]
  637. [Test]
  638. public void StartLocationTest16 ()
  639. {
  640. SetUp (false, false);
  641. child1.MdiParent = main;
  642. child2.MdiParent = main;
  643. child3.MdiParent = main;
  644. child1.Visible = true;
  645. child2.Visible = true;
  646. child2.Location = new Point (22, 44);
  647. child3.Visible = true;
  648. main.Show ();
  649. Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
  650. Assert.AreEqual ("{X=22,Y=22}", child2.Location.ToString (), "#2");
  651. Assert.AreEqual ("{X=44,Y=44}", child3.Location.ToString (), "#3");
  652. child1.Visible = false;
  653. child1.Visible = true;
  654. Assert.AreEqual ("{X=66,Y=66}", child1.Location.ToString (), "#4");
  655. TearDown ();
  656. }
  657. [Category("NotWorking")]
  658. [Test]
  659. public void StartLocationTest17 ()
  660. {
  661. SetUp (false, false);
  662. child1.MdiParent = main;
  663. child2.MdiParent = main;
  664. child3.MdiParent = main;
  665. child1.Visible = true;
  666. child2.Visible = true;
  667. main.Show ();
  668. Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
  669. Assert.AreEqual ("{X=22,Y=22}", child2.Location.ToString (), "#2");
  670. Assert.AreEqual ("{X=0,Y=0}", child3.Location.ToString (), "#3");
  671. child2.Visible = false;
  672. child3.Visible = true;
  673. Assert.AreEqual ("{X=44,Y=44}", child3.Location.ToString (), "#4");
  674. TearDown ();
  675. }
  676. [Category("NotWorking")]
  677. [Test]
  678. public void StartLocationTest18 ()
  679. {
  680. SetUp (false, false);
  681. child1.MdiParent = main;
  682. child2.MdiParent = main;
  683. child3.MdiParent = main;
  684. child1.Visible = true;
  685. child2.Visible = true;
  686. main.Show ();
  687. Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
  688. Assert.AreEqual ("{X=22,Y=22}", child2.Location.ToString (), "#2");
  689. Assert.AreEqual ("{X=0,Y=0}", child3.Location.ToString (), "#3");
  690. child2.Visible = false;
  691. child2.Close ();
  692. child2.Dispose ();
  693. child2 = null;
  694. child3.Visible = true;
  695. Assert.AreEqual ("{X=44,Y=44}", child3.Location.ToString (), "#4");
  696. TearDown ();
  697. }
  698. [Category("NotWorking")]
  699. [Test]
  700. public void StartLocationTest19 ()
  701. {
  702. SetUp (false, false);
  703. child1.MdiParent = main;
  704. child2.MdiParent = main;
  705. child3.MdiParent = main;
  706. child1.Visible = true;
  707. child2.Visible = true;
  708. child3.Visible = true;
  709. child1.StartPosition = FormStartPosition.Manual;
  710. child2.StartPosition = FormStartPosition.Manual;
  711. child3.StartPosition = FormStartPosition.Manual;
  712. main.Show ();
  713. Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
  714. Assert.AreEqual ("{X=0,Y=0}", child2.Location.ToString (), "#2");
  715. Assert.AreEqual ("{X=0,Y=0}", child3.Location.ToString (), "#3");
  716. TearDown ();
  717. }
  718. */
  719. [Test]
  720. public void StartSizeTest1 ()
  721. {
  722. SetUp (false, false);
  723. child1.MdiParent = main;
  724. child2.MdiParent = main;
  725. child3.MdiParent = main;
  726. main.Show ();
  727. Assert.AreEqual ("{Width=300, Height=300}", main.Size.ToString (), "#1");
  728. Assert.AreEqual ("{Width=300, Height=300}", child1.Size.ToString (), "#2");
  729. Assert.AreEqual ("{Width=300, Height=300}", child2.Size.ToString (), "#3");
  730. Assert.AreEqual ("{Width=300, Height=300}", child3.Size.ToString (), "#4");
  731. child1.Visible = true;
  732. child2.Visible = true;
  733. child3.Visible = true;
  734. Assert.AreEqual ("{Width=300, Height=300}", main.Size.ToString (), "#1");
  735. Assert.AreEqual ("{Width=300, Height=300}", child1.Size.ToString (), "#2");
  736. Assert.AreEqual ("{Width=300, Height=300}", child2.Size.ToString (), "#3");
  737. Assert.AreEqual ("{Width=300, Height=300}", child3.Size.ToString (), "#4");
  738. TearDown ();
  739. }
  740. [Test]
  741. public void IsMdiContainerTest ()
  742. {
  743. SetUp (false, true);
  744. main.Visible = true;
  745. main.Visible = false;
  746. main.IsMdiContainer = true;
  747. child1.MdiParent = main;
  748. main.IsMdiContainer = false;
  749. Assert.AreSame (null, main.ActiveMdiChild, "#1");
  750. main.Visible = true;
  751. Assert.AreSame (null, main.ActiveMdiChild, "#2");
  752. Assert.AreSame (null, main.MdiParent, "#3");
  753. TearDown ();
  754. }
  755. [Category("NotWorking")]
  756. [Test]
  757. [ExpectedException(typeof(ArgumentException), "Cannot add a top level control to a control.")]
  758. public void AddToControlsTest ()
  759. {
  760. SetUp (false, true);
  761. main.Visible = true;
  762. main.Visible = false;
  763. main.Controls.Add (child1);
  764. TearDown ();
  765. }
  766. [Test]
  767. public void Text ()
  768. {
  769. Form main = null, child1 = null, child2 = null, child3 = null;
  770. main = new Form ();
  771. main.IsMdiContainer = true;
  772. main.Name = "main";
  773. main.Text = main.Name;
  774. main.Show();
  775. Assert.AreEqual ("main", main.Text, "#1");
  776. child1 = new Form ();
  777. child1.Name = "child1";
  778. child1.MdiParent = main;
  779. child1.Text = child1.Name;
  780. child1.WindowState = FormWindowState.Maximized;
  781. child1.Show ();
  782. Assert.AreEqual ("main - [child1]", main.Text, "#2");
  783. child2 = new Form ();
  784. child2.Name = "child2";
  785. child1.MdiParent = main;
  786. child2.Text = string.Empty;
  787. child2.WindowState = FormWindowState.Maximized;
  788. child2.Show();
  789. Assert.AreEqual ("main - [child1]", main.Text, "#3");
  790. child1.Activate();
  791. Assert.AreEqual ("main - [child1]", main.Text, "#4");
  792. child1.WindowState = FormWindowState.Minimized;
  793. Assert.AreEqual ("main", main.Text, "#5");
  794. child2.Activate ();
  795. Assert.AreEqual ("main", main.Text, "#6");
  796. child2.WindowState = FormWindowState.Maximized;
  797. Assert.AreEqual ("main", main.Text, "#7");
  798. child3 = new Form ();
  799. child3.Name = "child3";
  800. child3.MdiParent = main;
  801. child3.Text = child3.Name;
  802. child3.WindowState = FormWindowState.Maximized;
  803. child3.Show ();
  804. Assert.AreEqual ("main - [child3]", main.Text, "#8");
  805. child3.WindowState = FormWindowState.Normal;
  806. Assert.AreEqual ("main", main.Text, "#9");
  807. main.Text = string.Empty;
  808. child3.WindowState = FormWindowState.Maximized;
  809. Assert.AreEqual (" - [child3]", main.Text, "#10");
  810. child3.Text = string.Empty;
  811. Assert.AreEqual (string.Empty, main.Text, "#11");
  812. main.Close ();
  813. child3.Dispose ();
  814. child2.Dispose ();
  815. child1.Dispose ();
  816. main.Dispose ();
  817. }
  818. [Test]
  819. public void Text_MdiContainer ()
  820. {
  821. Form main = new Form ();
  822. main.ShowInTaskbar = false;
  823. main.Text = "main";
  824. main.IsMdiContainer = true;
  825. main.Show ();
  826. Assert.AreEqual ("main", main.Text, "#1");
  827. Form child = new Form ();
  828. child.Name = "child";
  829. child.MdiParent = main;
  830. child.Text = child.Name;
  831. child.WindowState = FormWindowState.Maximized;
  832. child.Show ();
  833. Assert.AreEqual ("main - [child]", main.Text, "#2");
  834. main.Dispose ();
  835. }
  836. [Test] // bug 80038
  837. public void Text_ChildClose ()
  838. {
  839. Form main = new Form ();
  840. main.ShowInTaskbar = false;
  841. main.IsMdiContainer = true;
  842. main.Text = "main";
  843. main.Show ();
  844. Assert.AreEqual ("main", main.Text, "#1");
  845. Form child = new Form ();
  846. child.Name = "child";
  847. child.MdiParent = main;
  848. child.Text = child.Name;
  849. child.WindowState = FormWindowState.Maximized;
  850. child.Show ();
  851. Assert.AreEqual ("main - [child]", main.Text, "#2");
  852. child.Close ();
  853. Assert.AreEqual ("main", main.Text, "#3");
  854. main.Dispose ();
  855. }
  856. [Test]
  857. public void Text_Maximized ()
  858. {
  859. Form main = new Form ();
  860. main.IsMdiContainer = true;
  861. main.Name = "main";
  862. main.Text = main.Name;
  863. main.Show ();
  864. Assert.AreEqual ("main", main.Text, "#1");
  865. Form child1 = new Form ();
  866. child1.Name = "child1";
  867. child1.MdiParent = main;
  868. child1.Text = child1.Name;
  869. child1.WindowState = FormWindowState.Maximized;
  870. child1.Show ();
  871. Assert.AreEqual ("main - [child1]", main.Text, "#2");
  872. Form child2 = new Form ();
  873. child2.Name = "child2";
  874. child2.MdiParent = main;
  875. child2.Text = child2.Name;
  876. child2.WindowState = FormWindowState.Maximized;
  877. child2.Show ();
  878. Assert.AreEqual ("main - [child2]", main.Text, "#3");
  879. child1.WindowState = FormWindowState.Maximized;
  880. Assert.AreEqual ("main - [child1]", main.Text, "#4");
  881. main.Dispose ();
  882. }
  883. [Test]
  884. [Category ("NotWorking")]
  885. public void TopLevelTest ()
  886. {
  887. Form main, child1;
  888. main = new Form ();
  889. main.IsMdiContainer = true;
  890. main.Name = "main";
  891. child1 = new Form ();
  892. child1.Name = "child1";
  893. Assert.AreEqual (true, child1.TopLevel, "#01");
  894. child1.MdiParent = main;
  895. Assert.AreEqual (false, child1.TopLevel, "#02");
  896. child1.Dispose ();
  897. main.Dispose ();
  898. }
  899. [Test]
  900. public void ActiveMdiChild ()
  901. {
  902. Form main, child1, child2;
  903. main = new Form ();
  904. main.IsMdiContainer = true;
  905. main.Name = "main";
  906. child1 = new Form ();
  907. child1.Name = "child1";
  908. child1.MdiParent = main;
  909. child1.WindowState = FormWindowState.Maximized;
  910. child1.Show ();
  911. child2 = new Form ();
  912. child2.Name = "child2";
  913. child2.MdiParent = main;
  914. child2.Show();
  915. Assert.IsNull (main.ActiveMdiChild, "#1");
  916. main.Show ();
  917. Assert.AreSame (child2, main.ActiveMdiChild, "#2");
  918. child1.WindowState = FormWindowState.Maximized;
  919. Assert.AreSame (child1, main.ActiveMdiChild, "#3");
  920. child2.WindowState = FormWindowState.Maximized;
  921. Assert.AreSame (child2, main.ActiveMdiChild, "#4");
  922. main.Visible = false;
  923. #if NET_2_0
  924. Assert.IsNull (main.ActiveMdiChild, "#5");
  925. #else
  926. Assert.AreSame (child2, main.ActiveMdiChild, "#5");
  927. #endif
  928. child2.Dispose ();
  929. child1.Dispose ();
  930. main.Dispose ();
  931. main.Close();
  932. }
  933. [Test]
  934. public void ActiveMdiChild2 ()
  935. {
  936. SetUp (false, false);
  937. child1.MdiParent = main;
  938. child2.MdiParent = main;
  939. main.Show ();
  940. child1.Show ();
  941. child2.Show ();
  942. child1.Activate ();
  943. child1.Visible = false;
  944. Assert.AreSame (child2, main.ActiveMdiChild, "#1");
  945. TearDown ();
  946. }
  947. [Test]
  948. public void ActiveMdiChild3 ()
  949. {
  950. SetUp (false, false);
  951. child1.MdiParent = main;
  952. child2.MdiParent = main;
  953. main.Visible = true;
  954. main.Visible = false;
  955. Assert.AreSame (null, main.ActiveMdiChild, "#1");
  956. //child2.Visible = true; This will cause StackOverflowException on MS.
  957. main.Visible = true;
  958. Assert.AreSame (null, main.ActiveMdiChild, "#2");
  959. TearDown ();
  960. }
  961. [Test]
  962. public void MdiChild_WindowState1 ()
  963. {
  964. Form main = null, child1 = null, child2 = null;
  965. try {
  966. main = new Form ();
  967. main.IsMdiContainer = true;
  968. main.Name = "main";
  969. child1 = new Form ();
  970. child1.Name = "child1";
  971. child1.Text = "child1";
  972. child1.MdiParent = main;
  973. child1.WindowState = FormWindowState.Maximized;
  974. child1.Show ();
  975. child2 = new Form ();
  976. child2.Name = "child2";
  977. child2.Text = "child2";
  978. child2.MdiParent = main;
  979. child2.Show();
  980. Assert.AreEqual (FormWindowState.Maximized, child1.WindowState, "#1");
  981. Assert.AreEqual (FormWindowState.Normal, child2.WindowState, "#2");
  982. main.Show ();
  983. Assert.AreEqual (FormWindowState.Normal, child1.WindowState, "#3");
  984. Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#4");
  985. } finally {
  986. child2.Dispose ();
  987. child1.Dispose ();
  988. main.Dispose ();
  989. main.Close();
  990. }
  991. }
  992. [Test]
  993. public void MdiChild_WindowState2 ()
  994. {
  995. Form main = null, child1 = null, child2 = null;
  996. try{
  997. main = new Form ();
  998. main.Name = "main";
  999. main.IsMdiContainer = true;
  1000. main.Show ();
  1001. child1 = new Form ();
  1002. child1.Name = "child1";
  1003. child1.MdiParent = main;
  1004. child1.WindowState = FormWindowState.Maximized;
  1005. child1.Show ();
  1006. child2 = new Form ();
  1007. child2.Name = "child2";
  1008. child2.MdiParent = main;
  1009. child2.Show();
  1010. Assert.AreEqual (FormWindowState.Normal, child1.WindowState, "#1");
  1011. Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#2");
  1012. } finally {
  1013. child2.Dispose ();
  1014. child1.Dispose ();
  1015. main.Dispose ();
  1016. main.Close();
  1017. }
  1018. }
  1019. [Test]
  1020. public void MdiChild_WindowState3 ()
  1021. {
  1022. Form main = null, child1 = null, child2 = null;
  1023. try {
  1024. main = new Form ();
  1025. main.IsMdiContainer = true;
  1026. main.Show ();
  1027. child1 = new Form ();
  1028. child1.MdiParent = main;
  1029. child1.Show ();
  1030. child2 = new Form ();
  1031. child2.MdiParent = main;
  1032. child2.WindowState = FormWindowState.Maximized;
  1033. child2.Show();
  1034. Assert.AreEqual (FormWindowState.Normal, child1.WindowState, "#1");
  1035. Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#2");
  1036. } finally {
  1037. child2.Dispose ();
  1038. child1.Dispose ();
  1039. main.Dispose ();
  1040. main.Close();
  1041. }
  1042. }
  1043. [Test]
  1044. public void MdiChild_WindowState4 ()
  1045. {
  1046. Form main = null, child1 = null, child2 = null;
  1047. try {
  1048. main = new Form ();
  1049. main.IsMdiContainer = true;
  1050. main.Show ();
  1051. child1 = new Form ();
  1052. child1.MdiParent = main;
  1053. child1.WindowState = FormWindowState.Maximized;
  1054. child1.Show ();
  1055. child2 = new Form ();
  1056. child2.MdiParent = main;
  1057. child2.WindowState = FormWindowState.Maximized;
  1058. Assert.AreEqual (FormWindowState.Maximized, child1.WindowState, "#1");
  1059. Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#2");
  1060. child2.Show();
  1061. Assert.AreEqual (FormWindowState.Normal, child1.WindowState, "#3");
  1062. Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#4");
  1063. child2.WindowState = FormWindowState.Normal;
  1064. Assert.AreEqual (FormWindowState.Normal, child1.WindowState, "#5");
  1065. Assert.AreEqual (FormWindowState.Normal, child2.WindowState, "#6");
  1066. } finally {
  1067. child2.Dispose ();
  1068. child1.Dispose ();
  1069. main.Dispose ();
  1070. main.Close();
  1071. }
  1072. }
  1073. [Test]
  1074. public void MdiChild_WindowState5 ()
  1075. {
  1076. Form main = null, child1 = null, child2 = null;
  1077. try {
  1078. main = new Form ();
  1079. main.Name = "main";
  1080. main.IsMdiContainer = true;
  1081. main.Show ();
  1082. child1 = new Form ();
  1083. child1.Name = "child1";
  1084. child1.MdiParent = main;
  1085. child1.WindowState = FormWindowState.Maximized;
  1086. child1.Show ();
  1087. child2 = new Form ();
  1088. child2.Name = "child2";
  1089. child2.MdiParent = main;
  1090. child2.WindowState = FormWindowState.Maximized;
  1091. Assert.AreEqual (FormWindowState.Maximized, child1.WindowState, "#1");
  1092. Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#2");
  1093. child2.Show();
  1094. Assert.AreEqual (FormWindowState.Normal, child1.WindowState, "#3");
  1095. Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#4");
  1096. child1.Activate ();
  1097. Assert.AreEqual (FormWindowState.Maximized, child1.WindowState, "#5");
  1098. Assert.AreEqual (FormWindowState.Normal, child2.WindowState, "#6");
  1099. } finally {
  1100. child2.Dispose ();
  1101. child1.Dispose ();
  1102. main.Dispose ();
  1103. main.Close();
  1104. }
  1105. }
  1106. [Test]
  1107. public void MdiChild_WindowState6 ()
  1108. {
  1109. Form main = null, child1 = null, child2 = null;
  1110. try {
  1111. main = new Form ();
  1112. main.Name = "main";
  1113. main.IsMdiContainer = true;
  1114. main.Show ();
  1115. child1 = new Form ();
  1116. child1.Name = "child1";
  1117. child1.MdiParent = main;
  1118. child1.WindowState = FormWindowState.Minimized;
  1119. child1.Show ();
  1120. child2 = new Form ();
  1121. child2.Name = "child2";
  1122. child2.MdiParent = main;
  1123. child2.WindowState = FormWindowState.Maximized;
  1124. Assert.AreEqual (FormWindowState.Minimized, child1.WindowState, "#1");
  1125. Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#2");
  1126. child2.Show();
  1127. Assert.AreEqual (FormWindowState.Minimized, child1.WindowState, "#3");
  1128. Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#4");
  1129. child1.Activate ();
  1130. Assert.AreEqual (FormWindowState.Maximized, child1.WindowState, "#5");
  1131. Assert.AreEqual (FormWindowState.Normal, child2.WindowState, "#6");
  1132. child2.Activate ();
  1133. Assert.AreEqual (FormWindowState.Minimized, child1.WindowState, "#7");
  1134. Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#8");
  1135. } finally {
  1136. child2.Dispose ();
  1137. child1.Dispose ();
  1138. main.Dispose ();
  1139. main.Close();
  1140. }
  1141. }
  1142. [Test] // bug 80995
  1143. public void ChangeClientSizeTest ()
  1144. {
  1145. SetUp (false, false, false);
  1146. child1.ClientSize = new Size (224, 37);
  1147. child1.MdiParent = main;
  1148. Assert.AreEqual ("{Width=224, Height=37}", child1.ClientSize.ToString (), "#01");
  1149. child1.Show ();
  1150. Assert.AreEqual ("{Width=224, Height=37}", child1.ClientSize.ToString (), "#02");
  1151. main.Show ();
  1152. Assert.AreEqual ("{Width=224, Height=37}", child1.ClientSize.ToString (), "#03");
  1153. }
  1154. private string events_fired;
  1155. [Test]
  1156. public void MdiClosingClosedEvent ()
  1157. {
  1158. Form f = new Form ();
  1159. f.IsMdiContainer = true;
  1160. MdiChild mdi = new MdiChild ();
  1161. mdi.can_close = false;
  1162. mdi.MdiParent = f;
  1163. f.Closing += new CancelEventHandler (f_Closing);
  1164. f.Closed += new EventHandler (f_Closed);
  1165. mdi.Closing += new CancelEventHandler (mdi_Closing);
  1166. mdi.Closed += new EventHandler (mdi_Closed);
  1167. #if NET_2_0
  1168. f.FormClosing += new FormClosingEventHandler (f_FormClosing);
  1169. f.FormClosed += new FormClosedEventHandler (f_FormClosed);
  1170. mdi.FormClosing += new FormClosingEventHandler (mdi_FormClosing);
  1171. mdi.FormClosed += new FormClosedEventHandler (mdi_FormClosed);
  1172. #endif
  1173. f.Show ();
  1174. mdi.Show ();
  1175. events_fired = string.Empty;
  1176. f.Close ();
  1177. #if NET_2_0
  1178. Assert.AreEqual ("Child.Closing: True, Child.FormClosing: True, Parent.Closing: True, Parent.FormClosing: True, ", events_fired, "A1-2.0");
  1179. #else
  1180. Assert.AreEqual ("Child.Closing: True, Parent.Closing: True, ", events_fired, "A1-1.1");
  1181. #endif
  1182. events_fired = string.Empty;
  1183. mdi.can_close = true;
  1184. f.Close ();
  1185. #if NET_2_0
  1186. Assert.AreEqual ("Child.Closing: False, Child.FormClosing: False, Parent.Closing: False, Parent.FormClosing: False, Child.Closed, Child.FormClosed, Parent.Closed, Parent.FormClosed, ", events_fired, "A2-2.0");
  1187. #else
  1188. Assert.AreEqual ("Child.Closing: False, Parent.Closing: False, Child.Closed, Parent.Closed, ", events_fired, "A2-1.1");
  1189. #endif
  1190. f.Dispose ();
  1191. }
  1192. #if NET_2_0
  1193. void mdi_FormClosed (object sender, FormClosedEventArgs e)
  1194. {
  1195. events_fired += "Child.FormClosed, ";
  1196. }
  1197. void mdi_FormClosing (object sender, FormClosingEventArgs e)
  1198. {
  1199. events_fired += string.Format ("Child.FormClosing: {0}, ", e.Cancel);
  1200. }
  1201. void f_FormClosed (object sender, FormClosedEventArgs e)
  1202. {
  1203. events_fired += "Parent.FormClosed, ";
  1204. }
  1205. void f_FormClosing (object sender, FormClosingEventArgs e)
  1206. {
  1207. events_fired += string.Format ("Parent.FormClosing: {0}, ", e.Cancel);
  1208. }
  1209. #endif
  1210. void mdi_Closed (object sender, EventArgs e)
  1211. {
  1212. events_fired += "Child.Closed, ";
  1213. }
  1214. void mdi_Closing (object sender, CancelEventArgs e)
  1215. {
  1216. events_fired += string.Format ("Child.Closing: {0}, ", e.Cancel);
  1217. }
  1218. void f_Closed (object sender, EventArgs e)
  1219. {
  1220. events_fired += "Parent.Closed, ";
  1221. }
  1222. void f_Closing (object sender, CancelEventArgs e)
  1223. {
  1224. events_fired += string.Format ("Parent.Closing: {0}, ", e.Cancel);
  1225. }
  1226. private class MdiChild : Form
  1227. {
  1228. public bool can_close = false;
  1229. public MdiChild ()
  1230. {
  1231. Closing += new CancelEventHandler (MdiChild_Closing);
  1232. }
  1233. void MdiChild_Closing (object sender, CancelEventArgs e)
  1234. {
  1235. e.Cancel = !can_close;
  1236. }
  1237. }
  1238. }
  1239. }