MdiFormTest.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441
  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. [Test]
  20. public void Text ()
  21. {
  22. Form main = null, child1 = null, child2 = null, child3 = null;
  23. main = new Form ();
  24. main.IsMdiContainer = true;
  25. main.Name = "main";
  26. main.Text = main.Name;
  27. main.Show();
  28. Assert.AreEqual ("main", main.Text, "#1");
  29. child1 = new Form ();
  30. child1.Name = "child1";
  31. child1.MdiParent = main;
  32. child1.Text = child1.Name;
  33. child1.WindowState = FormWindowState.Maximized;
  34. child1.Show ();
  35. Assert.AreEqual ("main - [child1]", main.Text, "#2");
  36. child2 = new Form ();
  37. child2.Name = "child2";
  38. child1.MdiParent = main;
  39. child2.Text = string.Empty;
  40. child2.WindowState = FormWindowState.Maximized;
  41. child2.Show();
  42. Assert.AreEqual ("main - [child1]", main.Text, "#3");
  43. child1.Activate();
  44. Assert.AreEqual ("main - [child1]", main.Text, "#4");
  45. child1.WindowState = FormWindowState.Minimized;
  46. Assert.AreEqual ("main", main.Text, "#5");
  47. child2.Activate ();
  48. Assert.AreEqual ("main", main.Text, "#6");
  49. child2.WindowState = FormWindowState.Maximized;
  50. Assert.AreEqual ("main", main.Text, "#7");
  51. child3 = new Form ();
  52. child3.Name = "child3";
  53. child3.MdiParent = main;
  54. child3.Text = child3.Name;
  55. child3.WindowState = FormWindowState.Maximized;
  56. child3.Show ();
  57. Assert.AreEqual ("main - [child3]", main.Text, "#8");
  58. child3.WindowState = FormWindowState.Normal;
  59. Assert.AreEqual ("main", main.Text, "#9");
  60. main.Text = string.Empty;
  61. child3.WindowState = FormWindowState.Maximized;
  62. Assert.AreEqual (" - [child3]", main.Text, "#10");
  63. child3.Text = string.Empty;
  64. Assert.AreEqual (string.Empty, main.Text, "#11");
  65. child3.Dispose ();
  66. child2.Dispose ();
  67. child1.Dispose ();
  68. main.Dispose ();
  69. }
  70. // Setting Text of the MDI containiner before setting IsMdiContainer to
  71. // true causes #2 to fail on Mono
  72. [Test]
  73. [Category ("NotWorking")]
  74. public void Text_MdiContainer ()
  75. {
  76. Form main = new Form ();
  77. main.ShowInTaskbar = false;
  78. main.Text = "main";
  79. main.IsMdiContainer = true;
  80. main.Show ();
  81. Assert.AreEqual ("main", main.Text, "#1");
  82. Form child = new Form ();
  83. child.Name = "child";
  84. child.MdiParent = main;
  85. child.Text = child.Name;
  86. child.WindowState = FormWindowState.Maximized;
  87. child.Show ();
  88. Assert.AreEqual ("main - [child]", main.Text, "#2");
  89. }
  90. [Test] // bug 80038
  91. [Category ("NotWorking")]
  92. public void Text_ChildClose ()
  93. {
  94. Form main = new Form ();
  95. main.ShowInTaskbar = false;
  96. main.IsMdiContainer = true;
  97. main.Text = "main";
  98. main.Show ();
  99. Assert.AreEqual ("main", main.Text, "#1");
  100. Form child = new Form ();
  101. child.Name = "child";
  102. child.MdiParent = main;
  103. child.Text = child.Name;
  104. child.WindowState = FormWindowState.Maximized;
  105. child.Show ();
  106. Assert.AreEqual ("main - [child]", main.Text, "#2");
  107. child.Close ();
  108. Assert.AreEqual ("main", main.Text, "#3");
  109. }
  110. // Setting WindowState to Maximized of a form, of which the handle is
  111. // already created, does not make it ActiveMdiChild
  112. [Test]
  113. [Category ("NotWorking")]
  114. public void Text_Maximized ()
  115. {
  116. Form main = new Form ();
  117. main.IsMdiContainer = true;
  118. main.Name = "main";
  119. main.Text = main.Name;
  120. main.Show ();
  121. Assert.AreEqual ("main", main.Text, "#1");
  122. Form child1 = new Form ();
  123. child1.Name = "child1";
  124. child1.MdiParent = main;
  125. child1.Text = child1.Name;
  126. child1.WindowState = FormWindowState.Maximized;
  127. child1.Show ();
  128. Assert.AreEqual ("main - [child1]", main.Text, "#2");
  129. Form child2 = new Form ();
  130. child2.Name = "child2";
  131. child2.MdiParent = main;
  132. child2.Text = child2.Name;
  133. child2.WindowState = FormWindowState.Maximized;
  134. child2.Show ();
  135. Assert.AreEqual ("main - [child2]", main.Text, "#3");
  136. child1.WindowState = FormWindowState.Maximized;
  137. Assert.AreEqual ("main - [child1]", main.Text, "#4");
  138. }
  139. // Form.ActiveMdiChild should return null if handle is not yet created
  140. // Depends on fix for bug #80020
  141. [Test]
  142. [Category("NotWorking")]
  143. public void ActiveMdiChild ()
  144. {
  145. Form main, child1, child2;
  146. main = new Form ();
  147. main.IsMdiContainer = true;
  148. main.Name = "main";
  149. child1 = new Form ();
  150. child1.Name = "child1";
  151. child1.MdiParent = main;
  152. child1.WindowState = FormWindowState.Maximized;
  153. child1.Show ();
  154. child2 = new Form ();
  155. child2.Name = "child2";
  156. child2.MdiParent = main;
  157. child2.Show();
  158. Assert.IsNull (main.ActiveMdiChild, "#1");
  159. main.Show ();
  160. Assert.AreSame (child2, main.ActiveMdiChild, "#2");
  161. child1.WindowState = FormWindowState.Maximized;
  162. Assert.AreSame (child1, main.ActiveMdiChild, "#3");
  163. child2.WindowState = FormWindowState.Maximized;
  164. Assert.AreSame (child2, main.ActiveMdiChild, "#4");
  165. main.Visible = false;
  166. Assert.AreSame (child2, main.ActiveMdiChild, "#5");
  167. child2.Dispose ();
  168. child1.Dispose ();
  169. main.Dispose ();
  170. main.Close();
  171. }
  172. [Test]
  173. public void MdiChild_WindowState1 ()
  174. {
  175. Form main = null, child1 = null, child2 = null;
  176. try {
  177. main = new Form ();
  178. main.IsMdiContainer = true;
  179. main.Name = "main";
  180. child1 = new Form ();
  181. child1.Name = "child1";
  182. child1.MdiParent = main;
  183. child1.WindowState = FormWindowState.Maximized;
  184. child1.Show ();
  185. child2 = new Form ();
  186. child2.Name = "child2";
  187. child2.MdiParent = main;
  188. child2.Show();
  189. Assert.AreEqual (FormWindowState.Maximized, child1.WindowState, "#1");
  190. Assert.AreEqual (FormWindowState.Normal, child2.WindowState, "#2");
  191. main.Show ();
  192. Assert.AreEqual (FormWindowState.Normal, child1.WindowState, "#3");
  193. Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#4");
  194. } finally {
  195. child2.Dispose ();
  196. child1.Dispose ();
  197. main.Dispose ();
  198. main.Close();
  199. }
  200. }
  201. [Test]
  202. public void MdiChild_WindowState2 ()
  203. {
  204. Form main = null, child1 = null, child2 = null;
  205. try{
  206. main = new Form ();
  207. main.Name = "main";
  208. main.IsMdiContainer = true;
  209. main.Show ();
  210. child1 = new Form ();
  211. child1.Name = "child1";
  212. child1.MdiParent = main;
  213. child1.WindowState = FormWindowState.Maximized;
  214. child1.Show ();
  215. child2 = new Form ();
  216. child2.Name = "child2";
  217. child2.MdiParent = main;
  218. child2.Show();
  219. Assert.AreEqual (FormWindowState.Normal, child1.WindowState, "#1");
  220. Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#2");
  221. } finally {
  222. child2.Dispose ();
  223. child1.Dispose ();
  224. main.Dispose ();
  225. main.Close();
  226. }
  227. }
  228. [Test]
  229. public void MdiChild_WindowState3 ()
  230. {
  231. Form main = null, child1 = null, child2 = null;
  232. try {
  233. main = new Form ();
  234. main.IsMdiContainer = true;
  235. main.Show ();
  236. child1 = new Form ();
  237. child1.MdiParent = main;
  238. child1.Show ();
  239. child2 = new Form ();
  240. child2.MdiParent = main;
  241. child2.WindowState = FormWindowState.Maximized;
  242. child2.Show();
  243. Assert.AreEqual (FormWindowState.Normal, child1.WindowState, "#1");
  244. Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#2");
  245. } finally {
  246. child2.Dispose ();
  247. child1.Dispose ();
  248. main.Dispose ();
  249. main.Close();
  250. }
  251. }
  252. [Test]
  253. public void MdiChild_WindowState4 ()
  254. {
  255. Form main = null, child1 = null, child2 = null;
  256. try {
  257. main = new Form ();
  258. main.IsMdiContainer = true;
  259. main.Show ();
  260. child1 = new Form ();
  261. child1.MdiParent = main;
  262. child1.WindowState = FormWindowState.Maximized;
  263. child1.Show ();
  264. child2 = new Form ();
  265. child2.MdiParent = main;
  266. child2.WindowState = FormWindowState.Maximized;
  267. Assert.AreEqual (FormWindowState.Maximized, child1.WindowState, "#1");
  268. Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#2");
  269. child2.Show();
  270. Assert.AreEqual (FormWindowState.Normal, child1.WindowState, "#3");
  271. Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#4");
  272. child2.WindowState = FormWindowState.Normal;
  273. Assert.AreEqual (FormWindowState.Normal, child1.WindowState, "#5");
  274. Assert.AreEqual (FormWindowState.Normal, child2.WindowState, "#6");
  275. } finally {
  276. child2.Dispose ();
  277. child1.Dispose ();
  278. main.Dispose ();
  279. main.Close();
  280. }
  281. }
  282. [Test]
  283. public void MdiChild_WindowState5 ()
  284. {
  285. Form main = null, child1 = null, child2 = null;
  286. try {
  287. main = new Form ();
  288. main.Name = "main";
  289. main.IsMdiContainer = true;
  290. main.Show ();
  291. child1 = new Form ();
  292. child1.Name = "child1";
  293. child1.MdiParent = main;
  294. child1.WindowState = FormWindowState.Maximized;
  295. child1.Show ();
  296. child2 = new Form ();
  297. child2.Name = "child2";
  298. child2.MdiParent = main;
  299. child2.WindowState = FormWindowState.Maximized;
  300. Assert.AreEqual (FormWindowState.Maximized, child1.WindowState, "#1");
  301. Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#2");
  302. child2.Show();
  303. Assert.AreEqual (FormWindowState.Normal, child1.WindowState, "#3");
  304. Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#4");
  305. child1.Activate ();
  306. Assert.AreEqual (FormWindowState.Maximized, child1.WindowState, "#5");
  307. Assert.AreEqual (FormWindowState.Normal, child2.WindowState, "#6");
  308. } finally {
  309. child2.Dispose ();
  310. child1.Dispose ();
  311. main.Dispose ();
  312. main.Close();
  313. }
  314. }
  315. [Test]
  316. public void MdiChild_WindowState6 ()
  317. {
  318. Form main = null, child1 = null, child2 = null;
  319. try {
  320. main = new Form ();
  321. main.Name = "main";
  322. main.IsMdiContainer = true;
  323. main.Show ();
  324. child1 = new Form ();
  325. child1.Name = "child1";
  326. child1.MdiParent = main;
  327. child1.WindowState = FormWindowState.Minimized;
  328. child1.Show ();
  329. child2 = new Form ();
  330. child2.Name = "child2";
  331. child2.MdiParent = main;
  332. child2.WindowState = FormWindowState.Maximized;
  333. Assert.AreEqual (FormWindowState.Minimized, child1.WindowState, "#1");
  334. Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#2");
  335. child2.Show();
  336. Assert.AreEqual (FormWindowState.Minimized, child1.WindowState, "#3");
  337. Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#4");
  338. child1.Activate ();
  339. Assert.AreEqual (FormWindowState.Maximized, child1.WindowState, "#5");
  340. Assert.AreEqual (FormWindowState.Normal, child2.WindowState, "#6");
  341. child2.Activate ();
  342. Assert.AreEqual (FormWindowState.Minimized, child1.WindowState, "#7");
  343. Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#8");
  344. } finally {
  345. child2.Dispose ();
  346. child1.Dispose ();
  347. main.Dispose ();
  348. main.Close();
  349. }
  350. }
  351. }
  352. }