2006-05-31 Peter Dennis Bartok <pbartok@novell.com>
[mono.git] / mcs / class / Managed.Windows.Forms / Test / System.Windows.Forms / LabelTest.cs
index a6bc04701631a63c1ece4844b8d67c19cde13907..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
-   internal enum WndMsg {\r
-          WM_NULL                   = 0x0000,\r
-            WM_CREATE                 = 0x0001,\r
-            WM_DESTROY                = 0x0002,\r
-            WM_MOVE                   = 0x0003,\r
-            WM_SIZE                   = 0x0005,\r
-            WM_ACTIVATE               = 0x0006,\r
-            WM_SETFOCUS               = 0x0007,\r
-            WM_KILLFOCUS              = 0x0008,\r
-            //public const uint WM_SETVISIBLE           = 0x0009;\r
-            WM_ENABLE                 = 0x000A,\r
-            WM_SETREDRAW              = 0x000B,\r
-            WM_SETTEXT                = 0x000C,\r
-            WM_GETTEXT                = 0x000D,\r
-            WM_GETTEXTLENGTH          = 0x000E,\r
-            WM_PAINT                  = 0x000F,\r
-            WM_CLOSE                  = 0x0010,\r
-            WM_QUERYENDSESSION        = 0x0011,\r
-            WM_QUIT                   = 0x0012,\r
-            WM_QUERYOPEN              = 0x0013,\r
-            WM_ERASEBKGND             = 0x0014,\r
-            WM_SYSCOLORCHANGE         = 0x0015,\r
-            WM_ENDSESSION             = 0x0016,\r
-            //public const uint WM_SYSTEMERROR          = 0x0017;\r
-            WM_SHOWWINDOW             = 0x0018,\r
-            WM_CTLCOLOR               = 0x0019,\r
-            WM_WININICHANGE           = 0x001A,\r
-            WM_SETTINGCHANGE          = 0x001A,\r
-            WM_DEVMODECHANGE          = 0x001B,\r
-            WM_ACTIVATEAPP            = 0x001C,\r
-            WM_FONTCHANGE             = 0x001D,\r
-            WM_TIMECHANGE             = 0x001E,\r
-            WM_CANCELMODE             = 0x001F,\r
-            WM_SETCURSOR              = 0x0020,\r
-            WM_MOUSEACTIVATE          = 0x0021,\r
-            WM_CHILDACTIVATE          = 0x0022,\r
-            WM_QUEUESYNC              = 0x0023,\r
-            WM_GETMINMAXINFO          = 0x0024,\r
-            WM_PAINTICON              = 0x0026,\r
-            WM_ICONERASEBKGND         = 0x0027,\r
-            WM_NEXTDLGCTL             = 0x0028,\r
-            //public const uint WM_ALTTABACTIVE         = 0x0029;\r
-            WM_SPOOLERSTATUS          = 0x002A,\r
-            WM_DRAWITEM               = 0x002B,\r
-            WM_MEASUREITEM            = 0x002C,\r
-            WM_DELETEITEM             = 0x002D,\r
-            WM_VKEYTOITEM             = 0x002E,\r
-            WM_CHARTOITEM             = 0x002F,\r
-            WM_SETFONT                = 0x0030,\r
-            WM_GETFONT                = 0x0031,\r
-            WM_SETHOTKEY              = 0x0032,\r
-            WM_GETHOTKEY              = 0x0033,\r
-            //public const uint WM_FILESYSCHANGE        = 0x0034;\r
-            //public const uint WM_ISACTIVEICON         = 0x0035;\r
-            //public const uint WM_QUERYPARKICON        = 0x0036;\r
-            WM_QUERYDRAGICON          = 0x0037,\r
-            WM_COMPAREITEM            = 0x0039,\r
-            //public const uint WM_TESTING              = 0x003a;\r
-            //public const uint WM_OTHERWINDOWCREATED = 0x003c;\r
-            WM_GETOBJECT              = 0x003D,\r
-            //public const uint WM_ACTIVATESHELLWINDOW        = 0x003e;\r
-            WM_COMPACTING             = 0x0041,\r
-            WM_COMMNOTIFY             = 0x0044 ,\r
-            WM_WINDOWPOSCHANGING      = 0x0046,\r
-            WM_WINDOWPOSCHANGED       = 0x0047,\r
-            WM_POWER                  = 0x0048,\r
-            WM_COPYDATA               = 0x004A,\r
-            WM_CANCELJOURNAL          = 0x004B,\r
-            WM_NOTIFY                 = 0x004E,\r
-            WM_INPUTLANGCHANGEREQUEST = 0x0050,\r
-            WM_INPUTLANGCHANGE        = 0x0051,\r
-            WM_TCARD                  = 0x0052,\r
-            WM_HELP                   = 0x0053,\r
-            WM_USERCHANGED            = 0x0054,\r
-            WM_NOTIFYFORMAT           = 0x0055,\r
-            WM_CONTEXTMENU            = 0x007B,\r
-            WM_STYLECHANGING          = 0x007C,\r
-            WM_STYLECHANGED           = 0x007D,\r
-            WM_DISPLAYCHANGE          = 0x007E,\r
-            WM_GETICON                = 0x007F,\r
-\r
-            // Non-Client messages\r
-            WM_SETICON                = 0x0080,\r
-            WM_NCCREATE               = 0x0081,\r
-            WM_NCDESTROY              = 0x0082,\r
-            WM_NCCALCSIZE             = 0x0083,\r
-            WM_NCHITTEST              = 0x0084,\r
-            WM_NCPAINT                = 0x0085,\r
-            WM_NCACTIVATE             = 0x0086,\r
-            WM_GETDLGCODE             = 0x0087,\r
-            WM_SYNCPAINT              = 0x0088,\r
-            //public const uint WM_SYNCTASK       = 0x0089;\r
-            WM_NCMOUSEMOVE            = 0x00A0,\r
-            WM_NCLBUTTONDOWN          = 0x00A1,\r
-            WM_NCLBUTTONUP            = 0x00A2,\r
-            WM_NCLBUTTONDBLCLK        = 0x00A3,\r
-            WM_NCRBUTTONDOWN          = 0x00A4,\r
-            WM_NCRBUTTONUP            = 0x00A5,\r
-            WM_NCRBUTTONDBLCLK        = 0x00A6,\r
-            WM_NCMBUTTONDOWN          = 0x00A7,\r
-            WM_NCMBUTTONUP            = 0x00A8,\r
-            WM_NCMBUTTONDBLCLK        = 0x00A9,\r
-            //public const uint WM_NCXBUTTONDOWN    = 0x00ab;\r
-            //public const uint WM_NCXBUTTONUP      = 0x00ac;\r
-            //public const uint WM_NCXBUTTONDBLCLK  = 0x00ad;\r
-            WM_KEYDOWN                = 0x0100,\r
-            WM_KEYFIRST               = 0x0100,\r
-            WM_KEYUP                  = 0x0101,\r
-            WM_CHAR                   = 0x0102,\r
-            WM_DEADCHAR               = 0x0103,\r
-            WM_SYSKEYDOWN             = 0x0104,\r
-            WM_SYSKEYUP               = 0x0105,\r
-            WM_SYSCHAR                = 0x0106,\r
-            WM_SYSDEADCHAR            = 0x0107,\r
-            WM_KEYLAST                = 0x0108,\r
-            WM_IME_STARTCOMPOSITION   = 0x010D,\r
-            WM_IME_ENDCOMPOSITION     = 0x010E,\r
-            WM_IME_COMPOSITION        = 0x010F,\r
-            WM_IME_KEYLAST            = 0x010F,\r
-            WM_INITDIALOG             = 0x0110,\r
-            WM_COMMAND                = 0x0111,\r
-            WM_SYSCOMMAND             = 0x0112,\r
-            WM_TIMER                  = 0x0113,\r
-            WM_HSCROLL                = 0x0114,\r
-            WM_VSCROLL                = 0x0115,\r
-            WM_INITMENU               = 0x0116,\r
-            WM_INITMENUPOPUP          = 0x0117,\r
-            //public const uint WM_SYSTIMER       = 0x0118;\r
-            WM_MENUSELECT             = 0x011F,\r
-            WM_MENUCHAR               = 0x0120,\r
-            WM_ENTERIDLE              = 0x0121,\r
-            WM_MENURBUTTONUP          = 0x0122,\r
-            WM_MENUDRAG               = 0x0123,\r
-            WM_MENUGETOBJECT          = 0x0124,\r
-            WM_UNINITMENUPOPUP        = 0x0125,\r
-            WM_MENUCOMMAND            = 0x0126,\r
-            //public const uint WM_CHANGEUISTATE    = 0x0127;\r
-            //public const uint WM_UPDATEUISTATE    = 0x0128;\r
-            //public const uint WM_QUERYUISTATE     = 0x0129;\r
-            //\r
-            //public const uint WM_LBTRACKPOINT     = 0x0131;\r
-            WM_CTLCOLORMSGBOX         = 0x0132,\r
-            WM_CTLCOLOREDIT           = 0x0133,\r
-            WM_CTLCOLORLISTBOX        = 0x0134,\r
-            WM_CTLCOLORBTN            = 0x0135,\r
-            WM_CTLCOLORDLG            = 0x0136,\r
-            WM_CTLCOLORSCROLLBAR      = 0x0137,\r
-            WM_CTLCOLORSTATIC         = 0x0138,\r
-            WM_MOUSEMOVE              = 0x0200,\r
-            WM_MOUSEFIRST                     = 0x0200,\r
-            WM_LBUTTONDOWN            = 0x0201,\r
-            WM_LBUTTONUP              = 0x0202,\r
-            WM_LBUTTONDBLCLK          = 0x0203,\r
-            WM_RBUTTONDOWN            = 0x0204,\r
-            WM_RBUTTONUP              = 0x0205,\r
-            WM_RBUTTONDBLCLK          = 0x0206,\r
-            WM_MBUTTONDOWN            = 0x0207,\r
-            WM_MBUTTONUP              = 0x0208,\r
-            WM_MBUTTONDBLCLK          = 0x0209,\r
-            WM_MOUSEWHEEL             = 0x020A,\r
-            WM_MOUSELAST             = 0x020D,\r
-            //public const uint WM_XBUTTONDOWN      = 0x020B;\r
-            //public const uint WM_XBUTTONUP        = 0x020C;\r
-            //public const uint WM_XBUTTONDBLCLK    = 0x020D;\r
-            WM_PARENTNOTIFY           = 0x0210,\r
-            WM_ENTERMENULOOP          = 0x0211,\r
-            WM_EXITMENULOOP           = 0x0212,\r
-            WM_NEXTMENU               = 0x0213,\r
-            WM_SIZING                 = 0x0214,\r
-            WM_CAPTURECHANGED         = 0x0215,\r
-            WM_MOVING                 = 0x0216,\r
-            //public const uint WM_POWERBROADCAST   = 0x0218;\r
-            WM_DEVICECHANGE           = 0x0219,\r
-            WM_MDICREATE              = 0x0220,\r
-            WM_MDIDESTROY             = 0x0221,\r
-            WM_MDIACTIVATE            = 0x0222,\r
-            WM_MDIRESTORE             = 0x0223,\r
-            WM_MDINEXT                = 0x0224,\r
-            WM_MDIMAXIMIZE            = 0x0225,\r
-            WM_MDITILE                = 0x0226,\r
-            WM_MDICASCADE             = 0x0227,\r
-            WM_MDIICONARRANGE         = 0x0228,\r
-            WM_MDIGETACTIVE           = 0x0229,\r
-       /* D&D messages */\r
-            //public const uint WM_DROPOBJECT     = 0x022A;\r
-            //public const uint WM_QUERYDROPOBJECT  = 0x022B;\r
-            //public const uint WM_BEGINDRAG      = 0x022C;\r
-            //public const uint WM_DRAGLOOP       = 0x022D;\r
-            //public const uint WM_DRAGSELECT     = 0x022E;\r
-            //public const uint WM_DRAGMOVE       = 0x022F;\r
-            WM_MDISETMENU             = 0x0230,\r
-            WM_ENTERSIZEMOVE          = 0x0231,\r
-            WM_EXITSIZEMOVE           = 0x0232,\r
-            WM_DROPFILES              = 0x0233,\r
-            WM_MDIREFRESHMENU         = 0x0234,\r
-            WM_IME_SETCONTEXT         = 0x0281,\r
-            WM_IME_NOTIFY             = 0x0282,\r
-            WM_IME_CONTROL            = 0x0283,\r
-            WM_IME_COMPOSITIONFULL    = 0x0284,\r
-            WM_IME_SELECT             = 0x0285,\r
-            WM_IME_CHAR               = 0x0286,\r
-            WM_IME_REQUEST            = 0x0288,\r
-            WM_IME_KEYDOWN            = 0x0290,\r
-            WM_IME_KEYUP              = 0x0291,\r
-            WM_MOUSEHOVER             = 0x02A1,\r
-            WM_MOUSELEAVE             = 0x02A3,\r
-            WM_CUT                    = 0x0300,\r
-            WM_COPY                   = 0x0301,\r
-            WM_PASTE                  = 0x0302,\r
-            WM_CLEAR                  = 0x0303,\r
-            WM_UNDO                   = 0x0304,\r
-            WM_RENDERFORMAT           = 0x0305,\r
-            WM_RENDERALLFORMATS       = 0x0306,\r
-            WM_DESTROYCLIPBOARD       = 0x0307,\r
-            WM_DRAWCLIPBOARD          = 0x0308,\r
-            WM_PAINTCLIPBOARD         = 0x0309,\r
-            WM_VSCROLLCLIPBOARD       = 0x030A,\r
-            WM_SIZECLIPBOARD          = 0x030B,\r
-            WM_ASKCBFORMATNAME        = 0x030C,\r
-            WM_CHANGECBCHAIN          = 0x030D,\r
-            WM_HSCROLLCLIPBOARD       = 0x030E,\r
-            WM_QUERYNEWPALETTE        = 0x030F,\r
-            WM_PALETTEISCHANGING      = 0x0310,\r
-            WM_PALETTECHANGED         = 0x0311,\r
-            WM_HOTKEY                 = 0x0312,\r
-            WM_PRINT                  = 0x0317,\r
-            WM_PRINTCLIENT            = 0x0318,\r
-            WM_HANDHELDFIRST          = 0x0358,\r
-            WM_HANDHELDLAST           = 0x035F,\r
-            WM_AFXFIRST               = 0x0360,\r
-            WM_AFXLAST                = 0x037F,\r
-            WM_PENWINFIRST            = 0x0380,\r
-            WM_PENWINLAST             = 0x038F,\r
-            WM_APP                    = 0x8000,\r
-            WM_USER                   = 0x0400,\r
-\r
-            // Our "private" ones\r
-            WM_MOUSE_ENTER            = 0x0401,\r
-            WM_MOUSE_LEAVE            = 0x0402,\r
-            WM_ASYNC_MESSAGE          = 0x0403,\r
-            WM_REFLECT                = WM_USER + 0x1c00\r
-   }\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));
+            }
+
+   }
+
+}