MdiFormTest.cs 28 KB

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