// // 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 LabelTest { [Test] public void LabelAccessibility () { Label l = new Label (); Assert.IsNotNull (l.AccessibilityObject, "1"); } [Test] public void PreferredWidth () { Label l = new Label(); // preferred width is 0 by default Assert.AreEqual (0, l.PreferredWidth, "2"); // and after text is changed it's something else l.Text = "hi"; Assert.IsTrue (l.PreferredWidth > 0, "3"); // now add it to a form and see Form f = new Form (); f.ShowInTaskbar = false; l.Text = ""; f.Controls.Add (l); f.Show (); Assert.AreEqual (0, l.PreferredWidth, "4"); l.Text = "hi"; Assert.IsTrue (l.PreferredWidth > 0, "5"); f.Dispose (); } [Test] public void PreferredHeight () { Label l = new Label(); Assert.AreEqual (l.PreferredHeight, (l.Font.Height + 3), "#1"); l.BorderStyle = BorderStyle.None; Assert.AreEqual (l.PreferredHeight, (l.Font.Height + 3), "#2"); l.BorderStyle = BorderStyle.FixedSingle; Assert.AreEqual (l.PreferredHeight, (l.Font.Height + 6), "#3"); l.BorderStyle = BorderStyle.Fixed3D; Assert.AreEqual (l.PreferredHeight, (l.Font.Height + 6), "#4"); #if NET_2_0 l.UseCompatibleTextRendering = false; l.BorderStyle = BorderStyle.None; Assert.AreEqual (l.PreferredHeight, (l.Font.Height), "#5"); l.BorderStyle = BorderStyle.FixedSingle; Assert.AreEqual (l.PreferredHeight, (l.Font.Height), "#6"); l.BorderStyle = BorderStyle.Fixed3D; Assert.AreEqual (l.PreferredHeight, (l.Font.Height), "#7"); #endif } [Test] public void SizesTest () { Form myform = new Form (); Label l1 = new Label (); l1.Text = "Test"; Label l2 = new Label (); l2.Text = "Test"; Label l3 = new Label (); l3.Text = "Test three"; Label l4 = new Label (); l4.Text = String.Format ("Test four{0}with line breaks", Environment.NewLine); myform.Controls.Add (l1); myform.Controls.Add (l2); myform.Controls.Add (l3); myform.Controls.Add (l4); myform.Show (); l2.Font = new Font (l1.Font.FontFamily, l1.Font.Size + 5, l1.Font.Style); // Height: autosize = false Assert.AreEqual (l1.Height, l2.Height, "#1"); Assert.AreEqual (l1.Height, l3.Height, "#2"); Assert.AreEqual (l1.Height, l4.Height, "#3"); // Width: autosize = false Assert.AreEqual (l1.Width, l2.Width, "#4"); Assert.AreEqual (l1.Width, l3.Width, "#5"); Assert.AreEqual (l1.Width, l4.Width, "#6"); l1.AutoSize = true; l2.AutoSize = true; l3.AutoSize = true; l4.AutoSize = true; // Height: autosize = false Assert.IsFalse (l1.Height.Equals (l2.Height), "#7"); Assert.IsTrue (l1.Height.Equals (l3.Height), "#8"); #if NET_2_0 Assert.IsTrue ((l4.Height > l1.Height), "#9"); #else Assert.IsTrue (l1.Height.Equals (l4.Height), "#9"); #endif // Width: autosize = false Assert.IsFalse (l1.Width.Equals (l2.Width), "#10"); Assert.IsFalse (l1.Width.Equals (l3.Width), "#11"); myform.Dispose(); } [Test] public void StyleTest () { Label l = new Label (); Assert.IsFalse (TestHelper.IsStyleSet (l, WindowStyles.WS_BORDER), "#1"); Assert.IsFalse (TestHelper.IsExStyleSet (l, WindowExStyles.WS_EX_CLIENTEDGE), "#2"); Assert.IsFalse (TestHelper.IsExStyleSet (l, WindowExStyles.WS_EX_STATICEDGE), "#3"); l.BorderStyle = BorderStyle.None; Assert.IsFalse (TestHelper.IsStyleSet (l, WindowStyles.WS_BORDER), "#4"); Assert.IsFalse (TestHelper.IsExStyleSet (l, WindowExStyles.WS_EX_CLIENTEDGE), "#5"); Assert.IsFalse (TestHelper.IsExStyleSet (l, WindowExStyles.WS_EX_STATICEDGE), "#6"); l.BorderStyle = BorderStyle.FixedSingle; Assert.IsTrue (TestHelper.IsStyleSet (l, WindowStyles.WS_BORDER), "#7"); Assert.IsFalse (TestHelper.IsExStyleSet (l, WindowExStyles.WS_EX_CLIENTEDGE), "#8"); Assert.IsFalse (TestHelper.IsExStyleSet (l, WindowExStyles.WS_EX_STATICEDGE), "#9"); l.BorderStyle = BorderStyle.Fixed3D; Assert.IsFalse (TestHelper.IsStyleSet (l, WindowStyles.WS_BORDER), "#10"); Assert.IsFalse (TestHelper.IsExStyleSet (l, WindowExStyles.WS_EX_CLIENTEDGE), "#11"); Assert.IsTrue (TestHelper.IsExStyleSet (l, WindowExStyles.WS_EX_STATICEDGE), "#12"); } [Test] public void BoundsTest () { Label l = new Label (); Assert.AreEqual (new Rectangle (0,0,100,23), l.Bounds, "1"); Assert.AreEqual (new Rectangle (0,0,100,23), l.ClientRectangle, "2"); Assert.AreEqual (new Size (100,23), l.ClientSize, "3"); } [Test] public void PubPropTest () { Label l = new Label (); Assert.IsFalse (l.AutoSize, "#3"); Assert.AreEqual ("Control", l.BackColor.Name , "#6"); Assert.IsNull (l.BackgroundImage, "#8"); Assert.AreEqual (BorderStyle.None , l.BorderStyle, "#9"); Assert.IsNull (l.Container, "#19"); Assert.IsFalse (l.ContainsFocus, "#20"); Assert.IsNull (l.ContextMenu, "#21"); Assert.IsFalse (l.Created, "#23"); Assert.AreEqual (Cursors.Default , l.Cursor, "#24"); Assert.IsNotNull (l.DataBindings, "#25"); Assert.AreEqual (DockStyle.None, l.Dock, "#28"); Assert.IsTrue (l.Enabled, "#29"); Assert.AreEqual (FlatStyle.Standard, l.FlatStyle, "#30"); Assert.IsFalse (l.Focused, "#31"); Assert.AreEqual (FontFamily.GenericSansSerif, l.Font.FontFamily, "#32"); Assert.AreEqual (SystemColors.ControlText, l.ForeColor, "#33"); Assert.IsFalse (l.HasChildren, "#35"); Assert.IsNull (l.Image, "#37"); Assert.AreEqual (ContentAlignment.MiddleCenter, l.ImageAlign, "#38"); Assert.AreEqual (-1, l.ImageIndex, "#39"); Assert.IsNull (l.ImageList, "#40"); Assert.IsFalse (l.InvokeRequired, "#42"); Assert.IsFalse (l.IsAccessible, "#43"); Assert.IsFalse (l.IsDisposed, "#44"); Assert.IsNull (l.Parent, "#49"); Assert.IsFalse (l.RecreatingHandle, "#54"); Assert.IsNull (l.Region, "#55"); Assert.AreEqual (RightToLeft.No, l.RightToLeft, "#57"); Assert.IsNull (l.Site, "#58"); Assert.AreEqual (0, l.TabIndex, "#60"); Assert.IsNull (l.Tag, "#61"); Assert.AreEqual ("", l.Text, "#62"); Assert.AreEqual (ContentAlignment.TopLeft, l.TextAlign, "#63"); Assert.IsNull (l.TopLevelControl, "#65"); Assert.IsTrue (l.UseMnemonic, "#66"); Assert.IsTrue (l.Visible, "#67"); } [Test] public void LabelEqualsTest () { Label s1 = new Label (); Label s2 = new Label (); s1.Text = "abc"; s2.Text = "abc"; Assert.IsFalse (s1.Equals (s2), "#69"); Assert.IsTrue (s1.Equals (s1), "#70"); } [Test] public void LabelScaleTest () { Label r1 = new Label (); r1.Width = 40; r1.Height = 20 ; r1.Scale (2); Assert.AreEqual (80, r1.Width, "#71"); Assert.AreEqual (40, r1.Height, "#72"); } [Test] public void ToStringTest () { Label l = new Label (); l.Text = "My Label"; Assert.AreEqual ("System.Windows.Forms.Label, Text: My Label", l.ToString (), "T1"); } #if NET_2_0 [Test] public void LabelMargin () { Assert.AreEqual (new Padding (3, 0, 3, 0), new Label ().Margin, "A1"); } #endif } [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; } #if NET_2_0 [Ignore ("AutoSize moved to Control in 2.0, Label.AutoSize needs to be reworked a bit.")] #endif [Test] public void AutoSizeChangedChangedTest () { Form myform = new Form (); myform.ShowInTaskbar = false; 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; myform.Dispose(); } [Test] public void BackgroundImageChangedTest () { Form myform = new Form (); myform.ShowInTaskbar = false; 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; myform.Dispose(); } [Test] public void ImeModeChangedTest () { Form myform = new Form (); myform.ShowInTaskbar = false; 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; myform.Dispose(); } [Test] public void KeyDownTest () { Form myform = new Form (); myform.ShowInTaskbar = false; 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; myform.Dispose(); } [Test] public void TabStopChangedTest () { Form myform = new Form (); myform.ShowInTaskbar = false; 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; myform.Dispose(); } [Test] public void TextAlignChangedTest () { Form myform = new Form (); myform.ShowInTaskbar = false; 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; myform.Dispose(); } } 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.ShowInTaskbar = false; myform.Visible = true; MyLabel l = new MyLabel (); myform.Controls.Add (l); Assert.AreEqual (EventsWanted, ArrayListToString (l.Results)); myform.Dispose(); } [Test] public void SizeChangedEventsOrder () { string[] EventsWanted = { "OnHandleCreated", "OnBindingContextChanged", "OnBindingContextChanged", "OnSizeChanged", "OnResize", "OnInvalidated", "OnLayout" }; Form myform = new Form (); myform.ShowInTaskbar = false; myform.Visible = true; MyLabel l = new MyLabel (); myform.Controls.Add (l); l.Size = new Size (150, 20); Assert.AreEqual (EventsWanted, ArrayListToString (l.Results)); myform.Dispose(); } [Test] public void AutoSizeChangedEventsOrder () { string[] EventsWanted = { "OnHandleCreated", "OnBindingContextChanged", "OnBindingContextChanged", "OnSizeChanged", "OnResize", "OnInvalidated", "OnLayout", "OnAutoSizeChanged" }; Form myform = new Form (); myform.ShowInTaskbar = false; myform.Visible = true; MyLabel l = new MyLabel (); myform.Controls.Add (l); l.AutoSize = true; Assert.AreEqual (EventsWanted, ArrayListToString (l.Results)); myform.Dispose(); } [Test] public void BackgroundImageChangedEventsOrder () { string[] EventsWanted = { "OnHandleCreated", "OnBindingContextChanged", "OnBindingContextChanged", "OnBackgroundImageChanged", "OnInvalidated" }; Form myform = new Form (); myform.ShowInTaskbar = false; 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)); myform.Dispose(); } [Test] public void ImeModeChangedChangedEventsOrder () { string[] EventsWanted = { "OnHandleCreated", "OnBindingContextChanged", "OnBindingContextChanged", "OnImeModeChanged" }; Form myform = new Form (); myform.ShowInTaskbar = false; myform.Visible = true; MyLabel l = new MyLabel (); myform.Controls.Add (l); l.ImeMode = ImeMode.Katakana; Assert.AreEqual (EventsWanted, ArrayListToString (l.Results)); myform.Dispose(); } [Test] public void KeyPressEventsOrder () { string[] EventsWanted = { "OnHandleCreated", "OnBindingContextChanged", "OnBindingContextChanged", "OnKeyDown,A", "OnKeyPress,a", "OnKeyUp,A" }; Form myform = new Form (); myform.ShowInTaskbar = false; myform.Visible = true; MyLabel l = new MyLabel (); myform.Controls.Add (l); l.KeyPressA (); Assert.AreEqual (EventsWanted, ArrayListToString (l.Results)); myform.Dispose(); } [Test] public void TabStopChangedEventsOrder () { string[] EventsWanted = { "OnHandleCreated", "OnBindingContextChanged", "OnBindingContextChanged" }; Form myform = new Form (); myform.ShowInTaskbar = false; myform.Visible = true; MyLabel l = new MyLabel (); myform.Controls.Add (l); l.TabStop = true; PrintList("TabStopChanged", l.Results); Assert.AreEqual (EventsWanted, ArrayListToString (l.Results)); myform.Dispose(); } [Test] public void TextAlignChangedEventsOrder () { string[] EventsWanted = { "OnHandleCreated", "OnBindingContextChanged", "OnBindingContextChanged", "OnInvalidated" }; Form myform = new Form (); myform.ShowInTaskbar = false; myform.Visible = true; MyLabel l = new MyLabel (); myform.Controls.Add (l); l.TextAlign = ContentAlignment.TopRight; Assert.AreEqual (EventsWanted, ArrayListToString (l.Results)); myform.Dispose(); } [Test] public void InvalidateEventsOrder () { Rectangle rect = new Rectangle (new Point (0,0), new Size (2, 2)); Form myform = new Form (); myform.ShowInTaskbar = false; 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)); myform.Dispose(); } [Test] public void PaintEventsOrder () { string[] EventsWanted = { "OnHandleCreated", "OnBindingContextChanged", "OnBindingContextChanged", "OnInvalidated", "OnInvalidated", "OnPaint" }; Form myform = new Form (); myform.ShowInTaskbar = false; myform.Visible = true; MyLabel l = new MyLabel (); myform.Controls.Add (l); l.TextAlign = ContentAlignment.TopRight; l.Refresh (); Assert.AreEqual (EventsWanted, ArrayListToString (l.Results)); myform.Dispose(); } } 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.ShowInTaskbar = false; myform.Visible = true; MyLabel2 l = new MyLabel2 (); myform.Controls.Add (l); Assert.AreEqual (EventsWanted, ArrayListToString (l.Results)); myform.Dispose(); } [Test] public void SizeChangedEventsOrder () { string[] EventsWanted = { "HandleCreated", "BindingContextChanged", "BindingContextChanged", "Invalidated", "Layout", "Resize", "SizeChanged" }; Form myform = new Form (); myform.ShowInTaskbar = false; myform.Visible = true; MyLabel2 l = new MyLabel2 (); myform.Controls.Add (l); l.Size = new Size (150, 20); Assert.AreEqual (EventsWanted, ArrayListToString (l.Results)); myform.Dispose(); } [Test] public void AutoSizeChangedEventsOrder () { string[] EventsWanted = { "HandleCreated", "BindingContextChanged", "BindingContextChanged", "Invalidated", "Layout", "Resize", "SizeChanged", "AutoSizeChanged" }; Form myform = new Form (); myform.ShowInTaskbar = false; myform.Visible = true; MyLabel2 l = new MyLabel2 (); myform.Controls.Add (l); l.AutoSize = true; Assert.AreEqual (EventsWanted, ArrayListToString (l.Results)); myform.Dispose(); } [Test] public void BackgroundImageChangedEventsOrder () { string[] EventsWanted = { "HandleCreated", "BindingContextChanged", "BindingContextChanged", "Invalidated", "BackgroundImageChanged" }; Form myform = new Form (); myform.ShowInTaskbar = false; 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)); myform.Dispose(); } [Test] public void ImeModeChangedChangedEventsOrder () { string[] EventsWanted = { "HandleCreated", "BindingContextChanged", "BindingContextChanged", "ImeModeChanged" }; Form myform = new Form (); myform.ShowInTaskbar = false; myform.Visible = true; MyLabel2 l = new MyLabel2 (); myform.Controls.Add (l); l.ImeMode = ImeMode.Katakana; Assert.AreEqual (EventsWanted, ArrayListToString (l.Results)); myform.Dispose(); } [Test] public void KeyPressEventsOrder () { string[] EventsWanted = { "HandleCreated", "BindingContextChanged", "BindingContextChanged", "KeyDown,A", "KeyPress,a", "KeyUp,A" }; Form myform = new Form (); myform.ShowInTaskbar = false; myform.Visible = true; MyLabel2 l = new MyLabel2 (); myform.Controls.Add (l); l.KeyPressA (); Assert.AreEqual (EventsWanted, ArrayListToString (l.Results)); myform.Dispose(); } [Test] public void TabStopChangedEventsOrder () { string[] EventsWanted = { "HandleCreated", "BindingContextChanged", "BindingContextChanged" }; Form myform = new Form (); myform.ShowInTaskbar = false; myform.Visible = true; MyLabel2 l = new MyLabel2 (); myform.Controls.Add (l); l.TabStop = true; Assert.AreEqual (EventsWanted, ArrayListToString (l.Results)); myform.Dispose(); } [Test] public void TextAlignChangedEventsOrder () { string[] EventsWanted = { "HandleCreated", "BindingContextChanged", "BindingContextChanged", "Invalidated" }; Form myform = new Form (); myform.ShowInTaskbar = false; myform.Visible = true; MyLabel2 l = new MyLabel2 (); myform.Controls.Add (l); l.TextAlign = ContentAlignment.TopRight; Assert.AreEqual (EventsWanted, ArrayListToString (l.Results)); myform.Dispose(); } [Test] public void PaintEventsOrder () { string[] EventsWanted = { "HandleCreated", "BindingContextChanged", "BindingContextChanged", "Invalidated", "Invalidated", "Paint" }; Form myform = new Form (); myform.ShowInTaskbar = false; myform.Visible = true; MyLabel2 l = new MyLabel2 (); myform.Controls.Add (l); l.TextAlign = ContentAlignment.TopRight; l.Refresh (); Assert.AreEqual (EventsWanted, ArrayListToString (l.Results)); myform.Dispose(); } } }