MdiFormTest.cs 29 KB

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