MdiFormTest.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444
  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. public void Text_ChildClose ()
  92. {
  93. Form main = new Form ();
  94. main.ShowInTaskbar = false;
  95. main.IsMdiContainer = true;
  96. main.Text = "main";
  97. main.Show ();
  98. Assert.AreEqual ("main", main.Text, "#1");
  99. Form child = new Form ();
  100. child.Name = "child";
  101. child.MdiParent = main;
  102. child.Text = child.Name;
  103. child.WindowState = FormWindowState.Maximized;
  104. child.Show ();
  105. Assert.AreEqual ("main - [child]", main.Text, "#2");
  106. child.Close ();
  107. Assert.AreEqual ("main", main.Text, "#3");
  108. }
  109. // Setting WindowState to Maximized of a form, of which the handle is
  110. // already created, does not make it ActiveMdiChild
  111. [Test]
  112. [Category ("NotWorking")]
  113. public void Text_Maximized ()
  114. {
  115. Form main = new Form ();
  116. main.IsMdiContainer = true;
  117. main.Name = "main";
  118. main.Text = main.Name;
  119. main.Show ();
  120. Assert.AreEqual ("main", main.Text, "#1");
  121. Form child1 = new Form ();
  122. child1.Name = "child1";
  123. child1.MdiParent = main;
  124. child1.Text = child1.Name;
  125. child1.WindowState = FormWindowState.Maximized;
  126. child1.Show ();
  127. Assert.AreEqual ("main - [child1]", main.Text, "#2");
  128. Form child2 = new Form ();
  129. child2.Name = "child2";
  130. child2.MdiParent = main;
  131. child2.Text = child2.Name;
  132. child2.WindowState = FormWindowState.Maximized;
  133. child2.Show ();
  134. Assert.AreEqual ("main - [child2]", main.Text, "#3");
  135. child1.WindowState = FormWindowState.Maximized;
  136. Assert.AreEqual ("main - [child1]", main.Text, "#4");
  137. }
  138. // Form.ActiveMdiChild should return null if handle is not yet created
  139. // Depends on fix for bug #80020
  140. [Test]
  141. [Category("NotWorking")]
  142. public void ActiveMdiChild ()
  143. {
  144. Form main, child1, child2;
  145. main = new Form ();
  146. main.IsMdiContainer = true;
  147. main.Name = "main";
  148. child1 = new Form ();
  149. child1.Name = "child1";
  150. child1.MdiParent = main;
  151. child1.WindowState = FormWindowState.Maximized;
  152. child1.Show ();
  153. child2 = new Form ();
  154. child2.Name = "child2";
  155. child2.MdiParent = main;
  156. child2.Show();
  157. Assert.IsNull (main.ActiveMdiChild, "#1");
  158. main.Show ();
  159. Assert.AreSame (child2, main.ActiveMdiChild, "#2");
  160. child1.WindowState = FormWindowState.Maximized;
  161. Assert.AreSame (child1, main.ActiveMdiChild, "#3");
  162. child2.WindowState = FormWindowState.Maximized;
  163. Assert.AreSame (child2, main.ActiveMdiChild, "#4");
  164. main.Visible = false;
  165. #if NET_2_0
  166. Assert.IsNull (main.ActiveMdiChild, "#5");
  167. #else
  168. Assert.AreSame (child2, main.ActiveMdiChild, "#5");
  169. #endif
  170. child2.Dispose ();
  171. child1.Dispose ();
  172. main.Dispose ();
  173. main.Close();
  174. }
  175. [Test]
  176. public void MdiChild_WindowState1 ()
  177. {
  178. Form main = null, child1 = null, child2 = null;
  179. try {
  180. main = new Form ();
  181. main.IsMdiContainer = true;
  182. main.Name = "main";
  183. child1 = new Form ();
  184. child1.Name = "child1";
  185. child1.MdiParent = main;
  186. child1.WindowState = FormWindowState.Maximized;
  187. child1.Show ();
  188. child2 = new Form ();
  189. child2.Name = "child2";
  190. child2.MdiParent = main;
  191. child2.Show();
  192. Assert.AreEqual (FormWindowState.Maximized, child1.WindowState, "#1");
  193. Assert.AreEqual (FormWindowState.Normal, child2.WindowState, "#2");
  194. main.Show ();
  195. Assert.AreEqual (FormWindowState.Normal, child1.WindowState, "#3");
  196. Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#4");
  197. } finally {
  198. child2.Dispose ();
  199. child1.Dispose ();
  200. main.Dispose ();
  201. main.Close();
  202. }
  203. }
  204. [Test]
  205. public void MdiChild_WindowState2 ()
  206. {
  207. Form main = null, child1 = null, child2 = null;
  208. try{
  209. main = new Form ();
  210. main.Name = "main";
  211. main.IsMdiContainer = true;
  212. main.Show ();
  213. child1 = new Form ();
  214. child1.Name = "child1";
  215. child1.MdiParent = main;
  216. child1.WindowState = FormWindowState.Maximized;
  217. child1.Show ();
  218. child2 = new Form ();
  219. child2.Name = "child2";
  220. child2.MdiParent = main;
  221. child2.Show();
  222. Assert.AreEqual (FormWindowState.Normal, child1.WindowState, "#1");
  223. Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#2");
  224. } finally {
  225. child2.Dispose ();
  226. child1.Dispose ();
  227. main.Dispose ();
  228. main.Close();
  229. }
  230. }
  231. [Test]
  232. public void MdiChild_WindowState3 ()
  233. {
  234. Form main = null, child1 = null, child2 = null;
  235. try {
  236. main = new Form ();
  237. main.IsMdiContainer = true;
  238. main.Show ();
  239. child1 = new Form ();
  240. child1.MdiParent = main;
  241. child1.Show ();
  242. child2 = new Form ();
  243. child2.MdiParent = main;
  244. child2.WindowState = FormWindowState.Maximized;
  245. child2.Show();
  246. Assert.AreEqual (FormWindowState.Normal, child1.WindowState, "#1");
  247. Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#2");
  248. } finally {
  249. child2.Dispose ();
  250. child1.Dispose ();
  251. main.Dispose ();
  252. main.Close();
  253. }
  254. }
  255. [Test]
  256. public void MdiChild_WindowState4 ()
  257. {
  258. Form main = null, child1 = null, child2 = null;
  259. try {
  260. main = new Form ();
  261. main.IsMdiContainer = true;
  262. main.Show ();
  263. child1 = new Form ();
  264. child1.MdiParent = main;
  265. child1.WindowState = FormWindowState.Maximized;
  266. child1.Show ();
  267. child2 = new Form ();
  268. child2.MdiParent = main;
  269. child2.WindowState = FormWindowState.Maximized;
  270. Assert.AreEqual (FormWindowState.Maximized, child1.WindowState, "#1");
  271. Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#2");
  272. child2.Show();
  273. Assert.AreEqual (FormWindowState.Normal, child1.WindowState, "#3");
  274. Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#4");
  275. child2.WindowState = FormWindowState.Normal;
  276. Assert.AreEqual (FormWindowState.Normal, child1.WindowState, "#5");
  277. Assert.AreEqual (FormWindowState.Normal, child2.WindowState, "#6");
  278. } finally {
  279. child2.Dispose ();
  280. child1.Dispose ();
  281. main.Dispose ();
  282. main.Close();
  283. }
  284. }
  285. [Test]
  286. public void MdiChild_WindowState5 ()
  287. {
  288. Form main = null, child1 = null, child2 = null;
  289. try {
  290. main = new Form ();
  291. main.Name = "main";
  292. main.IsMdiContainer = true;
  293. main.Show ();
  294. child1 = new Form ();
  295. child1.Name = "child1";
  296. child1.MdiParent = main;
  297. child1.WindowState = FormWindowState.Maximized;
  298. child1.Show ();
  299. child2 = new Form ();
  300. child2.Name = "child2";
  301. child2.MdiParent = main;
  302. child2.WindowState = FormWindowState.Maximized;
  303. Assert.AreEqual (FormWindowState.Maximized, child1.WindowState, "#1");
  304. Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#2");
  305. child2.Show();
  306. Assert.AreEqual (FormWindowState.Normal, child1.WindowState, "#3");
  307. Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#4");
  308. child1.Activate ();
  309. Assert.AreEqual (FormWindowState.Maximized, child1.WindowState, "#5");
  310. Assert.AreEqual (FormWindowState.Normal, child2.WindowState, "#6");
  311. } finally {
  312. child2.Dispose ();
  313. child1.Dispose ();
  314. main.Dispose ();
  315. main.Close();
  316. }
  317. }
  318. [Test]
  319. public void MdiChild_WindowState6 ()
  320. {
  321. Form main = null, child1 = null, child2 = null;
  322. try {
  323. main = new Form ();
  324. main.Name = "main";
  325. main.IsMdiContainer = true;
  326. main.Show ();
  327. child1 = new Form ();
  328. child1.Name = "child1";
  329. child1.MdiParent = main;
  330. child1.WindowState = FormWindowState.Minimized;
  331. child1.Show ();
  332. child2 = new Form ();
  333. child2.Name = "child2";
  334. child2.MdiParent = main;
  335. child2.WindowState = FormWindowState.Maximized;
  336. Assert.AreEqual (FormWindowState.Minimized, child1.WindowState, "#1");
  337. Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#2");
  338. child2.Show();
  339. Assert.AreEqual (FormWindowState.Minimized, child1.WindowState, "#3");
  340. Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#4");
  341. child1.Activate ();
  342. Assert.AreEqual (FormWindowState.Maximized, child1.WindowState, "#5");
  343. Assert.AreEqual (FormWindowState.Normal, child2.WindowState, "#6");
  344. child2.Activate ();
  345. Assert.AreEqual (FormWindowState.Minimized, child1.WindowState, "#7");
  346. Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#8");
  347. } finally {
  348. child2.Dispose ();
  349. child1.Dispose ();
  350. main.Dispose ();
  351. main.Close();
  352. }
  353. }
  354. }
  355. }