2006-04-12 Peter Dennis Bartok <pbartok@novell.com>
[mono.git] / mcs / class / Managed.Windows.Forms / Test / System.Windows.Forms / LabelTest.cs
index 7e8ef7435f250b540be9024a8f702ea6cb0ef112..236ee26e3b0e6686c31788f3ea69cf4f3830adfd 100644 (file)
-//
-// Copyright (c) 2005 Novell, Inc.
-//
-// Authors:
-//      Hisham Mardam Bey (hisham.mardambey@gmail.com)
-//
-//
-                                                
-
-using System;
-using NUnit.Framework;
-using System.Windows.Forms;
-using System.Drawing;
-using System.Runtime.Remoting;
-
-namespace MonoTests.System.Windows.Forms
-{
-        [TestFixture]
-        [Ignore ("This is a work in progress.")]
-        public class LabelTest2 
-        {
-
-               [Test]
-               public void PubPropTest ()
-               {
-                       Label l = new Label ();
-
-                       // A
-                       Assert.AreEqual (false, l.AutoSize, "A1");
-                       l.AutoSize = true;
-                       Assert.AreEqual (true, l.AutoSize, "A2");
-                       l.AutoSize = false;
-                       Assert.AreEqual (false, l.AutoSize, "A3");
-
-                       // B
-                       Assert.AreEqual (null, l.BackgroundImage, "B1");
-                       l.BackgroundImage = Image.FromFile ("Test/System.Windows.Forms/bitmaps/a.png");
-                       Assert.IsNotNull (l.BackgroundImage, "B2");
-                       Bitmap bmp = (Bitmap)l.BackgroundImage;
-                       Assert.IsNotNull (bmp.GetPixel (0, 0), "B3");
-
-                       Assert.AreEqual (BorderStyle.None, l.BorderStyle, "B4");
-                       l.BorderStyle = BorderStyle.FixedSingle;
-                       Assert.AreEqual (BorderStyle.FixedSingle, l.BorderStyle, "B5");
-                       l.BorderStyle = BorderStyle.Fixed3D;
-                       Assert.AreEqual (BorderStyle.Fixed3D, l.BorderStyle, "B6");
-                       l.BorderStyle = BorderStyle.None;
-                       Assert.AreEqual (BorderStyle.None, l.BorderStyle, "B7");
-                       
-                       // C
-                       string name = l.CompanyName;
-                       if (!name.Equals("Mono Project, Novell, Inc.") && !name.Equals("Microsoft Corporation")) {
-                               Assert.Fail("CompanyName property does not match any accepted value - C1");
-                       }
-                       
-                       
-                       // F
-                       Assert.AreEqual (FlatStyle.Standard, l.FlatStyle, "F1");
-                       l.FlatStyle = FlatStyle.Flat;
-                       Assert.AreEqual (FlatStyle.Flat, l.FlatStyle, "F1");
-                       l.FlatStyle = FlatStyle.Popup;
-                       Assert.AreEqual (FlatStyle.Popup, l.FlatStyle, "F2");
-                       l.FlatStyle = FlatStyle.Standard;
-                       Assert.AreEqual (FlatStyle.Standard, l.FlatStyle, "F3");
-                       l.FlatStyle = FlatStyle.System;
-                       Assert.AreEqual (FlatStyle.System, l.FlatStyle, "F4");
-                       
-                       // I
-                       Assert.AreEqual (ContentAlignment.MiddleCenter, l.ImageAlign, "I1");
-                       l.ImageAlign = ContentAlignment.TopLeft;
-                       Assert.AreEqual (ContentAlignment.TopLeft, l.ImageAlign, "I2");
-                       l.ImageAlign = ContentAlignment.TopCenter;
-                       Assert.AreEqual (ContentAlignment.TopCenter, l.ImageAlign, "I3");
-                       l.ImageAlign = ContentAlignment.TopRight;
-                       Assert.AreEqual (ContentAlignment.TopRight, l.ImageAlign, "I4");
-                       l.ImageAlign = ContentAlignment.MiddleLeft;
-                       Assert.AreEqual (ContentAlignment.MiddleLeft, l.ImageAlign, "I5");
-                       l.ImageAlign = ContentAlignment.MiddleCenter;
-                       Assert.AreEqual (ContentAlignment.MiddleCenter, l.ImageAlign, "I6");
-                       l.ImageAlign = ContentAlignment.MiddleRight;
-                       Assert.AreEqual (ContentAlignment.MiddleRight, l.ImageAlign, "I7");
-                       l.ImageAlign = ContentAlignment.BottomLeft;
-                       Assert.AreEqual (ContentAlignment.BottomLeft, l.ImageAlign, "I8");
-                       l.ImageAlign = ContentAlignment.BottomCenter;
-                       Assert.AreEqual (ContentAlignment.BottomCenter, l.ImageAlign, "I9");
-                       l.ImageAlign = ContentAlignment.BottomRight;
-                       Assert.AreEqual (ContentAlignment.BottomRight, l.ImageAlign, "I10");
-                       Assert.AreEqual (-1, l.ImageIndex, "I11");
-                       Assert.AreEqual (null, l.ImageList, "I12");
-                       Assert.AreEqual (null, l.Image, "I13");
-                       l.Image = Image.FromFile ("Test/System.Windows.Forms/bitmaps/a.png");
-                       Assert.IsNotNull (l.Image, "I14");
-                       bmp = (Bitmap)l.Image;
-                       Assert.IsNotNull (bmp.GetPixel (0, 0), "I15");
-                       
-                       
-                       ImageList il = new ImageList ();
-                       il.ColorDepth = ColorDepth.Depth32Bit;
-                       il.ImageSize = new Size (15, 15);
-                       il.Images.Add (Image.FromFile ("Test/System.Windows.Forms/bitmaps/a.png"));
-                       l.ImageList = il;
-                       l.ImageIndex = 0;
-                       
-                       Assert.AreEqual (0, l.ImageIndex, "I16");
-                       Assert.IsNotNull (l.ImageList, "I17");
-                       
-                       // PreferredHeight
-                       // PregerredWidth
-                       // RenderTransparent
-                       
-                       // T
-                       // Assert.AreEqual (false, l.TabStop, "T1");
-                       Assert.AreEqual (ContentAlignment.TopLeft, l.TextAlign, "T2");
-                       
-                       // U
-                       Assert.AreEqual (true, l.UseMnemonic, "U1");
-                       l.UseMnemonic = false;
-                       Assert.AreEqual (false, l.UseMnemonic, "U2");
-               }
-
-                        
-               [Test]
-               public void LabelEqualsTest () 
-               {
-                       Label s1 = new Label ();
-                       Label s2 = new Label ();
-                       s1.Text = "abc";
-                       s2.Text = "abc";
-                       Assert.AreEqual (false, s1.Equals (s2), "E1");
-                       Assert.AreEqual (true, s1.Equals (s1), "E2");
-               }
-                                       
-               [Test]
-               public void LabelScaleTest () 
-               {
-                       Label r1 = new Label ();
-                       r1.Width = 40;
-                       r1.Height = 20 ;
-                       r1.Scale (2);
-                       Assert.AreEqual (80, r1.Width, "W1");
-                       Assert.AreEqual (40, r1.Height, "H1");
-               }
-                               
-               [Test]
-               public void PubMethodTest ()
-               {
-                       Label l = new Label ();
-                       
-                       l.Text = "My Label";
-                       
-                       Assert.AreEqual ("System.Windows.Forms.LabelText: My Label", l.ToString (), "T1");
-                         
-               }
-       }
-   
-        [TestFixture]
-        public class LabelEventTest
-        {
-               static bool eventhandled = false;
-               public void Label_EventHandler (object sender,EventArgs e)
-               {
-                       eventhandled = true;
-               }
-               
-               [Test]
-               public void AutoSizeChangedChangedTest ()
-               {
-                       Form myform = new Form ();
-                       myform.Visible = true;
-                       Label l = new Label ();
-                       l.Visible = true;
-                       myform.Controls.Add (l);
-                       l.AutoSizeChanged += new EventHandler (Label_EventHandler);
-                       l.AutoSize = true;
-                       Assert.AreEqual (true, eventhandled, "B4");
-                       eventhandled = false;                   
-               }
-               
-               [Test]
-               public void BackgroundImageChangedTest ()
-               {
-                       Form myform = new Form ();
-                       myform.Visible = true;
-                       Label l = new Label ();
-                       l.Visible = true;
-                       myform.Controls.Add (l);
-                       l.BackgroundImageChanged += new EventHandler (Label_EventHandler);
-                       l.BackgroundImage = Image.FromFile ("Test/System.Windows.Forms/bitmaps/a.png");
-                       Assert.AreEqual (true, eventhandled, "B4");
-                       eventhandled = false;                   
-               }
-               
-               [Test]
-               public void ImeModeChangedTest ()
-               {
-                       Form myform = new Form ();
-                       myform.Visible = true;
-                       Label l = new Label ();
-                       l.Visible = true;
-                       myform.Controls.Add (l);
-                       l.ImeModeChanged += new EventHandler (Label_EventHandler);
-                       l.ImeMode = ImeMode.Katakana;
-                       Assert.AreEqual (true, eventhandled, "I16");
-                       eventhandled = false;
-               }
-
-               [Test, Ignore ("This isnt complete.")]
-               public void KeyDownTest ()
-               {
-                       Form myform = new Form ();
-                       myform.Visible = true;
-                       Label l = new Label ();
-                       l.Visible = true;
-                       myform.Controls.Add (l);
-                       l.KeyDown += new KeyEventHandler (Label_EventHandler);
-                       
-                       //Assert.AreEqual (true, eventhandled, "K1");
-                       eventhandled = false;
-               }
-
-
-               [Test, Ignore ("This is failing.")]
-               public void TabStopChangedTest ()
-               {
-                       Form myform = new Form ();
-                       myform.Visible = true;
-                       Label l = new Label ();
-                       l.Visible = true;
-                       myform.Controls.Add (l);
-                       l.TabStopChanged += new EventHandler (Label_EventHandler);
-                       l.TabStop = true;
-                       Assert.AreEqual (true, eventhandled, "T3");
-                       eventhandled = false;
-               }
-               
-               [Test]
-               public void TextAlignChangedTest ()
-               {
-                       Form myform = new Form ();
-                       myform.Visible = true;
-                       Label l = new Label ();
-                       l.Visible = true;
-                       myform.Controls.Add (l);
-                       l.TextAlignChanged += new EventHandler (Label_EventHandler);
-                       l.TextAlign = ContentAlignment.TopRight;
-                       Assert.AreEqual (true, eventhandled, "T4");
-                       eventhandled = false;
-               }
-       }
-}
-          
+//\r
+// Copyright (c) 2005 Novell, Inc.\r
+//\r
+// Authors:\r
+//      Hisham Mardam Bey (hisham.mardambey@gmail.com)\r
+//\r
+//\r
+\r
+using System;\r
+using NUnit.Framework;\r
+using System.Windows.Forms;\r
+using System.Drawing;\r
+using System.Collections;\r
+\r
+namespace MonoTests.System.Windows.Forms\r
+{\r
+   [TestFixture]\r
+\r
+   public class LabelTest2\r
+   {\r
+\r
+          [Test]\r
+          public void PubPropTest ()\r
+            {\r
+                    Label l = new Label ();\r
+\r
+                    // A\r
+                    Assert.AreEqual (false, l.AutoSize, "A1");\r
+                    l.AutoSize = true;\r
+                    Assert.AreEqual (true, l.AutoSize, "A2");\r
+                    l.AutoSize = false;\r
+                    Assert.AreEqual (false, l.AutoSize, "A3");\r
+\r
+                    // B\r
+                    Assert.AreEqual (null, l.BackgroundImage, "B1");\r
+                    l.BackgroundImage = Image.FromFile ("Test/System.Windows.Forms/bitmaps/a.png");\r
+                    Assert.IsNotNull (l.BackgroundImage, "B2");\r
+                    Bitmap bmp = (Bitmap)l.BackgroundImage;\r
+                    Assert.IsNotNull (bmp.GetPixel (0, 0), "B3");\r
+\r
+                    Assert.AreEqual (BorderStyle.None, l.BorderStyle, "B4");\r
+                    l.BorderStyle = BorderStyle.FixedSingle;\r
+                    Assert.AreEqual (BorderStyle.FixedSingle, l.BorderStyle, "B5");\r
+                    l.BorderStyle = BorderStyle.Fixed3D;\r
+                    Assert.AreEqual (BorderStyle.Fixed3D, l.BorderStyle, "B6");\r
+                    l.BorderStyle = BorderStyle.None;\r
+                    Assert.AreEqual (BorderStyle.None, l.BorderStyle, "B7");\r
+\r
+                    // C\r
+                    string name = l.CompanyName;\r
+                    if (!name.Equals("Mono Project, Novell, Inc.") && !name.Equals("Microsoft Corporation")) {\r
+                            Assert.Fail("CompanyName property does not match any accepted value - C1");\r
+                    }\r
+\r
+                    // F\r
+                    Assert.AreEqual (FlatStyle.Standard, l.FlatStyle, "F1");\r
+                    l.FlatStyle = FlatStyle.Flat;\r
+                    Assert.AreEqual (FlatStyle.Flat, l.FlatStyle, "F1");\r
+                    l.FlatStyle = FlatStyle.Popup;\r
+                    Assert.AreEqual (FlatStyle.Popup, l.FlatStyle, "F2");\r
+                    l.FlatStyle = FlatStyle.Standard;\r
+                    Assert.AreEqual (FlatStyle.Standard, l.FlatStyle, "F3");\r
+                    l.FlatStyle = FlatStyle.System;\r
+                    Assert.AreEqual (FlatStyle.System, l.FlatStyle, "F4");\r
+\r
+                    // I\r
+                    Assert.AreEqual (ContentAlignment.MiddleCenter, l.ImageAlign, "I1");\r
+                    l.ImageAlign = ContentAlignment.TopLeft;\r
+                    Assert.AreEqual (ContentAlignment.TopLeft, l.ImageAlign, "I2");\r
+                    l.ImageAlign = ContentAlignment.TopCenter;\r
+                    Assert.AreEqual (ContentAlignment.TopCenter, l.ImageAlign, "I3");\r
+                    l.ImageAlign = ContentAlignment.TopRight;\r
+                    Assert.AreEqual (ContentAlignment.TopRight, l.ImageAlign, "I4");\r
+                    l.ImageAlign = ContentAlignment.MiddleLeft;\r
+                    Assert.AreEqual (ContentAlignment.MiddleLeft, l.ImageAlign, "I5");\r
+                    l.ImageAlign = ContentAlignment.MiddleCenter;\r
+                    Assert.AreEqual (ContentAlignment.MiddleCenter, l.ImageAlign, "I6");\r
+                    l.ImageAlign = ContentAlignment.MiddleRight;\r
+                    Assert.AreEqual (ContentAlignment.MiddleRight, l.ImageAlign, "I7");\r
+                    l.ImageAlign = ContentAlignment.BottomLeft;\r
+                    Assert.AreEqual (ContentAlignment.BottomLeft, l.ImageAlign, "I8");\r
+                    l.ImageAlign = ContentAlignment.BottomCenter;\r
+                    Assert.AreEqual (ContentAlignment.BottomCenter, l.ImageAlign, "I9");\r
+                    l.ImageAlign = ContentAlignment.BottomRight;\r
+                    Assert.AreEqual (ContentAlignment.BottomRight, l.ImageAlign, "I10");\r
+                    Assert.AreEqual (-1, l.ImageIndex, "I11");\r
+                    Assert.AreEqual (null, l.ImageList, "I12");\r
+                    Assert.AreEqual (null, l.Image, "I13");\r
+                    l.Image = Image.FromFile ("Test/System.Windows.Forms/bitmaps/a.png");\r
+                    Assert.IsNotNull (l.Image, "I14");\r
+                    bmp = (Bitmap)l.Image;\r
+                    Assert.IsNotNull (bmp.GetPixel (0, 0), "I15");\r
+\r
+                    ImageList il = new ImageList ();\r
+                    il.ColorDepth = ColorDepth.Depth32Bit;\r
+                    il.ImageSize = new Size (15, 15);\r
+                    il.Images.Add (Image.FromFile ("Test/System.Windows.Forms/bitmaps/a.png"));\r
+                    l.ImageList = il;\r
+                    l.ImageIndex = 0;\r
+\r
+                    Assert.AreEqual (0, l.ImageIndex, "I16");\r
+                    Assert.IsNotNull (l.ImageList, "I17");\r
+\r
+                    // PreferredHeight\r
+                    // PregerredWidth\r
+                    // RenderTransparent\r
+                    //\r
+                    // T\r
+                    // Assert.AreEqual (false, l.TabStop, "T1");\r
+                    Assert.AreEqual (ContentAlignment.TopLeft, l.TextAlign, "T2");\r
+\r
+                    // U\r
+                    Assert.AreEqual (true, l.UseMnemonic, "U1");\r
+                    l.UseMnemonic = false;\r
+                    Assert.AreEqual (false, l.UseMnemonic, "U2");\r
+            }\r
+\r
+          [Test]\r
+          public void LabelEqualsTest ()\r
+            {\r
+                    Label s1 = new Label ();\r
+                    Label s2 = new Label ();\r
+                    s1.Text = "abc";\r
+                    s2.Text = "abc";\r
+                    Assert.AreEqual (false, s1.Equals (s2), "E1");\r
+                    Assert.AreEqual (true, s1.Equals (s1), "E2");\r
+            }\r
+\r
+          [Test]\r
+          public void LabelScaleTest ()\r
+            {\r
+                    Label r1 = new Label ();\r
+                    r1.Width = 40;\r
+                    r1.Height = 20 ;\r
+                    r1.Scale (2);\r
+                    Assert.AreEqual (80, r1.Width, "W1");\r
+                    Assert.AreEqual (40, r1.Height, "H1");\r
+            }\r
+\r
+          [Test]\r
+          public void PubMethodTest ()\r
+            {\r
+                    Label l = new Label ();\r
+\r
+                    l.Text = "My Label";\r
+\r
+                    Assert.AreEqual ("System.Windows.Forms.Label, Text: My Label", l.ToString (), "T1");\r
+\r
+            }\r
+   }\r
+\r
+   [TestFixture]\r
+   public class LabelEventTest\r
+   {\r
+          static bool eventhandled = false;\r
+          public void Label_EventHandler (object sender,EventArgs e)\r
+          {\r
+                  eventhandled = true;\r
+          }\r
+\r
+          public void Label_KeyDownEventHandler (object sender, KeyEventArgs e)\r
+          {\r
+                  eventhandled = true;\r
+          }\r
+\r
+          [Test]\r
+          public void AutoSizeChangedChangedTest ()\r
+            {\r
+                    Form myform = new Form ();\r
+                    myform.Visible = true;\r
+                    Label l = new Label ();\r
+                    l.Visible = true;\r
+                    myform.Controls.Add (l);\r
+                    l.AutoSizeChanged += new EventHandler (Label_EventHandler);\r
+                    l.AutoSize = true;\r
+                    Assert.AreEqual (true, eventhandled, "B4");\r
+                    eventhandled = false;\r
+            }\r
+\r
+          [Test]\r
+          public void BackgroundImageChangedTest ()\r
+            {\r
+                    Form myform = new Form ();\r
+                    myform.Visible = true;\r
+                    Label l = new Label ();\r
+                    l.Visible = true;\r
+                    myform.Controls.Add (l);\r
+                    l.BackgroundImageChanged += new EventHandler (Label_EventHandler);\r
+                    l.BackgroundImage = Image.FromFile ("Test/System.Windows.Forms/bitmaps/a.png");\r
+                    Assert.AreEqual (true, eventhandled, "B4");\r
+                    eventhandled = false;\r
+            }\r
+\r
+          [Test]\r
+          public void ImeModeChangedTest ()\r
+            {\r
+                    Form myform = new Form ();\r
+                    myform.Visible = true;\r
+                    Label l = new Label ();\r
+                    l.Visible = true;\r
+                    myform.Controls.Add (l);\r
+                    l.ImeModeChanged += new EventHandler (Label_EventHandler);\r
+                    l.ImeMode = ImeMode.Katakana;\r
+                    Assert.AreEqual (true, eventhandled, "I16");\r
+                    eventhandled = false;\r
+            }\r
+\r
+          [Test]\r
+          public void KeyDownTest ()\r
+            {\r
+                    Form myform = new Form ();\r
+                    myform.Visible = true;\r
+                    MyLabel l = new MyLabel ();\r
+                    l.Visible = true;\r
+                    myform.Controls.Add (l);\r
+                    l.KeyDown += new KeyEventHandler (Label_KeyDownEventHandler);\r
+                    l.KeyPressA ();\r
+\r
+                    Assert.AreEqual (true, eventhandled, "K1");\r
+                    eventhandled = false;\r
+            }\r
+\r
+          [Test]\r
+          public void TabStopChangedTest ()\r
+            {\r
+                    Form myform = new Form ();\r
+                    myform.Visible = true;\r
+                    Label l = new Label ();\r
+                    l.Visible = true;\r
+                    myform.Controls.Add (l);\r
+                    l.TabStopChanged += new EventHandler (Label_EventHandler);\r
+                    l.TabStop = true;\r
+                    Assert.AreEqual (true, eventhandled, "T3");\r
+                    eventhandled = false;\r
+            }\r
+\r
+          [Test]\r
+          public void TextAlignChangedTest ()\r
+            {\r
+                    Form myform = new Form ();\r
+                    myform.Visible = true;\r
+                    Label l = new Label ();\r
+                    l.Visible = true;\r
+                    myform.Controls.Add (l);\r
+                    l.TextAlignChanged += new EventHandler (Label_EventHandler);\r
+                    l.TextAlign = ContentAlignment.TopRight;\r
+                    Assert.AreEqual (true, eventhandled, "T4");\r
+                    eventhandled = false;\r
+            }\r
+   }\r
+\r
+public class MyLabelInvalidate : MyLabel\r
+   {\r
+          //protected ArrayList results = new ArrayList ();\r
+    public MyLabelInvalidate () : base ()\r
+          {}\r
+\r
+          protected override void OnInvalidated (InvalidateEventArgs e)\r
+          {\r
+                  base.OnInvalidated (e);\r
+                  string res = (string)results [results.Count - 1];\r
+                  results [results.Count - 1 ] = string.Concat (res, "," + e.InvalidRect.ToString ());\r
+                  //results.Add ("OnInvalidate," + e.InvalidRect.ToString ());\r
+          }\r
+\r
+          //public ArrayList Results {\r
+          //   get {   return results; }\r
+          //}\r
+\r
+   }\r
+\r
+public class MyLabel : Label\r
+   {\r
+          protected ArrayList results = new ArrayList ();\r
+    public MyLabel () : base ()\r
+          {    }\r
+\r
+          protected override void OnAutoSizeChanged (EventArgs e)\r
+          {\r
+                  results.Add ("OnAutoSizeChanged");\r
+                  base.OnAutoSizeChanged (e);\r
+          }\r
+\r
+          protected override void OnBackgroundImageChanged (EventArgs e)\r
+          {\r
+                  results.Add ("OnBackgroundImageChanged");\r
+                  base.OnBackgroundImageChanged (e);\r
+          }\r
+\r
+          protected override void OnImeModeChanged (EventArgs e)\r
+          {\r
+                  results.Add ("OnImeModeChanged");\r
+                  base.OnImeModeChanged (e);\r
+          }\r
+\r
+          protected override void OnKeyDown (KeyEventArgs e)\r
+          {\r
+                  results.Add ("OnKeyDown,"+(char)e.KeyValue);\r
+                  base.OnKeyDown (e);\r
+          }\r
+\r
+          protected override void OnKeyPress (KeyPressEventArgs e)\r
+          {\r
+                  results.Add ("OnKeyPress,"+e.KeyChar.ToString ());\r
+                  base.OnKeyPress (e);\r
+          }\r
+\r
+          protected override void OnKeyUp (KeyEventArgs e)\r
+          {\r
+                  results.Add ("OnKeyUp,"+(char)e.KeyValue);\r
+                  base.OnKeyUp (e);\r
+          }\r
+\r
+          protected override void OnHandleCreated (EventArgs e)\r
+          {\r
+                  results.Add ("OnHandleCreated");\r
+                  base.OnHandleCreated (e);\r
+          }\r
+\r
+          protected override void OnBindingContextChanged (EventArgs e)\r
+          {\r
+                  results.Add ("OnBindingContextChanged");\r
+                  base.OnBindingContextChanged (e);\r
+          }\r
+\r
+          protected override void OnInvalidated (InvalidateEventArgs e)\r
+          {\r
+                  results.Add("OnInvalidated");\r
+                  base.OnInvalidated (e);\r
+          }\r
+\r
+          protected override void OnResize (EventArgs e)\r
+          {\r
+                  results.Add("OnResize");\r
+                  base.OnResize (e);\r
+          }\r
+\r
+          protected override void OnSizeChanged (EventArgs e)\r
+          {\r
+                  results.Add("OnSizeChanged");\r
+                  base.OnSizeChanged (e);\r
+          }\r
+\r
+          protected override void OnLayout (LayoutEventArgs e)\r
+          {\r
+                  results.Add("OnLayout");\r
+                  base.OnLayout (e);\r
+          }\r
+\r
+          protected override void OnVisibleChanged (EventArgs e)\r
+          {\r
+                  results.Add("OnVisibleChanged");\r
+                  base.OnVisibleChanged (e);\r
+          }\r
+\r
+          protected override void OnPaint (PaintEventArgs e)\r
+          {\r
+                  results.Add("OnPaint");\r
+                  base.OnPaint (e);\r
+          }\r
+\r
+          public void KeyPressA()\r
+          {\r
+                  Message m;\r
+\r
+                  m = new Message();\r
+\r
+                  m.Msg = (int)WndMsg.WM_KEYDOWN;\r
+                  m.HWnd = this.Handle;\r
+                  m.WParam = (IntPtr)0x41;\r
+                  m.LParam = (IntPtr)0x1e0001;\r
+                  this.WndProc(ref m);\r
+\r
+                  m.Msg = (int)WndMsg.WM_CHAR;\r
+                  m.HWnd = this.Handle;\r
+                  m.WParam = (IntPtr)0x61;\r
+                  m.LParam = (IntPtr)0x1e0001;\r
+                  this.WndProc(ref m);\r
+\r
+                  m.Msg = (int)WndMsg.WM_KEYUP;\r
+                  m.HWnd = this.Handle;\r
+                  m.WParam = (IntPtr)0x41;\r
+                  m.LParam = (IntPtr)unchecked((int)0xC01e0001);\r
+                  this.WndProc(ref m);\r
+          }\r
+\r
+          public void KeyDownA()\r
+          {\r
+                  Message m;\r
+\r
+                  m = new Message();\r
+\r
+                  m.Msg = (int)WndMsg.WM_KEYDOWN;\r
+                  m.HWnd = this.Handle;\r
+                  m.WParam = (IntPtr)0x41;\r
+                  m.LParam = (IntPtr)0x1e0001;\r
+                  this.WndProc(ref m);\r
+\r
+                  m.Msg = (int)WndMsg.WM_CHAR;\r
+                  m.HWnd = this.Handle;\r
+                  m.WParam = (IntPtr)0x61;\r
+                  m.LParam = (IntPtr)0x1e0001;\r
+                  this.WndProc(ref m);\r
+          }\r
+\r
+          public void KeyUpA()\r
+          {\r
+                  Message m;\r
+\r
+                  m = new Message();\r
+\r
+                  m.Msg = (int)WndMsg.WM_KEYUP;\r
+                  m.HWnd = this.Handle;\r
+                  m.WParam = (IntPtr)0x41;\r
+                  m.LParam = (IntPtr)unchecked((int)0xC01e0001);\r
+                  this.WndProc(ref m);\r
+          }\r
+\r
+          public ArrayList Results {\r
+                  get {        return results; }\r
+          }\r
+   }\r
+\r
+   [TestFixture]\r
+   public class LabelTestEventsOrder\r
+   {\r
+          public string [] ArrayListToString (ArrayList arrlist)\r
+          {\r
+                  string [] retval = new string [arrlist.Count];\r
+                  for (int i = 0; i < arrlist.Count; i++)\r
+                    retval[i] = (string)arrlist[i];\r
+                  return retval;\r
+          }\r
+\r
+          [Test]\r
+          public void CreateEventsOrder ()\r
+            {\r
+                    string[] EventsWanted = {\r
+                            "OnHandleCreated",\r
+                              "OnBindingContextChanged",\r
+                              "OnBindingContextChanged"\r
+                    };\r
+                    Form myform = new Form ();\r
+                    myform.Visible = true;\r
+                    MyLabel l = new MyLabel ();\r
+                    myform.Controls.Add (l);\r
+\r
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
+            }\r
+\r
+          [Test]\r
+          public void SizeChangedEventsOrder ()\r
+            {\r
+                    string[] EventsWanted = {\r
+                            "OnHandleCreated",\r
+                              "OnBindingContextChanged",\r
+                              "OnBindingContextChanged",\r
+                              "OnSizeChanged",\r
+                              "OnResize",\r
+                              "OnInvalidated",\r
+                              "OnLayout"\r
+                    };\r
+                    Form myform = new Form ();\r
+                    myform.Visible = true;\r
+                    MyLabel l = new MyLabel ();\r
+                    myform.Controls.Add (l);\r
+                    l.Size = new Size (150, 20);\r
+\r
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
+            }\r
+\r
+          [Test]\r
+          public void AutoSizeChangedEventsOrder ()\r
+            {\r
+                    string[] EventsWanted = {\r
+                            "OnHandleCreated",\r
+                              "OnBindingContextChanged",\r
+                              "OnBindingContextChanged",\r
+                              "OnSizeChanged",\r
+                              "OnResize",\r
+                              "OnInvalidated",\r
+                              "OnLayout",\r
+                              "OnAutoSizeChanged"\r
+                    };\r
+                    Form myform = new Form ();\r
+                    myform.Visible = true;\r
+                    MyLabel l = new MyLabel ();\r
+                    myform.Controls.Add (l);\r
+                    l.AutoSize = true;\r
+\r
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
+            }\r
+\r
+          [Test]\r
+          public void BackgroundImageChangedEventsOrder ()\r
+            {\r
+                    string[] EventsWanted = {\r
+                            "OnHandleCreated",\r
+                              "OnBindingContextChanged",\r
+                              "OnBindingContextChanged",\r
+                              "OnBackgroundImageChanged",\r
+                              "OnInvalidated"\r
+                    };\r
+                    Form myform = new Form ();\r
+                    myform.Visible = true;\r
+                    MyLabel l = new MyLabel ();\r
+                    myform.Controls.Add (l);\r
+                    l.BackgroundImage = Image.FromFile ("Test/System.Windows.Forms/bitmaps/a.png");\r
+\r
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
+            }\r
+\r
+          [Test]\r
+          public void ImeModeChangedChangedEventsOrder ()\r
+            {\r
+                    string[] EventsWanted = {\r
+                            "OnHandleCreated",\r
+                              "OnBindingContextChanged",\r
+                              "OnBindingContextChanged",\r
+                              "OnImeModeChanged"\r
+                    };\r
+                    Form myform = new Form ();\r
+                    myform.Visible = true;\r
+                    MyLabel l = new MyLabel ();\r
+                    myform.Controls.Add (l);\r
+                    l.ImeMode = ImeMode.Katakana;\r
+\r
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
+            }\r
+\r
+          [Test]\r
+          public void KeyPressEventsOrder ()\r
+            {\r
+                    string[] EventsWanted = {\r
+                            "OnHandleCreated",\r
+                              "OnBindingContextChanged",\r
+                              "OnBindingContextChanged",\r
+                              "OnKeyDown,A",\r
+                              "OnKeyPress,a",\r
+                              "OnKeyUp,A"\r
+                    };\r
+                    Form myform = new Form ();\r
+                    myform.Visible = true;\r
+                    MyLabel l = new MyLabel ();\r
+                    myform.Controls.Add (l);\r
+                    l.KeyPressA ();\r
+\r
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
+            }\r
+\r
+          [Test]\r
+          public void TabStopChangedEventsOrder ()\r
+            {\r
+                    string[] EventsWanted = {\r
+                            "OnHandleCreated",\r
+                              "OnBindingContextChanged",\r
+                              "OnBindingContextChanged"\r
+                    };\r
+                    Form myform = new Form ();\r
+                    myform.Visible = true;\r
+                    MyLabel l = new MyLabel ();\r
+                    myform.Controls.Add (l);\r
+                    l.TabStop = true;\r
+\r
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
+            }\r
+\r
+          [Test]\r
+          public void TextAlignChangedEventsOrder ()\r
+            {\r
+                    string[] EventsWanted = {\r
+                            "OnHandleCreated",\r
+                              "OnBindingContextChanged",\r
+                              "OnBindingContextChanged",\r
+                              "OnInvalidated"\r
+                    };\r
+                    Form myform = new Form ();\r
+                    myform.Visible = true;\r
+                    MyLabel l = new MyLabel ();\r
+                    myform.Controls.Add (l);\r
+                    l.TextAlign = ContentAlignment.TopRight;\r
+\r
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
+            }\r
+\r
+          [Test]\r
+          public void InvalidateEventsOrder ()\r
+            {\r
+                    Rectangle rect = new Rectangle (new Point (0,0), new Size (2, 2));\r
+\r
+                    Form myform = new Form ();\r
+                    myform.Visible = true;\r
+                    MyLabelInvalidate l = new MyLabelInvalidate ();\r
+                    myform.Controls.Add (l);\r
+                    l.TextAlign = ContentAlignment.TopRight;\r
+\r
+                    string [] EventsWanted = {\r
+                            "OnHandleCreated",\r
+                              "OnBindingContextChanged",\r
+                              "OnBindingContextChanged",\r
+                              "OnInvalidated,{X=0,Y=0,Width="+l.Size.Width+",Height="+l.Size.Height+"}",\r
+                              "OnInvalidated," + rect.ToString ()\r
+                    };\r
+\r
+                    l.Invalidate (rect);\r
+\r
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
+\r
+            }\r
+\r
+          [Test]\r
+          public void PaintEventsOrder ()\r
+            {\r
+                    string[] EventsWanted = {\r
+                            "OnHandleCreated",\r
+                              "OnBindingContextChanged",\r
+                              "OnBindingContextChanged",\r
+                              "OnInvalidated",\r
+                              "OnInvalidated",\r
+                              "OnPaint"\r
+                    };\r
+                    Form myform = new Form ();\r
+                    myform.Visible = true;\r
+                    MyLabel l = new MyLabel ();\r
+                    myform.Controls.Add (l);\r
+                    l.TextAlign = ContentAlignment.TopRight;\r
+                    l.Refresh ();\r
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
+            }\r
+\r
+   }\r
+\r
+public class MyLabel2 : Label\r
+   {\r
+          protected ArrayList results = new ArrayList ();\r
+    public MyLabel2 () : base ()\r
+          {\r
+                  this.AutoSizeChanged += new EventHandler (AutoSizeChanged_Handler);\r
+                  this.HandleCreated += new EventHandler (HandleCreated_Handler);\r
+                  this.BindingContextChanged += new EventHandler (BindingContextChanged_Handler);\r
+                  this.BackgroundImageChanged += new EventHandler (BackgroundImageChanged_Handler);\r
+                  this.ImeModeChanged += new EventHandler (ImeModeChanged_Handler);\r
+                  this.KeyDown += new KeyEventHandler (KeyDown_Handler);\r
+                  this.KeyPress += new KeyPressEventHandler (KeyPress_Handler);\r
+                  this.KeyUp += new KeyEventHandler (KeyUp_Handler);\r
+                  this.Invalidated += new InvalidateEventHandler (Invalidated_Handler);\r
+                  this.Resize += new EventHandler (Resize_Handler);\r
+                  this.SizeChanged += new EventHandler (SizeChanged_Handler);\r
+                  this.Layout += new LayoutEventHandler (Layout_Handler);\r
+                  this.VisibleChanged += new EventHandler (VisibleChanged_Handler);\r
+                  this.Paint += new PaintEventHandler (Paint_Handler);\r
+          }\r
+\r
+          protected void AutoSizeChanged_Handler (object sender, EventArgs e)\r
+          {\r
+                  results.Add ("AutoSizeChanged");\r
+          }\r
+\r
+          protected void BackgroundImageChanged_Handler (object sender, EventArgs e)\r
+          {\r
+                  results.Add ("BackgroundImageChanged");\r
+          }\r
+\r
+          protected void ImeModeChanged_Handler (object sender, EventArgs e)\r
+          {\r
+                  results.Add ("ImeModeChanged");\r
+          }\r
+\r
+          protected void KeyDown_Handler (object sender, KeyEventArgs e)\r
+          {\r
+                  results.Add ("KeyDown,"+(char)e.KeyValue);\r
+          }\r
+\r
+          protected void KeyPress_Handler (object sender, KeyPressEventArgs e)\r
+          {\r
+                  results.Add ("KeyPress,"+e.KeyChar.ToString ());\r
+          }\r
+\r
+          protected void KeyUp_Handler (object sender, KeyEventArgs e)\r
+          {\r
+                  results.Add ("KeyUp,"+(char)e.KeyValue);\r
+          }\r
+\r
+          protected void HandleCreated_Handler (object sender, EventArgs e)\r
+          {\r
+                  results.Add ("HandleCreated");\r
+          }\r
+\r
+          protected void BindingContextChanged_Handler (object sender, EventArgs e)\r
+          {\r
+                  results.Add ("BindingContextChanged");\r
+          }\r
+\r
+          protected void Invalidated_Handler (object sender, InvalidateEventArgs e)\r
+          {\r
+                  results.Add("Invalidated");\r
+          }\r
+\r
+          protected void Resize_Handler (object sender, EventArgs e)\r
+          {\r
+                  results.Add("Resize");\r
+          }\r
+\r
+          protected void SizeChanged_Handler (object sender, EventArgs e)\r
+          {\r
+                  results.Add("SizeChanged");\r
+          }\r
+\r
+          protected void Layout_Handler (object sender, LayoutEventArgs e)\r
+          {\r
+                  results.Add("Layout");\r
+          }\r
+\r
+          protected void VisibleChanged_Handler (object sender, EventArgs e)\r
+          {\r
+                  results.Add("VisibleChanged");\r
+          }\r
+\r
+          protected void Paint_Handler (object sender, PaintEventArgs e)\r
+          {\r
+                  results.Add("Paint");\r
+          }\r
+\r
+          public void KeyPressA()\r
+          {\r
+                  Message m;\r
+\r
+                  m = new Message();\r
+\r
+                  m.Msg = (int)WndMsg.WM_KEYDOWN;\r
+                  m.HWnd = this.Handle;\r
+                  m.WParam = (IntPtr)0x41;\r
+                  m.LParam = (IntPtr)0x1e0001;\r
+                  this.WndProc(ref m);\r
+\r
+                  m.Msg = (int)WndMsg.WM_CHAR;\r
+                  m.HWnd = this.Handle;\r
+                  m.WParam = (IntPtr)0x61;\r
+                  m.LParam = (IntPtr)0x1e0001;\r
+                  this.WndProc(ref m);\r
+\r
+                  m.Msg = (int)WndMsg.WM_KEYUP;\r
+                  m.HWnd = this.Handle;\r
+                  m.WParam = (IntPtr)0x41;\r
+                  m.LParam = (IntPtr)unchecked((int)0xC01e0001);\r
+                  this.WndProc(ref m);\r
+          }\r
+\r
+          public void KeyDownA()\r
+          {\r
+                  Message m;\r
+\r
+                  m = new Message();\r
+\r
+                  m.Msg = (int)WndMsg.WM_KEYDOWN;\r
+                  m.HWnd = this.Handle;\r
+                  m.WParam = (IntPtr)0x41;\r
+                  m.LParam = (IntPtr)0x1e0001;\r
+                  this.WndProc(ref m);\r
+\r
+                  m.Msg = (int)WndMsg.WM_CHAR;\r
+                  m.HWnd = this.Handle;\r
+                  m.WParam = (IntPtr)0x61;\r
+                  m.LParam = (IntPtr)0x1e0001;\r
+                  this.WndProc(ref m);\r
+          }\r
+\r
+          public void KeyUpA()\r
+          {\r
+                  Message m;\r
+\r
+                  m = new Message();\r
+\r
+                  m.Msg = (int)WndMsg.WM_KEYUP;\r
+                  m.HWnd = this.Handle;\r
+                  m.WParam = (IntPtr)0x41;\r
+                  m.LParam = (IntPtr)unchecked((int)0xC01e0001);\r
+                  this.WndProc(ref m);\r
+          }\r
+\r
+          public ArrayList Results {\r
+                  get {        return results; }\r
+          }\r
+   }\r
+\r
+   [TestFixture]\r
+   public class LabelTestEventsOrder2\r
+   {\r
+          public string [] ArrayListToString (ArrayList arrlist)\r
+          {\r
+                  string [] retval = new string [arrlist.Count];\r
+                  for (int i = 0; i < arrlist.Count; i++)\r
+                    retval[i] = (string)arrlist[i];\r
+                  return retval;\r
+          }\r
+\r
+          [Test]\r
+          public void CreateEventsOrder ()\r
+            {\r
+                    string[] EventsWanted = {\r
+                            "HandleCreated",\r
+                              "BindingContextChanged",\r
+                              "BindingContextChanged"\r
+                    };\r
+                    Form myform = new Form ();\r
+                    myform.Visible = true;\r
+                    MyLabel2 l = new MyLabel2 ();\r
+                    myform.Controls.Add (l);\r
+\r
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
+            }\r
+\r
+          [Test]\r
+          public void SizeChangedEventsOrder ()\r
+            {\r
+                    string[] EventsWanted = {\r
+                            "HandleCreated",\r
+                              "BindingContextChanged",\r
+                              "BindingContextChanged",\r
+                              "Invalidated",\r
+                              "Layout",\r
+                              "Resize",\r
+                              "SizeChanged"\r
+                    };\r
+                    Form myform = new Form ();\r
+                    myform.Visible = true;\r
+                    MyLabel2 l = new MyLabel2 ();\r
+                    myform.Controls.Add (l);\r
+                    l.Size = new Size (150, 20);\r
+\r
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
+            }\r
+\r
+          [Test]\r
+          public void AutoSizeChangedEventsOrder ()\r
+            {\r
+                    string[] EventsWanted = {\r
+                            "HandleCreated",\r
+                              "BindingContextChanged",\r
+                              "BindingContextChanged",\r
+                              "Invalidated",\r
+                              "Layout",\r
+                              "Resize",\r
+                              "SizeChanged",\r
+                              "AutoSizeChanged"\r
+                    };\r
+                    Form myform = new Form ();\r
+                    myform.Visible = true;\r
+                    MyLabel2 l = new MyLabel2 ();\r
+                    myform.Controls.Add (l);\r
+                    l.AutoSize = true;\r
+\r
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
+            }\r
+\r
+          [Test]\r
+          public void BackgroundImageChangedEventsOrder ()\r
+            {\r
+                    string[] EventsWanted = {\r
+                            "HandleCreated",\r
+                              "BindingContextChanged",\r
+                              "BindingContextChanged",\r
+                              "Invalidated",\r
+                              "BackgroundImageChanged"\r
+                    };\r
+                    Form myform = new Form ();\r
+                    myform.Visible = true;\r
+                    MyLabel2 l = new MyLabel2 ();\r
+                    myform.Controls.Add (l);\r
+                    l.BackgroundImage = Image.FromFile ("Test/System.Windows.Forms/bitmaps/a.png");\r
+\r
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
+            }\r
+\r
+          [Test]\r
+          public void ImeModeChangedChangedEventsOrder ()\r
+            {\r
+                    string[] EventsWanted = {\r
+                            "HandleCreated",\r
+                              "BindingContextChanged",\r
+                              "BindingContextChanged",\r
+                              "ImeModeChanged"\r
+                    };\r
+                    Form myform = new Form ();\r
+                    myform.Visible = true;\r
+                    MyLabel2 l = new MyLabel2 ();\r
+                    myform.Controls.Add (l);\r
+                    l.ImeMode = ImeMode.Katakana;\r
+\r
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
+            }\r
+\r
+          [Test]\r
+          public void KeyPressEventsOrder ()\r
+            {\r
+                    string[] EventsWanted = {\r
+                            "HandleCreated",\r
+                              "BindingContextChanged",\r
+                              "BindingContextChanged",\r
+                              "KeyDown,A",\r
+                              "KeyPress,a",\r
+                              "KeyUp,A"\r
+                    };\r
+                    Form myform = new Form ();\r
+                    myform.Visible = true;\r
+                    MyLabel2 l = new MyLabel2 ();\r
+                    myform.Controls.Add (l);\r
+                    l.KeyPressA ();\r
+\r
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
+            }\r
+\r
+          [Test]\r
+          public void TabStopChangedEventsOrder ()\r
+            {\r
+                    string[] EventsWanted = {\r
+                            "HandleCreated",\r
+                              "BindingContextChanged",\r
+                              "BindingContextChanged"\r
+                    };\r
+                    Form myform = new Form ();\r
+                    myform.Visible = true;\r
+                    MyLabel2 l = new MyLabel2 ();\r
+                    myform.Controls.Add (l);\r
+                    l.TabStop = true;\r
+\r
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
+            }\r
+\r
+          [Test]\r
+          public void TextAlignChangedEventsOrder ()\r
+            {\r
+                    string[] EventsWanted = {\r
+                            "HandleCreated",\r
+                              "BindingContextChanged",\r
+                              "BindingContextChanged",\r
+                              "Invalidated"\r
+                    };\r
+                    Form myform = new Form ();\r
+                    myform.Visible = true;\r
+                    MyLabel2 l = new MyLabel2 ();\r
+                    myform.Controls.Add (l);\r
+                    l.TextAlign = ContentAlignment.TopRight;\r
+\r
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
+            }\r
+\r
+          [Test]\r
+          public void PaintEventsOrder ()\r
+            {\r
+                    string[] EventsWanted = {\r
+                            "HandleCreated",\r
+                              "BindingContextChanged",\r
+                              "BindingContextChanged",\r
+                              "Invalidated",\r
+                              "Invalidated",\r
+                              "Paint"\r
+                    };\r
+                    Form myform = new Form ();\r
+                    myform.Visible = true;\r
+                    MyLabel2 l = new MyLabel2 ();\r
+                    myform.Controls.Add (l);\r
+                    l.TextAlign = ContentAlignment.TopRight;\r
+                    l.Refresh ();\r
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
+            }\r
+\r
+   }\r
+\r
+}\r