* Makefile.am: Build `docs` after `runtime`, so that it can depend
[mono.git] / mcs / class / Managed.Windows.Forms / Test / System.Windows.Forms / ControlEventTest.cs
index e44734c03d30a0342e51490740abd7ed0c9a916a..198f557e8927db49a245b5605a72827739b209b1 100644 (file)
@@ -8,7 +8,6 @@ using System.Threading;
 namespace MonoTests.System.Windows.Forms
 {
        [TestFixture]
-       [Ignore ("This test has to be completly reviewed")]
        public class EventClass
        {
                static bool eventhandled = false;
@@ -261,7 +260,39 @@ namespace MonoTests.System.Windows.Forms
                        c.Visible = true;
                        c.Height = 100;
                        Assert.AreEqual (true, eventhandled, "#D1");
+               }
+
+               int event_count;
+               int resize_event;
+               int size_changed_event;
+               int layout_event;
+
+               void resize (object sender, EventArgs e)
+               {
+                       resize_event = ++event_count;
+               }
+
+               void layout (object sender, LayoutEventArgs le)
+               {
+                       layout_event = ++event_count;
+               }
+
+               void size_changed (object sender, EventArgs e)
+               {
+                       size_changed_event = ++event_count;
+               }
 
+               [Test]
+               public void LayoutResizeTest ()
+               {
+                       Control c = new Control ();
+                       c.Layout += new LayoutEventHandler (layout);
+                       c.Resize += new EventHandler (resize);
+                       c.SizeChanged += new EventHandler (size_changed);
+                       c.Size = new Size (100, 100);
+                       Assert.AreEqual (1, layout_event, "1");
+                       Assert.AreEqual (2, resize_event, "2");
+                       Assert.AreEqual (3, size_changed_event, "3");
                }
        }
 
@@ -297,4 +328,81 @@ namespace MonoTests.System.Windows.Forms
                        Assert.AreEqual (true, eventhandled, "#F2");
                }
        }
+
+       [TestFixture]
+       public class ControlRefresh
+       {
+               [SetUp]
+               public void SetUp ()
+               {
+                       invalidated = 0;
+               }
+
+               [Test]
+               public void HandleNotCreated ()
+               {
+                       Control c = new Control ();
+                       c.Invalidated += new InvalidateEventHandler (Control_Invalidated);
+
+                       c.Visible = true;
+                       c.Refresh ();
+                       Assert.AreEqual (0, invalidated, "#1");
+
+                       c.Visible = false;
+                       c.Refresh ();
+                       Assert.AreEqual (0, invalidated, "#2");
+               }
+
+               [Test]
+               [Category ("NotWorking")]
+               public void Visible ()
+               {
+                       Control c = new Control ();
+                       c.Invalidated += new InvalidateEventHandler (Control_Invalidated);
+                       c.Visible = true;
+
+                       Form form = new Form ();
+                       form.ShowInTaskbar = false;
+                       form.Controls.Add (c);
+
+                       form.Show ();
+                       Assert.AreEqual (0, invalidated, "#1");
+
+                       c.Refresh ();
+                       Assert.AreEqual (1, invalidated, "#2");
+
+                       form.Refresh ();
+                       Assert.AreEqual (1, invalidated, "#3");
+               }
+
+               [Test]
+               public void NotVisible ()
+               {
+                       Control c = new Control ();
+                       c.Invalidated += new InvalidateEventHandler (Control_Invalidated);
+                       c.Visible = false;
+
+                       Form form = new Form ();
+                       form.ShowInTaskbar = false;
+                       form.Controls.Add (c);
+
+                       form.Show ();
+                       Assert.AreEqual (0, invalidated, "#1");
+
+                       c.Refresh ();
+                       Assert.AreEqual (0, invalidated, "#2");
+
+                       form.Refresh ();
+                       Assert.AreEqual (0, invalidated, "#3");
+                       
+                       form.Close ();
+               }
+
+               private void Control_Invalidated (object sender, InvalidateEventArgs e)
+               {
+                       invalidated++;
+               }
+
+               private int invalidated;
+       }
 }