2006-05-31 Peter Dennis Bartok <pbartok@novell.com>
[mono.git] / mcs / class / Managed.Windows.Forms / Test / System.Windows.Forms / LabelTest.cs
index 236ee26e3b0e6686c31788f3ea69cf4f3830adfd..37a89d591f9bcc694014a975521e7907ca491b4f 100644 (file)
-//\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
+//
+// 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.Collections;
+
+namespace MonoTests.System.Windows.Forms
+{
+   [TestFixture]
+
+   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.Label, Text: My Label", l.ToString (), "T1");
+
+            }
+   }
+
+   [TestFixture]
+   public class LabelEventTest
+   {
+          static bool eventhandled = false;
+          public void Label_EventHandler (object sender,EventArgs e)
+          {
+                  eventhandled = true;
+          }
+
+          public void Label_KeyDownEventHandler (object sender, KeyEventArgs 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]
+          public void KeyDownTest ()
+            {
+                    Form myform = new Form ();
+                    myform.Visible = true;
+                    MyLabel l = new MyLabel ();
+                    l.Visible = true;
+                    myform.Controls.Add (l);
+                    l.KeyDown += new KeyEventHandler (Label_KeyDownEventHandler);
+                    l.KeyPressA ();
+
+                    Assert.AreEqual (true, eventhandled, "K1");
+                    eventhandled = false;
+            }
+
+          [Test]
+          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;
+            }
+   }
+
+public class MyLabelInvalidate : MyLabel
+   {
+          //protected ArrayList results = new ArrayList ();
+    public MyLabelInvalidate () : base ()
+          {}
+
+          protected override void OnInvalidated (InvalidateEventArgs e)
+          {
+                  base.OnInvalidated (e);
+                  string res = (string)results [results.Count - 1];
+                  results [results.Count - 1 ] = string.Concat (res, "," + e.InvalidRect.ToString ());
+                  //results.Add ("OnInvalidate," + e.InvalidRect.ToString ());
+          }
+
+          //public ArrayList Results {
+          //   get {   return results; }
+          //}
+
+   }
+
+public class MyLabel : Label
+   {
+          protected ArrayList results = new ArrayList ();
+    public MyLabel () : base ()
+          {    }
+
+          protected override void OnAutoSizeChanged (EventArgs e)
+          {
+                  results.Add ("OnAutoSizeChanged");
+                  base.OnAutoSizeChanged (e);
+          }
+
+          protected override void OnBackgroundImageChanged (EventArgs e)
+          {
+                  results.Add ("OnBackgroundImageChanged");
+                  base.OnBackgroundImageChanged (e);
+          }
+
+          protected override void OnImeModeChanged (EventArgs e)
+          {
+                  results.Add ("OnImeModeChanged");
+                  base.OnImeModeChanged (e);
+          }
+
+          protected override void OnKeyDown (KeyEventArgs e)
+          {
+                  results.Add ("OnKeyDown,"+(char)e.KeyValue);
+                  base.OnKeyDown (e);
+          }
+
+          protected override void OnKeyPress (KeyPressEventArgs e)
+          {
+                  results.Add ("OnKeyPress,"+e.KeyChar.ToString ());
+                  base.OnKeyPress (e);
+          }
+
+          protected override void OnKeyUp (KeyEventArgs e)
+          {
+                  results.Add ("OnKeyUp,"+(char)e.KeyValue);
+                  base.OnKeyUp (e);
+          }
+
+          protected override void OnHandleCreated (EventArgs e)
+          {
+                  results.Add ("OnHandleCreated");
+                  base.OnHandleCreated (e);
+          }
+
+          protected override void OnBindingContextChanged (EventArgs e)
+          {
+                  results.Add ("OnBindingContextChanged");
+                  base.OnBindingContextChanged (e);
+          }
+
+          protected override void OnInvalidated (InvalidateEventArgs e)
+          {
+                  results.Add("OnInvalidated");
+                  base.OnInvalidated (e);
+          }
+
+          protected override void OnResize (EventArgs e)
+          {
+                  results.Add("OnResize");
+                  base.OnResize (e);
+          }
+
+          protected override void OnSizeChanged (EventArgs e)
+          {
+                  results.Add("OnSizeChanged");
+                  base.OnSizeChanged (e);
+          }
+
+          protected override void OnLayout (LayoutEventArgs e)
+          {
+                  results.Add("OnLayout");
+                  base.OnLayout (e);
+          }
+
+          protected override void OnVisibleChanged (EventArgs e)
+          {
+                  results.Add("OnVisibleChanged");
+                  base.OnVisibleChanged (e);
+          }
+
+          protected override void OnPaint (PaintEventArgs e)
+          {
+                  results.Add("OnPaint");
+                  base.OnPaint (e);
+          }
+
+          public void KeyPressA()
+          {
+                  Message m;
+
+                  m = new Message();
+
+                  m.Msg = (int)WndMsg.WM_KEYDOWN;
+                  m.HWnd = this.Handle;
+                  m.WParam = (IntPtr)0x41;
+                  m.LParam = (IntPtr)0x1e0001;
+                  this.WndProc(ref m);
+
+                  m.Msg = (int)WndMsg.WM_CHAR;
+                  m.HWnd = this.Handle;
+                  m.WParam = (IntPtr)0x61;
+                  m.LParam = (IntPtr)0x1e0001;
+                  this.WndProc(ref m);
+
+                  m.Msg = (int)WndMsg.WM_KEYUP;
+                  m.HWnd = this.Handle;
+                  m.WParam = (IntPtr)0x41;
+                  m.LParam = (IntPtr)unchecked((int)0xC01e0001);
+                  this.WndProc(ref m);
+          }
+
+          public void KeyDownA()
+          {
+                  Message m;
+
+                  m = new Message();
+
+                  m.Msg = (int)WndMsg.WM_KEYDOWN;
+                  m.HWnd = this.Handle;
+                  m.WParam = (IntPtr)0x41;
+                  m.LParam = (IntPtr)0x1e0001;
+                  this.WndProc(ref m);
+
+                  m.Msg = (int)WndMsg.WM_CHAR;
+                  m.HWnd = this.Handle;
+                  m.WParam = (IntPtr)0x61;
+                  m.LParam = (IntPtr)0x1e0001;
+                  this.WndProc(ref m);
+          }
+
+          public void KeyUpA()
+          {
+                  Message m;
+
+                  m = new Message();
+
+                  m.Msg = (int)WndMsg.WM_KEYUP;
+                  m.HWnd = this.Handle;
+                  m.WParam = (IntPtr)0x41;
+                  m.LParam = (IntPtr)unchecked((int)0xC01e0001);
+                  this.WndProc(ref m);
+          }
+
+          public ArrayList Results {
+                  get {        return results; }
+          }
+   }
+
+   [TestFixture]
+   [Ignore("Comparisons too strict")]
+   public class LabelTestEventsOrder
+   {
+          public string [] ArrayListToString (ArrayList arrlist)
+          {
+                  string [] retval = new string [arrlist.Count];
+                  for (int i = 0; i < arrlist.Count; i++)
+                    retval[i] = (string)arrlist[i];
+                  return retval;
+          }
+
+       private void OrderedAssert(string[] wanted, ArrayList found) {
+               int     last_target;
+               bool    seen;
+
+               last_target = 0;
+
+               for (int i = 0; i < wanted.Length; i++) {
+                       seen = false;
+                       for (int j = last_target; j < found.Count; j++) {
+                               if (wanted[i] == (string)found[j]) {
+                                       seen = true;
+                                       last_target = j + 1;
+                                       break;
+                               }
+                       }
+
+                       if (!seen) {
+                               Console.WriteLine("Needed {0}", wanted[i]);
+                       }
+               }
+       }
+
+        public void PrintList(string name, ArrayList list) {
+                Console.WriteLine("{0}", name);
+                for (int i = 0; i < list.Count; i++) {
+                        Console.WriteLine("   {0}", list[i]);
+                }
+                Console.WriteLine("");
+        }
+
+
+          [Test]
+          public void CreateEventsOrder ()
+            {
+                    string[] EventsWanted = {
+                            "OnHandleCreated",
+                              "OnBindingContextChanged",
+                              "OnBindingContextChanged"
+                    };
+                    Form myform = new Form ();
+                    myform.Visible = true;
+                    MyLabel l = new MyLabel ();
+                    myform.Controls.Add (l);
+
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
+            }
+
+          [Test]
+          public void SizeChangedEventsOrder ()
+            {
+                    string[] EventsWanted = {
+                            "OnHandleCreated",
+                              "OnBindingContextChanged",
+                              "OnBindingContextChanged",
+                              "OnSizeChanged",
+                              "OnResize",
+                              "OnInvalidated",
+                              "OnLayout"
+                    };
+                    Form myform = new Form ();
+                    myform.Visible = true;
+                    MyLabel l = new MyLabel ();
+                    myform.Controls.Add (l);
+                    l.Size = new Size (150, 20);
+
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
+            }
+
+          [Test]
+          public void AutoSizeChangedEventsOrder ()
+            {
+                    string[] EventsWanted = {
+                            "OnHandleCreated",
+                              "OnBindingContextChanged",
+                              "OnBindingContextChanged",
+                              "OnSizeChanged",
+                              "OnResize",
+                              "OnInvalidated",
+                              "OnLayout",
+                              "OnAutoSizeChanged"
+                    };
+                    Form myform = new Form ();
+                    myform.Visible = true;
+                    MyLabel l = new MyLabel ();
+                    myform.Controls.Add (l);
+                    l.AutoSize = true;
+
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
+            }
+
+          [Test]
+          public void BackgroundImageChangedEventsOrder ()
+            {
+                    string[] EventsWanted = {
+                            "OnHandleCreated",
+                              "OnBindingContextChanged",
+                              "OnBindingContextChanged",
+                              "OnBackgroundImageChanged",
+                              "OnInvalidated"
+                    };
+                    Form myform = new Form ();
+                    myform.Visible = true;
+                    MyLabel l = new MyLabel ();
+                    myform.Controls.Add (l);
+                    l.BackgroundImage = Image.FromFile ("Test/System.Windows.Forms/bitmaps/a.png");
+
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
+            }
+
+          [Test]
+          public void ImeModeChangedChangedEventsOrder ()
+            {
+                    string[] EventsWanted = {
+                            "OnHandleCreated",
+                              "OnBindingContextChanged",
+                              "OnBindingContextChanged",
+                              "OnImeModeChanged"
+                    };
+                    Form myform = new Form ();
+                    myform.Visible = true;
+                    MyLabel l = new MyLabel ();
+                    myform.Controls.Add (l);
+                    l.ImeMode = ImeMode.Katakana;
+
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
+            }
+
+          [Test]
+          public void KeyPressEventsOrder ()
+            {
+                    string[] EventsWanted = {
+                            "OnHandleCreated",
+                              "OnBindingContextChanged",
+                              "OnBindingContextChanged",
+                              "OnKeyDown,A",
+                              "OnKeyPress,a",
+                              "OnKeyUp,A"
+                    };
+                    Form myform = new Form ();
+                    myform.Visible = true;
+                    MyLabel l = new MyLabel ();
+                    myform.Controls.Add (l);
+                    l.KeyPressA ();
+
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
+            }
+
+          [Test]
+          public void TabStopChangedEventsOrder ()
+            {
+                    string[] EventsWanted = {
+                            "OnHandleCreated",
+                              "OnBindingContextChanged",
+                              "OnBindingContextChanged"
+                    };
+                    Form myform = new Form ();
+                    myform.Visible = true;
+                    MyLabel l = new MyLabel ();
+                    myform.Controls.Add (l);
+                    l.TabStop = true;
+PrintList("TabStopChanged", l.Results);
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
+            }
+
+          [Test]
+          public void TextAlignChangedEventsOrder ()
+            {
+                    string[] EventsWanted = {
+                            "OnHandleCreated",
+                              "OnBindingContextChanged",
+                              "OnBindingContextChanged",
+                              "OnInvalidated"
+                    };
+                    Form myform = new Form ();
+                    myform.Visible = true;
+                    MyLabel l = new MyLabel ();
+                    myform.Controls.Add (l);
+                    l.TextAlign = ContentAlignment.TopRight;
+
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
+            }
+
+          [Test]
+          public void InvalidateEventsOrder ()
+            {
+                    Rectangle rect = new Rectangle (new Point (0,0), new Size (2, 2));
+
+                    Form myform = new Form ();
+                    myform.Visible = true;
+                    MyLabelInvalidate l = new MyLabelInvalidate ();
+                    myform.Controls.Add (l);
+                    l.TextAlign = ContentAlignment.TopRight;
+
+                    string [] EventsWanted = {
+                            "OnHandleCreated",
+                              "OnBindingContextChanged",
+                              "OnBindingContextChanged",
+                              "OnInvalidated,{X=0,Y=0,Width="+l.Size.Width+",Height="+l.Size.Height+"}",
+                              "OnInvalidated," + rect.ToString ()
+                    };
+
+                    l.Invalidate (rect);
+
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
+
+            }
+
+          [Test]
+          public void PaintEventsOrder ()
+            {
+                    string[] EventsWanted = {
+                            "OnHandleCreated",
+                              "OnBindingContextChanged",
+                              "OnBindingContextChanged",
+                              "OnInvalidated",
+                              "OnInvalidated",
+                              "OnPaint"
+                    };
+                    Form myform = new Form ();
+                    myform.Visible = true;
+                    MyLabel l = new MyLabel ();
+                    myform.Controls.Add (l);
+                    l.TextAlign = ContentAlignment.TopRight;
+                    l.Refresh ();
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
+            }
+
+   }
+
+public class MyLabel2 : Label
+   {
+          protected ArrayList results = new ArrayList ();
+    public MyLabel2 () : base ()
+          {
+                  this.AutoSizeChanged += new EventHandler (AutoSizeChanged_Handler);
+                  this.HandleCreated += new EventHandler (HandleCreated_Handler);
+                  this.BindingContextChanged += new EventHandler (BindingContextChanged_Handler);
+                  this.BackgroundImageChanged += new EventHandler (BackgroundImageChanged_Handler);
+                  this.ImeModeChanged += new EventHandler (ImeModeChanged_Handler);
+                  this.KeyDown += new KeyEventHandler (KeyDown_Handler);
+                  this.KeyPress += new KeyPressEventHandler (KeyPress_Handler);
+                  this.KeyUp += new KeyEventHandler (KeyUp_Handler);
+                  this.Invalidated += new InvalidateEventHandler (Invalidated_Handler);
+                  this.Resize += new EventHandler (Resize_Handler);
+                  this.SizeChanged += new EventHandler (SizeChanged_Handler);
+                  this.Layout += new LayoutEventHandler (Layout_Handler);
+                  this.VisibleChanged += new EventHandler (VisibleChanged_Handler);
+                  this.Paint += new PaintEventHandler (Paint_Handler);
+          }
+
+          protected void AutoSizeChanged_Handler (object sender, EventArgs e)
+          {
+                  results.Add ("AutoSizeChanged");
+          }
+
+          protected void BackgroundImageChanged_Handler (object sender, EventArgs e)
+          {
+                  results.Add ("BackgroundImageChanged");
+          }
+
+          protected void ImeModeChanged_Handler (object sender, EventArgs e)
+          {
+                  results.Add ("ImeModeChanged");
+          }
+
+          protected void KeyDown_Handler (object sender, KeyEventArgs e)
+          {
+                  results.Add ("KeyDown,"+(char)e.KeyValue);
+          }
+
+          protected void KeyPress_Handler (object sender, KeyPressEventArgs e)
+          {
+                  results.Add ("KeyPress,"+e.KeyChar.ToString ());
+          }
+
+          protected void KeyUp_Handler (object sender, KeyEventArgs e)
+          {
+                  results.Add ("KeyUp,"+(char)e.KeyValue);
+          }
+
+          protected void HandleCreated_Handler (object sender, EventArgs e)
+          {
+                  results.Add ("HandleCreated");
+          }
+
+          protected void BindingContextChanged_Handler (object sender, EventArgs e)
+          {
+                  results.Add ("BindingContextChanged");
+          }
+
+          protected void Invalidated_Handler (object sender, InvalidateEventArgs e)
+          {
+                  results.Add("Invalidated");
+          }
+
+          protected void Resize_Handler (object sender, EventArgs e)
+          {
+                  results.Add("Resize");
+          }
+
+          protected void SizeChanged_Handler (object sender, EventArgs e)
+          {
+                  results.Add("SizeChanged");
+          }
+
+          protected void Layout_Handler (object sender, LayoutEventArgs e)
+          {
+                  results.Add("Layout");
+          }
+
+          protected void VisibleChanged_Handler (object sender, EventArgs e)
+          {
+                  results.Add("VisibleChanged");
+          }
+
+          protected void Paint_Handler (object sender, PaintEventArgs e)
+          {
+                  results.Add("Paint");
+          }
+
+          public void KeyPressA()
+          {
+                  Message m;
+
+                  m = new Message();
+
+                  m.Msg = (int)WndMsg.WM_KEYDOWN;
+                  m.HWnd = this.Handle;
+                  m.WParam = (IntPtr)0x41;
+                  m.LParam = (IntPtr)0x1e0001;
+                  this.WndProc(ref m);
+
+                  m.Msg = (int)WndMsg.WM_CHAR;
+                  m.HWnd = this.Handle;
+                  m.WParam = (IntPtr)0x61;
+                  m.LParam = (IntPtr)0x1e0001;
+                  this.WndProc(ref m);
+
+                  m.Msg = (int)WndMsg.WM_KEYUP;
+                  m.HWnd = this.Handle;
+                  m.WParam = (IntPtr)0x41;
+                  m.LParam = (IntPtr)unchecked((int)0xC01e0001);
+                  this.WndProc(ref m);
+          }
+
+          public void KeyDownA()
+          {
+                  Message m;
+
+                  m = new Message();
+
+                  m.Msg = (int)WndMsg.WM_KEYDOWN;
+                  m.HWnd = this.Handle;
+                  m.WParam = (IntPtr)0x41;
+                  m.LParam = (IntPtr)0x1e0001;
+                  this.WndProc(ref m);
+
+                  m.Msg = (int)WndMsg.WM_CHAR;
+                  m.HWnd = this.Handle;
+                  m.WParam = (IntPtr)0x61;
+                  m.LParam = (IntPtr)0x1e0001;
+                  this.WndProc(ref m);
+          }
+
+          public void KeyUpA()
+          {
+                  Message m;
+
+                  m = new Message();
+
+                  m.Msg = (int)WndMsg.WM_KEYUP;
+                  m.HWnd = this.Handle;
+                  m.WParam = (IntPtr)0x41;
+                  m.LParam = (IntPtr)unchecked((int)0xC01e0001);
+                  this.WndProc(ref m);
+          }
+
+          public ArrayList Results {
+                  get {        return results; }
+          }
+   }
+
+   [TestFixture]
+   [Ignore("Comparisons too strict")]
+   public class LabelTestEventsOrder2
+   {
+          public string [] ArrayListToString (ArrayList arrlist)
+          {
+                  string [] retval = new string [arrlist.Count];
+                  for (int i = 0; i < arrlist.Count; i++)
+                    retval[i] = (string)arrlist[i];
+                  return retval;
+          }
+
+          [Test]
+          public void CreateEventsOrder ()
+            {
+                    string[] EventsWanted = {
+                            "HandleCreated",
+                              "BindingContextChanged",
+                              "BindingContextChanged"
+                    };
+                    Form myform = new Form ();
+                    myform.Visible = true;
+                    MyLabel2 l = new MyLabel2 ();
+                    myform.Controls.Add (l);
+
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
+            }
+
+          [Test]
+          public void SizeChangedEventsOrder ()
+            {
+                    string[] EventsWanted = {
+                            "HandleCreated",
+                              "BindingContextChanged",
+                              "BindingContextChanged",
+                              "Invalidated",
+                              "Layout",
+                              "Resize",
+                              "SizeChanged"
+                    };
+                    Form myform = new Form ();
+                    myform.Visible = true;
+                    MyLabel2 l = new MyLabel2 ();
+                    myform.Controls.Add (l);
+                    l.Size = new Size (150, 20);
+
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
+            }
+
+          [Test]
+          public void AutoSizeChangedEventsOrder ()
+            {
+                    string[] EventsWanted = {
+                            "HandleCreated",
+                              "BindingContextChanged",
+                              "BindingContextChanged",
+                              "Invalidated",
+                              "Layout",
+                              "Resize",
+                              "SizeChanged",
+                              "AutoSizeChanged"
+                    };
+                    Form myform = new Form ();
+                    myform.Visible = true;
+                    MyLabel2 l = new MyLabel2 ();
+                    myform.Controls.Add (l);
+                    l.AutoSize = true;
+
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
+            }
+
+          [Test]
+          public void BackgroundImageChangedEventsOrder ()
+            {
+                    string[] EventsWanted = {
+                            "HandleCreated",
+                              "BindingContextChanged",
+                              "BindingContextChanged",
+                              "Invalidated",
+                              "BackgroundImageChanged"
+                    };
+                    Form myform = new Form ();
+                    myform.Visible = true;
+                    MyLabel2 l = new MyLabel2 ();
+                    myform.Controls.Add (l);
+                    l.BackgroundImage = Image.FromFile ("Test/System.Windows.Forms/bitmaps/a.png");
+
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
+            }
+
+          [Test]
+          public void ImeModeChangedChangedEventsOrder ()
+            {
+                    string[] EventsWanted = {
+                            "HandleCreated",
+                              "BindingContextChanged",
+                              "BindingContextChanged",
+                              "ImeModeChanged"
+                    };
+                    Form myform = new Form ();
+                    myform.Visible = true;
+                    MyLabel2 l = new MyLabel2 ();
+                    myform.Controls.Add (l);
+                    l.ImeMode = ImeMode.Katakana;
+
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
+            }
+
+          [Test]
+          public void KeyPressEventsOrder ()
+            {
+                    string[] EventsWanted = {
+                            "HandleCreated",
+                              "BindingContextChanged",
+                              "BindingContextChanged",
+                              "KeyDown,A",
+                              "KeyPress,a",
+                              "KeyUp,A"
+                    };
+                    Form myform = new Form ();
+                    myform.Visible = true;
+                    MyLabel2 l = new MyLabel2 ();
+                    myform.Controls.Add (l);
+                    l.KeyPressA ();
+
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
+            }
+
+          [Test]
+          public void TabStopChangedEventsOrder ()
+            {
+                    string[] EventsWanted = {
+                            "HandleCreated",
+                              "BindingContextChanged",
+                              "BindingContextChanged"
+                    };
+                    Form myform = new Form ();
+                    myform.Visible = true;
+                    MyLabel2 l = new MyLabel2 ();
+                    myform.Controls.Add (l);
+                    l.TabStop = true;
+
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
+            }
+
+          [Test]
+          public void TextAlignChangedEventsOrder ()
+            {
+                    string[] EventsWanted = {
+                            "HandleCreated",
+                              "BindingContextChanged",
+                              "BindingContextChanged",
+                              "Invalidated"
+                    };
+                    Form myform = new Form ();
+                    myform.Visible = true;
+                    MyLabel2 l = new MyLabel2 ();
+                    myform.Controls.Add (l);
+                    l.TextAlign = ContentAlignment.TopRight;
+
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
+            }
+
+          [Test]
+          public void PaintEventsOrder ()
+            {
+                    string[] EventsWanted = {
+                            "HandleCreated",
+                              "BindingContextChanged",
+                              "BindingContextChanged",
+                              "Invalidated",
+                              "Invalidated",
+                              "Paint"
+                    };
+                    Form myform = new Form ();
+                    myform.Visible = true;
+                    MyLabel2 l = new MyLabel2 ();
+                    myform.Controls.Add (l);
+                    l.TextAlign = ContentAlignment.TopRight;
+                    l.Refresh ();
+                    Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
+            }
+
+   }
+
+}