2 // MdiFormTest.cs: Test cases for MDI Forms.
5 // Rolf Bjarne Kvinge (RKvinge@novell.com)
7 // (C) 2006 Novell, Inc. (http://www.novell.com)
12 using System.Reflection;
13 using System.Windows.Forms;
14 using System.ComponentModel;
15 using NUnit.Framework;
16 using CategoryAttribute = NUnit.Framework.CategoryAttribute;
17 using System.Threading;
19 namespace MonoTests.System.Windows.Forms
22 public class MdiFormTest : TestHelper
30 protected override void TearDown ()
47 // No attribute here since this is supposed to be called from
48 // each test directly, not by nunit.
49 void SetUp (bool only_create, bool only_text)
51 SetUp (only_create, only_text, false);
54 // No attribute here since this is supposed to be called from
55 // each test directly, not by nunit.
56 public void SetUp (bool only_create, bool only_text, bool set_parent)
68 main.Text = main.Name = "main";
69 main.ShowInTaskbar = false;
70 child1.Text = child1.Name = "child1";
71 child2.Text = child2.Name = "child2";
72 child3.Text = child3.Name = "child3";
77 main.IsMdiContainer = true;
80 child1.MdiParent = main;
81 child2.MdiParent = main;
82 child3.MdiParent = main;
87 public void DeactivatedEventTest ()
89 using (Form f = new Form ()) {
90 Form c1 = new Form ();
91 Form c2 = new Form ();
92 EventLogger log1 = new EventLogger (c1);
93 EventLogger log2 = new EventLogger (c2);
95 f.IsMdiContainer = true;
96 f.ShowInTaskbar = false;
97 c2.MdiParent = c1.MdiParent = f;
101 Assert.AreEqual (0, log1.CountEvents ("Deactivate"), "#A1");
102 Assert.AreEqual (0, log2.CountEvents ("Deactivate"), "#A2");
105 Assert.AreEqual (1, log1.CountEvents ("Deactivate"), "#B1");
106 Assert.AreEqual (0, log2.CountEvents ("Deactivate"), "#B2");
110 Assert.AreEqual (1, log1.CountEvents ("Deactivate"), "#C1");
111 Assert.AreEqual (0, log2.CountEvents ("Deactivate"), "#C2");
114 Assert.AreEqual (1, log1.CountEvents ("Deactivate"), "#D1");
115 Assert.AreEqual (1, log2.CountEvents ("Deactivate"), "#D2");
118 Assert.AreEqual (1, log1.CountEvents ("Deactivate"), "#E1");
119 Assert.AreEqual (1, log2.CountEvents ("Deactivate"), "#E2");
122 Assert.AreEqual (2, log1.CountEvents ("Deactivate"), "#F1");
123 Assert.AreEqual (1, log2.CountEvents ("Deactivate"), "#F2");
126 Assert.AreEqual (2, log1.CountEvents ("Deactivate"), "#G1");
127 Assert.AreEqual (2, log2.CountEvents ("Deactivate"), "#G2");
132 public void ActivatedEventTest ()
134 using (Form f = new Form ()) {
135 Form c1 = new Form ();
136 Form c2 = new Form ();
137 EventLogger log1 = new EventLogger (c1);
138 EventLogger log2 = new EventLogger (c2);
140 f.IsMdiContainer = true;
141 f.ShowInTaskbar = false;
142 c2.MdiParent = c1.MdiParent = f;
146 Assert.AreEqual (0, log1.CountEvents ("Activated"), "#A1");
147 Assert.AreEqual (0, log2.CountEvents ("Activated"), "#A2");
150 Assert.AreEqual (1, log1.CountEvents ("Activated"), "#B1");
151 Assert.AreEqual (1, log2.CountEvents ("Activated"), "#B2");
155 Assert.AreEqual (1, log1.CountEvents ("Activated"), "#C1");
156 Assert.AreEqual (1, log2.CountEvents ("Activated"), "#C2");
159 Assert.AreEqual (2, log1.CountEvents ("Activated"), "#D1");
160 Assert.AreEqual (1, log2.CountEvents ("Activated"), "#D2");
163 Assert.AreEqual (2, log1.CountEvents ("Activated"), "#E1");
164 Assert.AreEqual (1, log2.CountEvents ("Activated"), "#E2");
167 Assert.AreEqual (2, log1.CountEvents ("Activated"), "#F1");
168 Assert.AreEqual (2, log2.CountEvents ("Activated"), "#F2");
171 Assert.AreEqual (3, log1.CountEvents ("Activated"), "#G1");
172 Assert.AreEqual (2, log2.CountEvents ("Activated"), "#G2");
177 public void ActiveControlTest ()
179 SetUp (false, false, true);
183 Assert.IsNull (main.ActiveControl, "#01");
184 child1.Visible = true;
185 Assert.AreSame (child1, main.ActiveControl, "#02");
186 child2.Visible = true;
187 Assert.AreSame (child2, main.ActiveControl, "#03");
188 child3.Visible = true;
189 Assert.AreSame (child3, main.ActiveControl, "#04");
194 public void SelectNextControlTest ()
196 SetUp (false, false, true);
200 child1.Visible = true;
201 child2.Visible = true;
202 child3.Visible = true;
204 main.SelectNextControl (main.ActiveControl, true, false, true, true);
205 Assert.AreSame (child1, main.ActiveControl, "#01");
206 main.SelectNextControl (main.ActiveControl, true, false, true, true);
207 Assert.AreSame (child2, main.ActiveControl, "#02");
208 main.SelectNextControl (main.ActiveControl, true, false, true, true);
209 Assert.AreSame (child3, main.ActiveControl, "#03");
215 public void SelectPreviousControlTest ()
217 SetUp (false, false, true);
221 child1.Visible = true;
222 child2.Visible = true;
223 child3.Visible = true;
225 main.SelectNextControl (main.ActiveControl, false, false, true, true);
226 Assert.AreSame (child2, main.ActiveControl, "#01");
227 main.SelectNextControl (main.ActiveControl, false, false, true, true);
228 Assert.AreSame (child1, main.ActiveControl, "#02");
229 main.SelectNextControl (main.ActiveControl, false, false, true, true);
230 Assert.AreSame (child3, main.ActiveControl, "#03");
236 public class CloseTest
238 class ChildForm : Form
242 Closed += new EventHandler (ChildForm_Closed);
243 Closing += new CancelEventHandler (ChildForm_Closing);
244 FormClosed += new FormClosedEventHandler (ChildForm_FormClosed);
245 FormClosing += new FormClosingEventHandler (ChildForm_FormClosing);
247 void ChildForm_FormClosing (object sender, FormClosingEventArgs e)
249 Assert.IsNotNull (MdiParent, "ChildForm_FormClosing");
252 void ChildForm_FormClosed (object sender, FormClosedEventArgs e)
254 Assert.IsNotNull (MdiParent, "ChildForm_FormClosed");
256 void ChildForm_Closing (object sender, CancelEventArgs e)
258 Assert.IsNotNull (MdiParent, "ChildForm_Closing");
261 void ChildForm_Closed (object sender, EventArgs e)
263 Assert.IsNotNull (MdiParent, "ChildForm_Closed");
266 protected override void OnClosed (EventArgs e)
268 Assert.IsNotNull (MdiParent, "OnClosed 1");
270 Assert.IsNotNull (MdiParent, "OnClosed 2");
273 protected override void OnClosing (CancelEventArgs e)
275 Assert.IsNotNull (MdiParent, "OnClosing 1");
277 Assert.IsNotNull (MdiParent, "OnClosing 2");
282 public void Test () {
283 using (Form main = new Form ()) {
284 main.IsMdiContainer = true;
285 main.ShowInTaskbar = false;
288 ChildForm child = new ChildForm ();
289 EventLogger log = new EventLogger (child);
290 child.MdiParent = main;
291 child.Visible = true;
294 Assert.AreEqual (1, log.CountEvents ("Closed"), "#01");
295 Assert.AreEqual (1, log.CountEvents ("Closing"), "#02");
296 Assert.IsNull (child.MdiParent, "#03");
297 Assert.AreEqual (0, main.MdiChildren.Length, "#04");
298 Assert.AreEqual (false, child.IsMdiChild, "#05");
303 [Category ("NotWorking")]
304 public void StartLocationTest ()
306 SetUp (false, false);
308 child1.MdiParent = main;
309 child2.MdiParent = main;
311 child1.Visible = true;
312 child2.Visible = true;
316 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
317 Assert.AreEqual (true, "{X=0,Y=0}" != child2.Location.ToString (), "#2");
323 public void StartLocationTest2 ()
325 SetUp (false, false);
327 child1.MdiParent = main;
328 child2.MdiParent = main;
330 child1.Visible = true;
331 child2.Visible = true;
332 child2.StartPosition = FormStartPosition.Manual;
333 child2.Location = new Point(23, 34);
337 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
338 Assert.AreEqual ("{X=23,Y=34}",child2.Location.ToString (), "#2");
344 public void NewFormShouldAlsoBeMaximized ()
346 Form parent = new Form ();
348 Form child1 = new Form ();
349 Form child2 = new Form ();
351 parent.ShowInTaskbar = false;
352 parent.IsMdiContainer = true;
353 parent.ClientSize = new Size (300, 300);
357 child1.MdiParent = parent;
360 child1.WindowState = FormWindowState.Maximized;
362 child2.MdiParent = parent;
363 child2.ClientSize = new Size (100, 100);
366 Assert.IsTrue (child2.Width > 200, "Width should be maximized");
367 Assert.IsTrue (child2.Height > 200, "Height should be maximized");
373 public void RestoreWithMainMenuStrip ()
375 Form parent = new Form ();
377 Form child1 = new Form ();
379 parent.ShowInTaskbar = false;
380 parent.IsMdiContainer = true;
381 parent.ClientSize = new Size (500, 500);
383 MenuStrip ms = new MenuStrip ();
384 ms.Items.Add (new ToolStripMenuItem ("main", null, new ToolStripMenuItem ("item1")));
385 parent.Controls.Add (ms);
386 parent.MainMenuStrip = ms;
390 child1.MdiParent = parent;
393 Size s = child1.Size;
395 child1.WindowState = FormWindowState.Maximized;
396 child1.WindowState = FormWindowState.Normal;
398 Assert.AreEqual (s, child1.Size, "A1");
403 /* These tests are all failing on WinXP with XP Theme.
404 * offset seems to be 22,22 normally, and 22,29 with XP theme.
405 * Find a way to test this reliably.
407 [Category("NotWorking")]
409 public void StartLocationTest1 ()
411 SetUp (false, false);
413 child1.MdiParent = main;
414 child2.MdiParent = main;
416 child1.Visible = true;
417 child2.Visible = true;
421 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
422 Assert.AreEqual ("{X=22,Y=22}", child2.Location.ToString (), "#2");
427 [Category("NotWorking")]
429 public void StartLocationTest2 ()
431 SetUp (false, false);
433 child1.MdiParent = main;
434 child2.MdiParent = main;
436 child1.StartPosition = FormStartPosition.Manual;
438 child1.Visible = true;
439 child2.Visible = true;
443 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
444 Assert.AreEqual ("{X=22,Y=22}", child2.Location.ToString (), "#2");
450 [Category("NotWorking")]
452 public void StartLocationTest3 ()
454 SetUp (false, false);
456 child1.MdiParent = main;
457 child2.MdiParent = main;
459 child2.StartPosition = FormStartPosition.Manual;
461 child1.Visible = true;
462 child2.Visible = true;
466 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
467 Assert.AreEqual ("{X=0,Y=0}", child2.Location.ToString (), "#2");
472 [Category("NotWorking")]
474 public void StartLocationTest4 ()
476 SetUp (false, false);
478 child1.MdiParent = main;
479 child2.MdiParent = main;
481 child1.StartPosition = FormStartPosition.Manual;
482 child2.StartPosition = FormStartPosition.Manual;
484 child1.Visible = true;
485 child2.Visible = true;
489 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
490 Assert.AreEqual ("{X=0,Y=0}", child2.Location.ToString (), "#2");
495 [Category("NotWorking")]
497 public void StartLocationTest5 ()
499 SetUp (false, false);
501 child1.MdiParent = main;
502 child2.MdiParent = main;
503 child3.MdiParent = main;
505 child2.StartPosition = FormStartPosition.Manual;
507 child1.Visible = true;
508 child2.Visible = true;
509 child3.Visible = true;
513 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
514 Assert.AreEqual ("{X=0,Y=0}", child2.Location.ToString (), "#2");
515 Assert.AreEqual ("{X=44,Y=44}", child3.Location.ToString (), "#3");
520 [Category("NotWorking")]
522 public void StartLocationTest6 ()
524 SetUp (false, false);
526 child1.MdiParent = main;
527 child2.MdiParent = main;
528 child3.MdiParent = main;
530 child2.StartPosition = FormStartPosition.CenterParent;
532 child1.Visible = true;
533 child2.Visible = true;
534 child3.Visible = true;
538 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
539 Assert.AreEqual ("{X=22,Y=22}", child2.Location.ToString (), "#2");
540 Assert.AreEqual ("{X=44,Y=44}", child3.Location.ToString (), "#3");
545 [Category("NotWorking")]
547 public void StartLocationTest7 ()
549 SetUp (false, false);
551 child1.MdiParent = main;
552 child2.MdiParent = main;
553 child3.MdiParent = main;
555 child2.StartPosition = FormStartPosition.CenterScreen;
557 child1.Visible = true;
558 child2.Visible = true;
559 child3.Visible = true;
563 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
564 Assert.AreEqual ("{X=0,Y=0}", child2.Location.ToString (), "#2");
565 Assert.AreEqual ("{X=44,Y=44}", child3.Location.ToString (), "#3");
570 [Category("NotWorking")]
572 public void StartLocationTest8 ()
574 SetUp (false, false);
576 child1.MdiParent = main;
577 child2.MdiParent = main;
578 child3.MdiParent = main;
580 child2.StartPosition = FormStartPosition.WindowsDefaultBounds;
582 child1.Visible = true;
583 child2.Visible = true;
584 child3.Visible = true;
588 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
589 Assert.AreEqual ("{X=22,Y=22}", child2.Location.ToString (), "#2");
590 Assert.AreEqual ("{X=44,Y=44}", child3.Location.ToString (), "#3");
595 [Category("NotWorking")]
597 public void StartLocationTest9 ()
599 SetUp (false, false);
601 child1.MdiParent = main;
602 child2.MdiParent = main;
603 child3.MdiParent = main;
605 child2.StartPosition = FormStartPosition.WindowsDefaultLocation;
607 child1.Visible = true;
608 child2.Visible = true;
609 child3.Visible = true;
613 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
614 Assert.AreEqual ("{X=22,Y=22}", child2.Location.ToString (), "#2");
615 Assert.AreEqual ("{X=44,Y=44}", child3.Location.ToString (), "#3");
620 [Category("NotWorking")]
622 public void StartLocationTest10 ()
624 SetUp (false, false);
626 child1.MdiParent = main;
627 child2.MdiParent = main;
628 child3.MdiParent = main;
630 child2.StartPosition = FormStartPosition.Manual;
631 child2.Location = new Point (123, 123);
633 child1.Visible = true;
634 child2.Visible = true;
635 child3.Visible = true;
639 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
640 Assert.AreEqual ("{X=123,Y=123}", child2.Location.ToString (), "#2");
641 Assert.AreEqual ("{X=44,Y=44}", child3.Location.ToString (), "#3");
646 [Category("NotWorking")]
648 public void StartLocationTest11 ()
650 SetUp (false, false);
652 child1.MdiParent = main;
653 child2.MdiParent = main;
654 child3.MdiParent = main;
656 child2.Location = new Point (123, 123);
658 Assert.AreEqual ("{X=123,Y=123}", child2.Location.ToString (), "#0");
660 child1.Visible = true;
661 child2.Visible = true;
662 child3.Visible = true;
664 Assert.AreEqual ("{X=123,Y=123}", child2.Location.ToString (), "#0");
668 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
669 Assert.AreEqual ("{X=22,Y=22}", child2.Location.ToString (), "#2");
670 Assert.AreEqual ("{X=44,Y=44}", child3.Location.ToString (), "#3");
675 [Category("NotWorking")]
677 public void StartLocationTest12 ()
679 SetUp (false, false);
681 child1.MdiParent = main;
682 child2.MdiParent = main;
683 child3.MdiParent = main;
685 child1.Visible = true;
686 //child2.Visible = true;
687 child3.Visible = true;
691 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
692 Assert.AreEqual ("{X=0,Y=0}", child2.Location.ToString (), "#2");
693 Assert.AreEqual ("{X=22,Y=22}", child3.Location.ToString (), "#3");
695 child2.Visible = true;
696 Assert.AreEqual ("{X=44,Y=44}", child2.Location.ToString (), "#4");
698 child1.Visible = false;
699 child1.Visible = true;
700 Assert.AreEqual ("{X=66,Y=66}", child1.Location.ToString (), "#1");
705 [Category("NotWorking")]
707 public void StartLocationTest13 ()
709 SetUp (false, false);
711 child1.MdiParent = main;
712 child2.MdiParent = main;
713 child3.MdiParent = main;
715 child1.Visible = true;
716 //child2.Visible = true;
717 child3.Visible = true;
721 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
722 Assert.AreEqual ("{X=0,Y=0}", child2.Location.ToString (), "#2");
723 Assert.AreEqual ("{X=22,Y=22}", child3.Location.ToString (), "#3");
725 child2.Visible = true;
726 Assert.AreEqual ("{X=44,Y=44}", child2.Location.ToString (), "#4");
728 child1.Visible = false;
729 child1.Visible = true;
730 Assert.AreEqual ("{X=66,Y=66}", child1.Location.ToString (), "#5");
732 child3.Visible = true;
733 Assert.AreEqual ("{X=22,Y=22}", child3.Location.ToString (), "#6");
735 // MDI Child size does not seem to affect layout.
737 child2.Visible = false;
738 child2.Size = new Size (500, 500);
739 child2.Visible = true;
740 Assert.AreEqual ("{X=88,Y=88}", child2.Location.ToString (), "#7");
742 child2.Visible = false;
743 child2.Visible = true;
744 Assert.AreEqual ("{X=0,Y=0}", child2.Location.ToString (), "#8");
746 child2.Visible = false;
747 child2.Visible = true;
748 Assert.AreEqual ("{X=22,Y=22}", child2.Location.ToString (), "#9");
751 child2.Visible = false;
752 child2.Size = new Size (5, 5);
753 child2.Visible = true;
754 Assert.AreEqual ("{X=44,Y=44}", child2.Location.ToString (), "#10");
756 child2.Visible = false;
757 child2.Visible = true;
758 Assert.AreEqual ("{X=66,Y=66}", child2.Location.ToString (), "#11");
760 child2.Visible = false;
761 child2.Visible = true;
762 Assert.AreEqual ("{X=88,Y=88}", child2.Location.ToString (), "#12");
764 child2.Visible = false;
765 child2.Visible = true;
766 Assert.AreEqual ("{X=0,Y=0}", child2.Location.ToString (), "#13");
771 [Category("NotWorking")]
773 public void StartLocationTest14 ()
775 SetUp (false, false);
777 child1.MdiParent = main;
778 child2.MdiParent = main;
779 child3.MdiParent = main;
781 child2.StartPosition = FormStartPosition.Manual;
782 child2.Location = new Point (44, 44);
783 child1.Visible = true;
784 child2.Visible = true;
785 child3.Visible = true;
789 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
790 Assert.AreEqual ("{X=44,Y=44}", child2.Location.ToString (), "#2");
791 Assert.AreEqual ("{X=44,Y=44}", child3.Location.ToString (), "#3");
793 child1.Visible = false;
794 child1.Visible = true;
795 Assert.AreEqual ("{X=66,Y=66}", child1.Location.ToString (), "#4");
800 [Category("NotWorking")]
802 public void StartLocationTest15 ()
804 SetUp (false, false);
806 child1.MdiParent = main;
807 child2.MdiParent = main;
808 child3.MdiParent = main;
812 child1.Visible = true;
813 child2.Visible = true;
814 child2.Location = new Point (22, 44);
815 child3.Visible = true;
817 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
818 Assert.AreEqual ("{X=22,Y=44}", child2.Location.ToString (), "#2");
819 Assert.AreEqual ("{X=44,Y=44}", child3.Location.ToString (), "#3");
821 child1.Visible = false;
822 child1.Visible = true;
823 Assert.AreEqual ("{X=66,Y=66}", child1.Location.ToString (), "#4");
828 [Category("NotWorking")]
830 public void StartLocationTest16 ()
832 SetUp (false, false);
834 child1.MdiParent = main;
835 child2.MdiParent = main;
836 child3.MdiParent = main;
838 child1.Visible = true;
839 child2.Visible = true;
840 child2.Location = new Point (22, 44);
841 child3.Visible = true;
845 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
846 Assert.AreEqual ("{X=22,Y=22}", child2.Location.ToString (), "#2");
847 Assert.AreEqual ("{X=44,Y=44}", child3.Location.ToString (), "#3");
849 child1.Visible = false;
850 child1.Visible = true;
851 Assert.AreEqual ("{X=66,Y=66}", child1.Location.ToString (), "#4");
856 [Category("NotWorking")]
858 public void StartLocationTest17 ()
860 SetUp (false, false);
862 child1.MdiParent = main;
863 child2.MdiParent = main;
864 child3.MdiParent = main;
866 child1.Visible = true;
867 child2.Visible = true;
871 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
872 Assert.AreEqual ("{X=22,Y=22}", child2.Location.ToString (), "#2");
873 Assert.AreEqual ("{X=0,Y=0}", child3.Location.ToString (), "#3");
875 child2.Visible = false;
876 child3.Visible = true;
878 Assert.AreEqual ("{X=44,Y=44}", child3.Location.ToString (), "#4");
883 [Category("NotWorking")]
885 public void StartLocationTest18 ()
887 SetUp (false, false);
889 child1.MdiParent = main;
890 child2.MdiParent = main;
891 child3.MdiParent = main;
893 child1.Visible = true;
894 child2.Visible = true;
898 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
899 Assert.AreEqual ("{X=22,Y=22}", child2.Location.ToString (), "#2");
900 Assert.AreEqual ("{X=0,Y=0}", child3.Location.ToString (), "#3");
902 child2.Visible = false;
907 child3.Visible = true;
909 Assert.AreEqual ("{X=44,Y=44}", child3.Location.ToString (), "#4");
914 [Category("NotWorking")]
916 public void StartLocationTest19 ()
918 SetUp (false, false);
920 child1.MdiParent = main;
921 child2.MdiParent = main;
922 child3.MdiParent = main;
924 child1.Visible = true;
925 child2.Visible = true;
926 child3.Visible = true;
928 child1.StartPosition = FormStartPosition.Manual;
929 child2.StartPosition = FormStartPosition.Manual;
930 child3.StartPosition = FormStartPosition.Manual;
934 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
935 Assert.AreEqual ("{X=0,Y=0}", child2.Location.ToString (), "#2");
936 Assert.AreEqual ("{X=0,Y=0}", child3.Location.ToString (), "#3");
942 public void StartSizeTest1 ()
944 SetUp (false, false);
946 child1.MdiParent = main;
947 child2.MdiParent = main;
948 child3.MdiParent = main;
952 Assert.AreEqual ("{Width=300, Height=300}", main.Size.ToString (), "#1");
953 Assert.AreEqual ("{Width=300, Height=300}", child1.Size.ToString (), "#2");
954 Assert.AreEqual ("{Width=300, Height=300}", child2.Size.ToString (), "#3");
955 Assert.AreEqual ("{Width=300, Height=300}", child3.Size.ToString (), "#4");
957 child1.Visible = true;
958 child2.Visible = true;
959 child3.Visible = true;
961 Assert.AreEqual ("{Width=300, Height=300}", main.Size.ToString (), "#1");
962 Assert.AreEqual ("{Width=300, Height=300}", child1.Size.ToString (), "#2");
963 Assert.AreEqual ("{Width=300, Height=300}", child2.Size.ToString (), "#3");
964 Assert.AreEqual ("{Width=300, Height=300}", child3.Size.ToString (), "#4");
970 public void IsMdiContainerTest ()
975 main.Visible = false;
977 main.IsMdiContainer = true;
979 child1.MdiParent = main;
981 main.IsMdiContainer = false;
983 Assert.AreSame (null, main.ActiveMdiChild, "#1");
986 Assert.AreSame (null, main.ActiveMdiChild, "#2");
988 Assert.AreSame (null, main.MdiParent, "#3");
993 [Category("NotWorking")]
995 [ExpectedException(typeof(ArgumentException), ExpectedMessage = "Cannot add a top level control to a control.")]
996 public void AddToControlsTest ()
1000 main.Visible = true;
1001 main.Visible = false;
1003 main.Controls.Add (child1);
1011 Form main = null, child1 = null, child2 = null, child3 = null;
1014 main.IsMdiContainer = true;
1016 main.Text = main.Name;
1019 Assert.AreEqual ("main", main.Text, "#1");
1021 child1 = new Form ();
1022 child1.Name = "child1";
1023 child1.MdiParent = main;
1024 child1.Text = child1.Name;
1025 child1.WindowState = FormWindowState.Maximized;
1028 Assert.AreEqual ("main - [child1]", main.Text, "#2");
1030 child2 = new Form ();
1031 child2.Name = "child2";
1032 child1.MdiParent = main;
1033 child2.Text = string.Empty;
1034 child2.WindowState = FormWindowState.Maximized;
1037 Assert.AreEqual ("main - [child1]", main.Text, "#3");
1040 Assert.AreEqual ("main - [child1]", main.Text, "#4");
1042 child1.WindowState = FormWindowState.Minimized;
1043 Assert.AreEqual ("main", main.Text, "#5");
1046 Assert.AreEqual ("main", main.Text, "#6");
1048 child2.WindowState = FormWindowState.Maximized;
1049 Assert.AreEqual ("main", main.Text, "#7");
1051 child3 = new Form ();
1052 child3.Name = "child3";
1053 child3.MdiParent = main;
1054 child3.Text = child3.Name;
1055 child3.WindowState = FormWindowState.Maximized;
1058 Assert.AreEqual ("main - [child3]", main.Text, "#8");
1059 child3.WindowState = FormWindowState.Normal;
1060 Assert.AreEqual ("main", main.Text, "#9");
1062 main.Text = string.Empty;
1063 child3.WindowState = FormWindowState.Maximized;
1064 Assert.AreEqual (" - [child3]", main.Text, "#10");
1066 child3.Text = string.Empty;
1067 Assert.AreEqual (string.Empty, main.Text, "#11");
1078 public void Text_MdiContainer ()
1080 Form main = new Form ();
1081 main.ShowInTaskbar = false;
1083 main.IsMdiContainer = true;
1086 Assert.AreEqual ("main", main.Text, "#1");
1088 Form child = new Form ();
1089 child.Name = "child";
1090 child.MdiParent = main;
1091 child.Text = child.Name;
1092 child.WindowState = FormWindowState.Maximized;
1095 Assert.AreEqual ("main - [child]", main.Text, "#2");
1101 public void Text_ChildClose ()
1103 Form main = new Form ();
1104 main.ShowInTaskbar = false;
1105 main.IsMdiContainer = true;
1109 Assert.AreEqual ("main", main.Text, "#1");
1111 Form child = new Form ();
1112 child.Name = "child";
1113 child.MdiParent = main;
1114 child.Text = child.Name;
1115 child.WindowState = FormWindowState.Maximized;
1118 Assert.AreEqual ("main - [child]", main.Text, "#2");
1121 Assert.AreEqual ("main", main.Text, "#3");
1127 public void Text_Maximized ()
1129 Form main = new Form ();
1130 main.IsMdiContainer = true;
1132 main.Text = main.Name;
1135 Assert.AreEqual ("main", main.Text, "#1");
1137 Form child1 = new Form ();
1138 child1.Name = "child1";
1139 child1.MdiParent = main;
1140 child1.Text = child1.Name;
1141 child1.WindowState = FormWindowState.Maximized;
1144 Assert.AreEqual ("main - [child1]", main.Text, "#2");
1146 Form child2 = new Form ();
1147 child2.Name = "child2";
1148 child2.MdiParent = main;
1149 child2.Text = child2.Name;
1150 child2.WindowState = FormWindowState.Maximized;
1153 Assert.AreEqual ("main - [child2]", main.Text, "#3");
1155 child1.WindowState = FormWindowState.Maximized;
1157 Assert.AreEqual ("main - [child1]", main.Text, "#4");
1163 [Category ("NotWorking")]
1164 public void TopLevelTest ()
1169 main.IsMdiContainer = true;
1172 child1 = new Form ();
1173 child1.Name = "child1";
1174 Assert.AreEqual (true, child1.TopLevel, "#01");
1175 child1.MdiParent = main;
1176 Assert.AreEqual (false, child1.TopLevel, "#02");
1182 public void ActiveMdiChild ()
1184 Form main, child1, child2;
1187 main.IsMdiContainer = true;
1190 child1 = new Form ();
1191 child1.Name = "child1";
1192 child1.MdiParent = main;
1193 child1.WindowState = FormWindowState.Maximized;
1196 child2 = new Form ();
1197 child2.Name = "child2";
1198 child2.MdiParent = main;
1201 Assert.IsNull (main.ActiveMdiChild, "#1");
1204 Assert.AreSame (child2, main.ActiveMdiChild, "#2");
1206 child1.WindowState = FormWindowState.Maximized;
1207 Assert.AreSame (child1, main.ActiveMdiChild, "#3");
1209 child2.WindowState = FormWindowState.Maximized;
1210 Assert.AreSame (child2, main.ActiveMdiChild, "#4");
1212 main.Visible = false;
1213 Assert.IsNull (main.ActiveMdiChild, "#5");
1222 public void ActiveMdiChild2 ()
1224 SetUp (false, false);
1226 child1.MdiParent = main;
1227 child2.MdiParent = main;
1234 child1.Visible = false;
1236 Assert.AreSame (child2, main.ActiveMdiChild, "#1");
1242 public void ActiveMdiChild3 ()
1244 SetUp (false, false);
1246 child1.MdiParent = main;
1247 child2.MdiParent = main;
1249 main.Visible = true;
1250 main.Visible = false;
1252 Assert.AreSame (null, main.ActiveMdiChild, "#1");
1253 //child2.Visible = true; This will cause StackOverflowException on MS.
1254 main.Visible = true;
1255 Assert.AreSame (null, main.ActiveMdiChild, "#2");
1260 public void MdiChild_WindowState1 ()
1262 Form main = null, child1 = null, child2 = null;
1266 main.IsMdiContainer = true;
1269 child1 = new Form ();
1270 child1.Name = "child1";
1271 child1.Text = "child1";
1272 child1.MdiParent = main;
1273 child1.WindowState = FormWindowState.Maximized;
1276 child2 = new Form ();
1277 child2.Name = "child2";
1278 child2.Text = "child2";
1279 child2.MdiParent = main;
1282 Assert.AreEqual (FormWindowState.Maximized, child1.WindowState, "#1");
1283 Assert.AreEqual (FormWindowState.Normal, child2.WindowState, "#2");
1285 Assert.AreEqual (FormWindowState.Normal, child1.WindowState, "#3");
1286 Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#4");
1296 public void MdiChild_WindowState2 ()
1298 Form main = null, child1 = null, child2 = null;
1303 main.IsMdiContainer = true;
1306 child1 = new Form ();
1307 child1.Name = "child1";
1308 child1.MdiParent = main;
1309 child1.WindowState = FormWindowState.Maximized;
1312 child2 = new Form ();
1313 child2.Name = "child2";
1314 child2.MdiParent = main;
1318 Assert.AreEqual (FormWindowState.Normal, child1.WindowState, "#1");
1319 Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#2");
1330 public void MdiChild_WindowState3 ()
1332 Form main = null, child1 = null, child2 = null;
1335 main.IsMdiContainer = true;
1338 child1 = new Form ();
1339 child1.MdiParent = main;
1342 child2 = new Form ();
1343 child2.MdiParent = main;
1344 child2.WindowState = FormWindowState.Maximized;
1347 Assert.AreEqual (FormWindowState.Normal, child1.WindowState, "#1");
1348 Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#2");
1359 public void MdiChild_WindowState4 ()
1361 Form main = null, child1 = null, child2 = null;
1364 main.IsMdiContainer = true;
1367 child1 = new Form ();
1368 child1.MdiParent = main;
1369 child1.WindowState = FormWindowState.Maximized;
1372 child2 = new Form ();
1373 child2.MdiParent = main;
1374 child2.WindowState = FormWindowState.Maximized;
1376 Assert.AreEqual (FormWindowState.Maximized, child1.WindowState, "#1");
1377 Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#2");
1381 Assert.AreEqual (FormWindowState.Normal, child1.WindowState, "#3");
1382 Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#4");
1384 child2.WindowState = FormWindowState.Normal;
1386 Assert.AreEqual (FormWindowState.Normal, child1.WindowState, "#5");
1387 Assert.AreEqual (FormWindowState.Normal, child2.WindowState, "#6");
1397 public void MdiChild_WindowState5 ()
1399 Form main = null, child1 = null, child2 = null;
1403 main.IsMdiContainer = true;
1406 child1 = new Form ();
1407 child1.Name = "child1";
1408 child1.MdiParent = main;
1409 child1.WindowState = FormWindowState.Maximized;
1412 child2 = new Form ();
1413 child2.Name = "child2";
1414 child2.MdiParent = main;
1415 child2.WindowState = FormWindowState.Maximized;
1417 Assert.AreEqual (FormWindowState.Maximized, child1.WindowState, "#1");
1418 Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#2");
1422 Assert.AreEqual (FormWindowState.Normal, child1.WindowState, "#3");
1423 Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#4");
1427 Assert.AreEqual (FormWindowState.Maximized, child1.WindowState, "#5");
1428 Assert.AreEqual (FormWindowState.Normal, child2.WindowState, "#6");
1438 public void MdiChild_WindowState6 ()
1440 Form main = null, child1 = null, child2 = null;
1445 main.IsMdiContainer = true;
1448 child1 = new Form ();
1449 child1.Name = "child1";
1450 child1.MdiParent = main;
1451 child1.WindowState = FormWindowState.Minimized;
1454 child2 = new Form ();
1455 child2.Name = "child2";
1456 child2.MdiParent = main;
1457 child2.WindowState = FormWindowState.Maximized;
1459 Assert.AreEqual (FormWindowState.Minimized, child1.WindowState, "#1");
1460 Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#2");
1464 Assert.AreEqual (FormWindowState.Minimized, child1.WindowState, "#3");
1465 Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#4");
1469 Assert.AreEqual (FormWindowState.Maximized, child1.WindowState, "#5");
1470 Assert.AreEqual (FormWindowState.Normal, child2.WindowState, "#6");
1474 Assert.AreEqual (FormWindowState.Minimized, child1.WindowState, "#7");
1475 Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#8");
1485 public void ChangeClientSizeTest ()
1487 SetUp (false, false, false);
1488 child1.ClientSize = new Size (224, 37);
1489 child1.MdiParent = main;
1490 Assert.AreEqual ("{Width=224, Height=37}", child1.ClientSize.ToString (), "#01");
1492 Assert.AreEqual ("{Width=224, Height=37}", child1.ClientSize.ToString (), "#02");
1494 Assert.AreEqual ("{Width=224, Height=37}", child1.ClientSize.ToString (), "#03");
1497 private string events_fired;
1500 public void MdiClosingClosedEvent ()
1502 Form f = new Form ();
1503 f.IsMdiContainer = true;
1505 MdiChild mdi = new MdiChild ();
1506 mdi.can_close = false;
1509 f.Closing += new CancelEventHandler (f_Closing);
1510 f.Closed += new EventHandler (f_Closed);
1511 mdi.Closing += new CancelEventHandler (mdi_Closing);
1512 mdi.Closed += new EventHandler (mdi_Closed);
1514 f.FormClosing += new FormClosingEventHandler (f_FormClosing);
1515 f.FormClosed += new FormClosedEventHandler (f_FormClosed);
1516 mdi.FormClosing += new FormClosingEventHandler (mdi_FormClosing);
1517 mdi.FormClosed += new FormClosedEventHandler (mdi_FormClosed);
1522 events_fired = string.Empty;
1526 Assert.AreEqual ("Child.Closing: True, Child.FormClosing: True, Parent.Closing: True, Parent.FormClosing: True, ", events_fired, "A1-2.0");
1528 events_fired = string.Empty;
1529 mdi.can_close = true;
1532 Assert.AreEqual ("Child.Closing: False, Child.FormClosing: False, Parent.Closing: False, Parent.FormClosing: False, Child.Closed, Child.FormClosed, Parent.Closed, Parent.FormClosed, ", events_fired, "A2-2.0");
1537 void mdi_FormClosed (object sender, FormClosedEventArgs e)
1539 events_fired += "Child.FormClosed, ";
1542 void mdi_FormClosing (object sender, FormClosingEventArgs e)
1544 events_fired += string.Format ("Child.FormClosing: {0}, ", e.Cancel);
1547 void f_FormClosed (object sender, FormClosedEventArgs e)
1549 events_fired += "Parent.FormClosed, ";
1552 void f_FormClosing (object sender, FormClosingEventArgs e)
1554 events_fired += string.Format ("Parent.FormClosing: {0}, ", e.Cancel);
1557 void mdi_Closed (object sender, EventArgs e)
1559 events_fired += "Child.Closed, ";
1562 void mdi_Closing (object sender, CancelEventArgs e)
1564 events_fired += string.Format ("Child.Closing: {0}, ", e.Cancel);
1567 void f_Closed (object sender, EventArgs e)
1569 events_fired += "Parent.Closed, ";
1572 void f_Closing (object sender, CancelEventArgs e)
1574 events_fired += string.Format ("Parent.Closing: {0}, ", e.Cancel);
1577 private class MdiChild : Form
1579 public bool can_close = false;
1583 Closing += new CancelEventHandler (MdiChild_Closing);
1586 void MdiChild_Closing (object sender, CancelEventArgs e)
1588 e.Cancel = !can_close;