Unit test for bug #821.
[mono.git] / mcs / class / Managed.Windows.Forms / Test / System.Windows.Forms / ControlHandleTest.cs
index 6ae338add2d9b36404d31bd0f6fa59c74cf49ca9..8da096caa3128a2d4303f17c404ec0d67fd289f7 100644 (file)
@@ -1,4 +1,3 @@
-#if NET_2_0
 // This test is designed to find exactly what conditions cause the control's
 // Handle to be created.
 using System;
@@ -10,7 +9,7 @@ using System.ComponentModel;
 namespace MonoTests.System.Windows.Forms
 {
        [TestFixture]
-       public class ControlHandleTest
+       public class ControlHandleTest : TestHelper
        {
                [Test]
                public void TestConstructors ()
@@ -62,18 +61,20 @@ namespace MonoTests.System.Windows.Forms
                        Assert.IsFalse (c.IsHandleCreated, "A5");
                        // If we don't reset the control, handle creation will fail
                        // because AllowDrop requires STAThread, which Nunit doesn't do
-                       c = new Control();      
+                       c = new Control();
                        o = c.Anchor;
                        c.Anchor = AnchorStyles.Right;
                        Assert.IsFalse (c.IsHandleCreated, "A6");
-#if !__MonoCS__
+#if !__MonoCS__ && NET_2_0
                        o = c.AutoScrollOffset;
                        c.AutoScrollOffset = new Point (40, 40);
                        Assert.IsFalse (c.IsHandleCreated, "A7");
 #endif
+#if NET_2_0
                        o = c.AutoSize;
                        c.AutoSize = true;
                        Assert.IsFalse (c.IsHandleCreated, "A8");
+#endif
                
                        // B
                        o = c.BackColor;
@@ -82,9 +83,11 @@ namespace MonoTests.System.Windows.Forms
                        o = c.BackgroundImage;
                        c.BackgroundImage = new Bitmap (1, 1);
                        Assert.IsFalse (c.IsHandleCreated, "A10");
+#if NET_2_0
                        o = c.BackgroundImageLayout;
                        c.BackgroundImageLayout = ImageLayout.Stretch;
                        Assert.IsFalse (c.IsHandleCreated, "A11");
+#endif
                        o = c.BindingContext;
                        c.BindingContext = new BindingContext ();
                        Assert.IsFalse (c.IsHandleCreated, "A12");
@@ -121,9 +124,11 @@ namespace MonoTests.System.Windows.Forms
                        o = c.ContextMenu;
                        c.ContextMenu = new ContextMenu ();
                        Assert.IsFalse (c.IsHandleCreated, "A24");
+#if NET_2_0
                        o = c.ContextMenuStrip;
                        c.ContextMenuStrip = new ContextMenuStrip ();
                        Assert.IsFalse (c.IsHandleCreated, "A25");
+#endif
                        o = c.Controls;
                        Assert.IsFalse (c.IsHandleCreated, "A26");
                        o = c.Created;
@@ -175,12 +180,14 @@ namespace MonoTests.System.Windows.Forms
                        Assert.IsFalse (c.IsHandleCreated, "A42");
                        o = c.IsDisposed;
                        Assert.IsFalse (c.IsHandleCreated, "A43");
-#if !__MonoCS__
+#if !__MonoCS__ && NET_2_0
                        o = c.IsMirrored;
                        Assert.IsFalse (c.IsHandleCreated, "A44");
 #endif
+#if NET_2_0
                        o = c.LayoutEngine;
                        Assert.IsFalse (c.IsHandleCreated, "A45");
+#endif
                        o = c.Left;
                        c.Left = 15;
                        Assert.IsFalse (c.IsHandleCreated, "A46");
@@ -189,6 +196,7 @@ namespace MonoTests.System.Windows.Forms
                        Assert.IsFalse (c.IsHandleCreated, "A47");
 
                        // M - N
+#if NET_2_0
                        o = c.Margin;
                        c.Margin = new Padding (6);
                        Assert.IsFalse (c.IsHandleCreated, "A48");
@@ -198,19 +206,24 @@ namespace MonoTests.System.Windows.Forms
                        o = c.MinimumSize;
                        c.MinimumSize = new Size (100, 100);
                        Assert.IsFalse (c.IsHandleCreated, "A50");
+#endif
                        o = c.Name;
                        c.Name = "web";
                        Assert.IsFalse (c.IsHandleCreated, "A51");
                        
                        // P - R
+#if NET_2_0
                        o = c.Padding;
                        c.Padding = new Padding (4);
                        Assert.IsFalse (c.IsHandleCreated, "A52");
+#endif
                        o = c.Parent;
                        c.Parent = new Control ();
                        Assert.IsFalse (c.IsHandleCreated, "A53");
+#if NET_2_0
                        o = c.PreferredSize;
                        Assert.IsFalse (c.IsHandleCreated, "A54");
+#endif
                        o = c.ProductName;
                        Assert.IsFalse (c.IsHandleCreated, "A55");
                        o = c.ProductVersion;
@@ -246,7 +259,7 @@ namespace MonoTests.System.Windows.Forms
                        Assert.IsFalse (c.IsHandleCreated, "A66");
                        o = c.TopLevelControl;
                        Assert.IsFalse (c.IsHandleCreated, "A67");
-#if !__MonoCS__
+#if !__MonoCS__ && NET_2_0
                        o = c.UseWaitCursor;
                        c.UseWaitCursor = true;
                        Assert.IsFalse (c.IsHandleCreated, "A68");
@@ -259,6 +272,8 @@ namespace MonoTests.System.Windows.Forms
                        Assert.IsFalse (c.IsHandleCreated, "A70");
                        o = c.WindowTarget;
                        Assert.IsFalse (c.IsHandleCreated, "A71");
+                       
+                       TestHelper.RemoveWarning (o);
                }
                
                [Test]
@@ -269,16 +284,19 @@ namespace MonoTests.System.Windows.Forms
                        ProtectedPropertyControl c = new ProtectedPropertyControl ();
 
                        object o;
-#if !__MonoCS__
+#if !__MonoCS__ && NET_2_0
                        o = c.PublicCanRaiseEvents;
                        Assert.IsFalse (c.IsHandleCreated, "A1");
 #endif
                        o = c.PublicCreateParams;
                        Assert.IsFalse (c.IsHandleCreated, "A2");
+#if NET_2_0
                        o = c.PublicDefaultCursor;
                        Assert.IsFalse (c.IsHandleCreated, "A3");
+#endif
                        o = c.PublicDefaultImeMode;
                        Assert.IsFalse (c.IsHandleCreated, "A4");
+#if NET_2_0
                        o = c.PublicDefaultMargin;
                        Assert.IsFalse (c.IsHandleCreated, "A5");
                        o = c.PublicDefaultMaximumSize;
@@ -292,6 +310,7 @@ namespace MonoTests.System.Windows.Forms
                        o = c.PublicDoubleBuffered;
                        c.PublicDoubleBuffered = !c.PublicDoubleBuffered;
                        Assert.IsFalse (c.IsHandleCreated, "A10");
+#endif
                        o = c.PublicFontHeight;
                        c.PublicFontHeight = c.PublicFontHeight + 1;
                        Assert.IsFalse (c.IsHandleCreated, "A11");
@@ -300,7 +319,7 @@ namespace MonoTests.System.Windows.Forms
                        o = c.PublicResizeRedraw;
                        c.PublicResizeRedraw = !c.PublicResizeRedraw;
                        Assert.IsFalse (c.IsHandleCreated, "A13");
-#if !__MonoCS__
+#if !__MonoCS__ && NET_2_0
                        o = c.PublicScaleChildren;
                        Assert.IsFalse (c.IsHandleCreated, "A14");
 #endif
@@ -308,6 +327,8 @@ namespace MonoTests.System.Windows.Forms
                        Assert.IsFalse (c.IsHandleCreated, "A15");
                        o = c.PublicShowKeyboardCues;
                        Assert.IsFalse (c.IsHandleCreated, "A16");
+                       
+                       TestHelper.RemoveWarning (o);
                }
                 
                Control invokecontrol = new Control ();
@@ -340,9 +361,9 @@ namespace MonoTests.System.Windows.Forms
                        c.Dispose ();
                        Assert.IsFalse (c.IsHandleCreated, "A5");
                        c = new Control ();
-                       DragDropEffects d = c.DoDragDrop ("yo", DragDropEffects.None);
-                       Assert.IsFalse (c.IsHandleCreated, "A6");
-                       Assert.AreEqual (DragDropEffects.None, d, "A6b");
+                       //DragDropEffects d = c.DoDragDrop ("yo", DragDropEffects.None);
+                       //Assert.IsFalse (c.IsHandleCreated, "A6");
+                       //Assert.AreEqual (DragDropEffects.None, d, "A6b");
                        //Bitmap b = new Bitmap (100, 100);
                        //c.DrawToBitmap (b, new Rectangle (0, 0, 100, 100));
                        //Assert.IsFalse (c.IsHandleCreated, "A7");
@@ -359,8 +380,10 @@ namespace MonoTests.System.Windows.Forms
                        Assert.IsFalse (c.IsHandleCreated, "A11");
                        c.GetNextControl (new Control (), true);
                        Assert.IsFalse (c.IsHandleCreated, "A12");
+#if NET_2_0
                        c.GetPreferredSize (Size.Empty);
                        Assert.IsFalse (c.IsHandleCreated, "A13");
+#endif
                        c.Hide ();
                        Assert.IsFalse (c.IsHandleCreated, "A14");
                        c.Invalidate ();
@@ -405,8 +428,10 @@ namespace MonoTests.System.Windows.Forms
                        Assert.IsFalse (c.IsHandleCreated, "A31");
                        c.ResumeLayout ();
                        Assert.IsFalse (c.IsHandleCreated, "A32");
+#if NET_2_0
                        c.Scale (new SizeF (1.5f, 1.5f));
                        Assert.IsFalse (c.IsHandleCreated, "A33");
+#endif
                        c.Select ();
                        Assert.IsFalse (c.IsHandleCreated, "A34");
                        c.SelectNextControl (new Control (), true, true, true, true);
@@ -422,11 +447,16 @@ namespace MonoTests.System.Windows.Forms
                {
                        Control c = new Control ();
                        Assert.IsFalse (c.IsHandleCreated, "A1");
-                       c.HandleCreated += delegate (object sender, EventArgs e) { Console.WriteLine (Environment.StackTrace); };
+                       c.HandleCreated += new EventHandler (HandleCreated_WriteStackTrace);
                        c.Show ();
                        Assert.IsFalse (c.IsHandleCreated, "A2");
                }
 
+               void HandleCreated_WriteStackTrace (object sender, EventArgs e)
+               {
+                       Console.WriteLine (Environment.StackTrace);
+               }
+
                public delegate void InvokeDelegate ();
                public void InvokeMethod () { invokecontrol.Text = "methodinvoked"; }
                
@@ -440,22 +470,26 @@ namespace MonoTests.System.Windows.Forms
                
                private class ProtectedPropertyControl : Control
                {
-#if !__MonoCS__
+#if !__MonoCS__ && NET_2_0
                        public bool PublicCanRaiseEvents { get { return base.CanRaiseEvents; } }
 #endif
                        public CreateParams PublicCreateParams { get { return base.CreateParams; } }
+#if NET_2_0
                        public Cursor PublicDefaultCursor { get { return base.DefaultCursor; } }
+#endif
                        public ImeMode PublicDefaultImeMode { get { return base.DefaultImeMode; } }
+#if NET_2_0
                        public Padding PublicDefaultMargin { get { return base.DefaultMargin; } }
                        public Size PublicDefaultMaximumSize { get { return base.DefaultMaximumSize; } }
                        public Size PublicDefaultMinimumSize { get { return base.DefaultMinimumSize; } }
                        public Padding PublicDefaultPadding { get { return base.DefaultPadding; } }
                        public Size PublicDefaultSize { get { return base.DefaultSize; } }
                        public bool PublicDoubleBuffered { get { return base.DoubleBuffered; } set { base.DoubleBuffered = value; } }
+#endif
                        public int PublicFontHeight { get { return base.FontHeight; } set { base.FontHeight = value; } }
                        public bool PublicRenderRightToLeft { get { return base.RenderRightToLeft; } }
                        public bool PublicResizeRedraw { get { return base.ResizeRedraw; } set { base.ResizeRedraw = value; } }
-#if !__MonoCS__
+#if !__MonoCS__ && NET_2_0
                        public bool PublicScaleChildren { get { return base.ScaleChildren; } }
 #endif
                        public bool PublicShowFocusCues { get { return base.ShowFocusCues; } }
@@ -473,7 +507,11 @@ namespace MonoTests.System.Windows.Forms
                        ProtectedMethodsControl c = new ProtectedMethodsControl ();
                        
                        c.PublicAccessibilityNotifyClients (AccessibleEvents.Focus, 0);
+#if NET_2_0
                        Assert.IsFalse (c.IsHandleCreated, "A1");
+#else
+                       Assert.IsTrue (c.IsHandleCreated, "A1");
+#endif
                        c.PublicCreateAccessibilityInstance ();
                        Assert.IsTrue (c.IsHandleCreated, "A2");
                        c = new ProtectedMethodsControl (); 
@@ -485,9 +523,11 @@ namespace MonoTests.System.Windows.Forms
                        c.PublicDestroyHandle ();
                        Assert.IsFalse (c.IsHandleCreated, "A5");
                        c = new ProtectedMethodsControl ();
+#if NET_2_0
                        c.PublicGetAccessibilityObjectById (0);
                        Assert.IsFalse (c.IsHandleCreated, "A6");
-#if !__MonoCS__
+#endif
+#if !__MonoCS__ && NET_2_0
                        c.PublicGetAutoSizeMode ();
                        Assert.IsFalse (c.IsHandleCreated, "A7");
                        c.PublicGetScaledBounds (new Rectangle (0, 0, 100, 100), new SizeF (1.5f, 1.5f), BoundsSpecified.All);
@@ -516,57 +556,68 @@ namespace MonoTests.System.Windows.Forms
                        Assert.IsFalse (c.IsHandleCreated, "A18");
                        c.PublicNotifyInvalidate (Rectangle.Empty);
                        Assert.IsFalse (c.IsHandleCreated, "A19");
-                       c.PublicRaiseDragEvent (null, null);
+                       Form f = new Form ();
+                       f.Controls.Add (c);
+                       c.PublicOnVisibleChanged (EventArgs.Empty);
                        Assert.IsFalse (c.IsHandleCreated, "A20");
-                       c.PublicRaiseKeyEvent (null, null);
+                       c = new ProtectedMethodsControl ();
+                       c.PublicRaiseDragEvent (null, null);
                        Assert.IsFalse (c.IsHandleCreated, "A21");
-                       c.PublicRaiseMouseEvent (null, null);
+                       c.PublicRaiseKeyEvent (null, null);
                        Assert.IsFalse (c.IsHandleCreated, "A22");
-                       c.PublicRaisePaintEvent (null, null);
+                       c.PublicRaiseMouseEvent (null, null);
                        Assert.IsFalse (c.IsHandleCreated, "A23");
-                       c.PublicRecreateHandle ();
+                       c.PublicRaisePaintEvent (null, null);
                        Assert.IsFalse (c.IsHandleCreated, "A24");
-                       c.PublicResetMouseEventArgs ();
+                       c.PublicRecreateHandle ();
                        Assert.IsFalse (c.IsHandleCreated, "A25");
-                       c.PublicRtlTranslateAlignment (ContentAlignment.BottomLeft);
+                       c.PublicResetMouseEventArgs ();
                        Assert.IsFalse (c.IsHandleCreated, "A26");
-                       c.PublicRtlTranslateContent (ContentAlignment.BottomLeft);
+                       c.PublicRtlTranslateAlignment (ContentAlignment.BottomLeft);
                        Assert.IsFalse (c.IsHandleCreated, "A27");
-                       c.PublicRtlTranslateHorizontal (HorizontalAlignment.Left);
+                       c.PublicRtlTranslateContent (ContentAlignment.BottomLeft);
                        Assert.IsFalse (c.IsHandleCreated, "A28");
-                       c.PublicRtlTranslateLeftRight (LeftRightAlignment.Left);
+                       c.PublicRtlTranslateHorizontal (HorizontalAlignment.Left);
                        Assert.IsFalse (c.IsHandleCreated, "A29");
-#if !__MonoCS__
-                       c.PublicScaleControl (new SizeF (1.5f, 1.5f), BoundsSpecified.All);
+                       c.PublicRtlTranslateLeftRight (LeftRightAlignment.Left);
                        Assert.IsFalse (c.IsHandleCreated, "A30");
+#if !__MonoCS__ && NET_2_0
+                       c.PublicScaleControl (new SizeF (1.5f, 1.5f), BoundsSpecified.All);
+                       Assert.IsFalse (c.IsHandleCreated, "A31");
 #endif
                        c.PublicScaleCore (1.5f, 1.5f);
-                       Assert.IsFalse (c.IsHandleCreated, "A31");
-                       c.PublicSelect ();
                        Assert.IsFalse (c.IsHandleCreated, "A32");
-#if !__MonoCS__
-                       c.PublicSetAutoSizeMode (AutoSizeMode.GrowAndShrink);
+                       c.PublicSelect ();
                        Assert.IsFalse (c.IsHandleCreated, "A33");
+#if !__MonoCS__ && NET_2_0
+                       c.PublicSetAutoSizeMode (AutoSizeMode.GrowAndShrink);
+                       Assert.IsFalse (c.IsHandleCreated, "A34");
 #endif
                        c.PublicSetBoundsCore (0, 0, 100, 100, BoundsSpecified.All);
-                       Assert.IsFalse (c.IsHandleCreated, "A34");
-                       c.PublicSetClientSizeCore (122, 122);
                        Assert.IsFalse (c.IsHandleCreated, "A35");
-                       c.PublicSetStyle (ControlStyles.FixedHeight, true);
+                       c.PublicSetClientSizeCore (122, 122);
                        Assert.IsFalse (c.IsHandleCreated, "A36");
+                       c.PublicSetStyle (ControlStyles.FixedHeight, true);
+                       Assert.IsFalse (c.IsHandleCreated, "A37");
                        c.PublicSetTopLevel (true);
-                       Assert.IsTrue (c.IsHandleCreated, "A37");
+                       Assert.IsTrue (c.IsHandleCreated, "A38");
                        c = new ProtectedMethodsControl ();
                        c.PublicSetVisibleCore (true);
-                       Assert.IsFalse (c.IsHandleCreated, "A38");
-                       c.PublicSizeFromClientSize (new Size (160, 160));
                        Assert.IsFalse (c.IsHandleCreated, "A39");
-                       c.PublicUpdateBounds ();
+#if NET_2_0
+                       c.PublicSizeFromClientSize (new Size (160, 160));
                        Assert.IsFalse (c.IsHandleCreated, "A40");
-                       c.PublicUpdateStyles ();
+#endif
+                       c.PublicUpdateBounds ();
                        Assert.IsFalse (c.IsHandleCreated, "A41");
-                       c.PublicUpdateZOrder ();
+                       c.PublicUpdateBounds (1, 2, 3, 4);
+                       Assert.IsFalse (c.IsHandleCreated, "A41-b");
+                       c.PublicUpdateBounds (1, 2, 3, 4, 5, 6);
+                       Assert.IsFalse (c.IsHandleCreated, "A41-c");
+                       c.PublicUpdateStyles ();
                        Assert.IsFalse (c.IsHandleCreated, "A42");
+                       c.PublicUpdateZOrder ();
+                       Assert.IsFalse (c.IsHandleCreated, "A43");
                }
                
                private class ProtectedMethodsControl : Control
@@ -576,8 +627,10 @@ namespace MonoTests.System.Windows.Forms
                        public void PublicCreateControlsInstance () { base.CreateControlsInstance (); }
                        public void PublicCreateHandle () { base.CreateHandle (); }
                        public void PublicDestroyHandle () { base.DestroyHandle (); }
+#if NET_2_0
                        public AccessibleObject PublicGetAccessibilityObjectById (int objectId) { return base.GetAccessibilityObjectById (objectId); }
-#if !__MonoCS__
+#endif
+#if !__MonoCS__ && NET_2_0
                        public AutoSizeMode PublicGetAutoSizeMode () { return base.GetAutoSizeMode (); }
                        public Rectangle PublicGetScaledBounds (Rectangle bounds, SizeF factor, BoundsSpecified specified) { return base.GetScaledBounds (bounds, factor, specified); }
 #endif
@@ -592,6 +645,7 @@ namespace MonoTests.System.Windows.Forms
                        public bool PublicIsInputChar (char charCode) { return base.IsInputChar (charCode); }
                        public bool PublicIsInputKey (Keys keyData) { return base.IsInputKey (keyData); }
                        public void PublicNotifyInvalidate (Rectangle invalidatedArea) { base.NotifyInvalidate (invalidatedArea); }
+                       public void PublicOnVisibleChanged (EventArgs e) { base.OnVisibleChanged (e); }
                        public void PublicRaiseDragEvent (Object key, DragEventArgs e) { base.RaiseDragEvent (key, e); }
                        public void PublicRaiseKeyEvent (Object key, KeyEventArgs e) { base.RaiseKeyEvent (key, e); }
                        public void PublicRaiseMouseEvent (Object key, MouseEventArgs e) { base.RaiseMouseEvent (key, e); }
@@ -602,12 +656,12 @@ namespace MonoTests.System.Windows.Forms
                        public ContentAlignment PublicRtlTranslateContent (ContentAlignment align) { return base.RtlTranslateContent (align); }
                        public HorizontalAlignment PublicRtlTranslateHorizontal (HorizontalAlignment align) { return base.RtlTranslateHorizontal (align); }
                        public LeftRightAlignment PublicRtlTranslateLeftRight (LeftRightAlignment align) { return base.RtlTranslateLeftRight (align); }
-#if !__MonoCS__
+#if !__MonoCS__ && NET_2_0
                        public void PublicScaleControl (SizeF factor, BoundsSpecified specified) { base.ScaleControl (factor, specified); }
 #endif
                        public void PublicScaleCore (float dx, float dy) { base.ScaleCore (dx, dy); }
                        public void PublicSelect () { base.Select (); }
-#if !__MonoCS__
+#if !__MonoCS__ && NET_2_0
                        public void PublicSetAutoSizeMode (AutoSizeMode mode) { base.SetAutoSizeMode (mode); }
 #endif
                        public void PublicSetBoundsCore (int x, int y, int width, int height, BoundsSpecified specified) { base.SetBoundsCore (x, y, width, height, specified); }
@@ -615,11 +669,14 @@ namespace MonoTests.System.Windows.Forms
                        public void PublicSetStyle (ControlStyles flag, bool value) { base.SetStyle (flag, value); }
                        public void PublicSetTopLevel (bool value) { base.SetTopLevel (value); }
                        public void PublicSetVisibleCore (bool value) { base.SetVisibleCore (value); }
+#if NET_2_0
                        public Size PublicSizeFromClientSize (Size clientSize) { return base.SizeFromClientSize (clientSize); }
+#endif
                        public void PublicUpdateBounds () { base.UpdateBounds (); }
+                       public void PublicUpdateBounds (int x, int y, int width, int height) { base.UpdateBounds (x, y, width, height); }
+                       public void PublicUpdateBounds (int x, int y, int width, int height, int clientWidth, int clientHeight) { base.UpdateBounds (x, y, width, height, clientWidth, clientHeight); }
                        public void PublicUpdateStyles () { base.UpdateStyles (); }
                        public void PublicUpdateZOrder () { base.UpdateZOrder (); }
                }
        }
 }
-#endif