2007-03-28 Igor Zelmanovich <igorz@mainsoft.com>
[mono.git] / mcs / class / Managed.Windows.Forms / Test / System.Windows.Forms / MdiFormTest.cs
index 01e9be69186f9e674cfa605f23e3fbdc0b2412df..eaa7d8973d06eb8115fd2fa6207614475cc42bb4 100644 (file)
@@ -11,8 +11,9 @@ using System;
 using System.Drawing;
 using System.Reflection;
 using System.Windows.Forms;
-
+using System.ComponentModel;
 using NUnit.Framework;
+using CategoryAttribute = NUnit.Framework.CategoryAttribute;
 
 namespace MonoTests.System.Windows.Forms
 {
@@ -139,6 +140,101 @@ namespace MonoTests.System.Windows.Forms
                        TearDown ();
                }
                
+               [TestFixture]
+               public class CloseTest
+               {
+                       class ChildForm : Form
+                       {
+                               public ChildForm ()
+                               {
+                                       Closed += new EventHandler (ChildForm_Closed);
+                                       Closing += new CancelEventHandler (ChildForm_Closing);
+#if NET_2_0                                    
+                                       FormClosed += new FormClosedEventHandler (ChildForm_FormClosed);
+                                       FormClosing += new FormClosingEventHandler (ChildForm_FormClosing);
+#endif
+                               }
+#if NET_2_0
+                               void ChildForm_FormClosing (object sender, FormClosingEventArgs e)
+                               {
+                                       Assert.IsNotNull (MdiParent, "ChildForm_FormClosing");
+                               }
+
+                               void ChildForm_FormClosed (object sender, FormClosedEventArgs e)
+                               {
+                                       Assert.IsNotNull (MdiParent, "ChildForm_FormClosed");
+                               }
+#endif
+                               void ChildForm_Closing (object sender, CancelEventArgs e)
+                               {
+                                       Assert.IsNotNull (MdiParent, "ChildForm_Closing");
+                               }
+
+                               void ChildForm_Closed (object sender, EventArgs e)
+                               {
+                                       Assert.IsNotNull (MdiParent, "ChildForm_Closed");
+                               }
+                       
+                               protected override void OnClosed (EventArgs e)
+                               {
+                                       Assert.IsNotNull (MdiParent, "OnClosed 1");
+                                       base.OnClosed (e);
+                                       Assert.IsNotNull (MdiParent, "OnClosed 2");
+                               }
+
+                               protected override void OnClosing (CancelEventArgs e)
+                               {
+                                       Assert.IsNotNull (MdiParent, "OnClosing 1");
+                                       base.OnClosing (e);
+                                       Assert.IsNotNull (MdiParent, "OnClosing 2");
+                               }
+                               
+                       }
+                       [Test]
+                       public void Test () {
+                               using (Form main = new Form ()) {
+                                       main.IsMdiContainer = true;
+                                       main.ShowInTaskbar = false;
+                                       main.Visible = true;
+
+                                       ChildForm child = new ChildForm ();
+                                       EventLogger log = new EventLogger (child);
+                                       child.MdiParent = main;
+                                       child.Visible = true;
+                                       child.Close ();
+                                       
+                                       Assert.AreEqual (1, log.CountEvents ("Closed"), "#01");
+                                       Assert.AreEqual (1, log.CountEvents ("Closing"), "#02");
+                                       Assert.IsNull (child.MdiParent, "#03");
+                                       Assert.AreEqual (0, main.MdiChildren.Length, "#04");            
+                                       Assert.AreEqual (false, child.IsMdiChild, "#05");               
+                               }
+                       }
+               }
+               [Test]
+               [Category ("NotWorking")]
+               public void StartLocationTest ()
+               {
+                       SetUp (false, false);
+
+                       child1.MdiParent = main;
+                       child2.MdiParent = main;
+
+                       child1.Visible = true;
+                       child2.Visible = true;
+
+                       main.Show ();
+
+                       Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1");
+                       Assert.AreEqual (true, "{X=0,Y=0}" != child2.Location.ToString (), "#2");
+
+                       TearDown ();
+               }
+               
+               /* These tests are all failing on WinXP with XP Theme. 
+                * offset seems to be 22,22 normally, and 22,29 with XP theme.
+                * Find a way to test this reliably.
+                * /
                [Category("NotWorking")]
                [Test]
                public void StartLocationTest1 ()
@@ -672,7 +768,7 @@ namespace MonoTests.System.Windows.Forms
 
                        TearDown ();
                }
-
+*/
                [Test]
                public void StartSizeTest1 ()
                {