MdiFormTest.cs 33 KB

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