Author: jpobst
Date: 2007-01-05 12:26:54 -0500 (Fri, 05 Jan 2007)
New Revision: 70543

Added:
   
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ControlPropertyEventsTest.cs
Modified:
   trunk/mcs/class/Managed.Windows.Forms/ChangeLog
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Control.cs
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms_test.dll.sources
   trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ChangeLog
Log:
2007-01-05  Jonathan Pobst  <[EMAIL PROTECTED]>

        * Control.cs: Implement several 2.0 protected properties and methods.
        Ensure that all necessary events are being called when properties
        are set.
        * ControlPropertyEventsTest.cs: Tests that demonstrate above changes.


Modified: trunk/mcs/class/Managed.Windows.Forms/ChangeLog
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/ChangeLog     2007-01-05 17:20:43 UTC 
(rev 70542)
+++ trunk/mcs/class/Managed.Windows.Forms/ChangeLog     2007-01-05 17:26:54 UTC 
(rev 70543)
@@ -1,3 +1,7 @@
+2007-01-04  Jonathan Pobst  <[EMAIL PROTECTED]>
+
+       * System.Windows.Forms_test.dll: Add ControlPropertyEventsTest.cs.
+
 2007-01-04  Carlos Alberto Cortez <[EMAIL PROTECTED]>
 
        * System.Windows.Forms_test.dll: Add ColumnHeaderTest.cs

Modified: trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog        
2007-01-05 17:20:43 UTC (rev 70542)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog        
2007-01-05 17:26:54 UTC (rev 70543)
@@ -1,3 +1,9 @@
+2007-01-05  Jonathan Pobst  <[EMAIL PROTECTED]>
+
+       * Control.cs: Implement several 2.0 protected properties and methods.
+       Ensure that all necessary events are being called when properties
+       are set.
+
 2007-01-05  Mike Kestner  <[EMAIL PROTECTED]>
 
        * ListView.cs: implement PgUp/PgDn for Details view.  Also

Modified: trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Control.cs
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Control.cs       
2007-01-05 17:20:43 UTC (rev 70542)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Control.cs       
2007-01-05 17:26:54 UTC (rev 70543)
@@ -1818,12 +1818,12 @@
                [DefaultValue (false)]
                [MonoTODO("This method currently does nothing")]
                public virtual bool AutoSize {
-                       get {
-                               //Console.Error.WriteLine("Unimplemented: 
Control::get_AutoSize()");
-                               return auto_size;
-                       }
+                       get { return auto_size; }
                        set {
-                               auto_size = value;
+                               if (this.auto_size != value) {
+                                       auto_size = value;
+                                       OnAutoSizeChanged (EventArgs.Empty);
+                               }
                        }
                }
                
@@ -1846,7 +1846,10 @@
                                return minimum_size;
                        }
                        set {
-                               minimum_size = value;
+                               if (minimum_size != value) {
+                                       minimum_size = value;
+                                       PerformLayout ();
+                               }
                        }
                }
 #endif // NET_2_0
@@ -1911,6 +1914,7 @@
                                if (value != backgroundimage_layout) {
                                        backgroundimage_layout = value;
                                        Invalidate ();
+                                       OnBackgroundImageLayoutChanged 
(EventArgs.Empty);
                                }
                                
                        }
@@ -2066,6 +2070,9 @@
 
                        set {
                                this.SetClientSizeCore(value.Width, 
value.Height);
+#if NET_2_0
+                               this.OnClientSizeChanged (EventArgs.Empty);
+#endif
                        }
                }
 
@@ -2308,14 +2315,15 @@
                        }
 
                        set {
+                               if (this.is_enabled != value) {
+                                       bool old_value = is_enabled;
 
-                               bool old_value = is_enabled;
+                                       is_enabled = value;
+                                       if (old_value != value && !value && 
this.has_focus)
+                                               SelectNextControl(this, true, 
true, true, true);
 
-                               is_enabled = value;
-                               if (old_value != value && !value && 
this.has_focus)
-                                       SelectNextControl(this, true, true, 
true, true);
-
-                               OnEnabledChanged (EventArgs.Empty);
+                                       OnEnabledChanged (EventArgs.Empty);
+                               }
                        }
                }
 
@@ -2354,6 +2362,7 @@
                                font = value;
                                Invalidate();
                                OnFontChanged (EventArgs.Empty);
+                               PerformLayout ();
                        }
                }
 
@@ -2533,7 +2542,12 @@
                [Localizable (true)]
                public Padding Margin {
                        get { return this.margin; }
-                       set { this.margin = value; }
+                       set { 
+                               if (this.margin != value) {
+                                       this.margin = value; 
+                                       OnMarginChanged (EventArgs.Empty);
+                               }
+                       }
                }
 #endif
 
@@ -2556,8 +2570,11 @@
                        }
 
                        set {
-                               padding = value;
-                               OnPaddingChanged (EventArgs.Empty);
+                               if (padding != value) {
+                                       padding = value;
+                                       OnPaddingChanged (EventArgs.Empty);
+                                       PerformLayout ();
+                               }
                        }
                }
 #endif
@@ -2635,10 +2652,15 @@
                        }
 
                        set {
-                               if (value != null && IsHandleCreated) {
-                                       XplatUI.SetClipRegion(Handle, value);
+                               if (clip_region != value) {
+                                       if (value != null && IsHandleCreated)
+                                               XplatUI.SetClipRegion(Handle, 
value);
+
+                                       clip_region = value;
+#if NET_2_0
+                                       OnRegionChanged (EventArgs.Empty);
+#endif
                                }
-                               clip_region = value;
                        }
                }
 
@@ -2669,6 +2691,7 @@
                                if (value != right_to_left) {
                                        right_to_left = value;
                                        OnRightToLeftChanged(EventArgs.Empty);
+                                       PerformLayout ();
                                }
                        }
                }
@@ -2935,6 +2958,10 @@
                        }
                }
 
+#if NET_2_0
+               protected virtual Cursor DefaultCursor { get { return 
Cursors.Default; } }
+#endif
+
                protected virtual ImeMode DefaultImeMode {
                        get {
                                return ImeMode.Inherit;
@@ -2945,6 +2972,10 @@
                protected virtual Padding DefaultMargin {
                        get { return new Padding (3); }
                }
+               
+               protected virtual Size DefaultMaximumSize { get { return new 
Size (); } }
+               protected virtual Size DefaultMinimumSize { get { return new 
Size (); } }
+               protected virtual Padding DefaultPadding { get { return new 
Padding (); } }
 #endif
 
                protected virtual Size DefaultSize {
@@ -4085,7 +4116,8 @@
                                if (parent != null) {
                                        parent.PerformLayout(this, "visible");
                                } else {
-                                       PerformLayout(this, "visible");
+                                       if (is_visible)
+                                               PerformLayout(this, "visible");
                                }
                        }
                }
@@ -4153,6 +4185,9 @@
 
                        if (resized) {
                                OnSizeChanged(EventArgs.Empty);
+#if NET_2_0
+                               OnClientSizeChanged (EventArgs.Empty);
+#endif
                        }
                }
 
@@ -4593,7 +4628,17 @@
                #endregion      // Public Instance Methods
 
                #region OnXXX methods
-               [EditorBrowsable(EditorBrowsableState.Advanced)]
+#if NET_2_0
+               [EditorBrowsable (EditorBrowsableState.Advanced)]
+               protected virtual void OnAutoSizeChanged (EventArgs e)
+               {
+                       EventHandler eh = 
(EventHandler)(Events[AutoSizeChangedEvent]);
+                       if (eh != null)
+                               eh (this, e);
+               }
+#endif
+
+               [EditorBrowsable (EditorBrowsableState.Advanced)]
                protected virtual void OnBackColorChanged(EventArgs e) {
                        EventHandler eh = (EventHandler)(Events 
[BackColorChangedEvent]);
                        if (eh != null)
@@ -4609,6 +4654,16 @@
                        for (int i=0; i<child_controls.Count; i++) 
child_controls[i].OnParentBackgroundImageChanged(e);
                }
 
+#if NET_2_0
+               [EditorBrowsable (EditorBrowsableState.Advanced)]
+               protected virtual void OnBackgroundImageLayoutChanged 
(EventArgs e)
+               {
+                       EventHandler eh = 
(EventHandler)(Events[BackgroundImageLayoutChangedEvent]);
+                       if (eh != null)
+                               eh (this, e);
+               }
+#endif
+
                [EditorBrowsable(EditorBrowsableState.Advanced)]
                protected virtual void OnBindingContextChanged(EventArgs e) {
                        CheckDataBindings ();
@@ -4639,6 +4694,16 @@
                                eh (this, e);
                }
 
+#if NET_2_0
+               [EditorBrowsable (EditorBrowsableState.Advanced)]
+               protected virtual void OnClientSizeChanged (EventArgs e)
+               {
+                       EventHandler eh = 
(EventHandler)(Events[ClientSizeChangedEvent]);
+                       if (eh != null)
+                               eh (this, e);
+               }
+#endif
+
                [EditorBrowsable(EditorBrowsableState.Advanced)]
                protected virtual void OnContextMenuChanged(EventArgs e) {
                        EventHandler eh = (EventHandler)(Events 
[ContextMenuChangedEvent]);
@@ -4890,6 +4955,14 @@
 
 #if NET_2_0
                [EditorBrowsable (EditorBrowsableState.Advanced)]
+               protected virtual void OnMarginChanged (EventArgs e)
+               {
+                       EventHandler eh = 
(EventHandler)(Events[MarginChangedEvent]);
+                       if (eh != null)
+                               eh (this, e);
+               }
+
+               [EditorBrowsable (EditorBrowsableState.Advanced)]
                protected virtual void OnMouseCaptureChanged (EventArgs e)
                {
                        EventHandler eh = (EventHandler)(Events 
[MouseCaptureChangedEvent]);
@@ -5089,6 +5162,16 @@
                                eh (this, e);
                }
 
+#if NET_2_0
+               [EditorBrowsable (EditorBrowsableState.Advanced)]
+               protected virtual void OnRegionChanged (EventArgs e)
+               {
+                       EventHandler eh = 
(EventHandler)(Events[RegionChangedEvent]);
+                       if (eh != null)
+                               eh (this, e);
+               }
+#endif
+
                [EditorBrowsable(EditorBrowsableState.Advanced)]
                protected virtual void OnResize(EventArgs e) {
                        PerformLayout(this, "Bounds");

Modified: 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms_test.dll.sources
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms_test.dll.sources 
2007-01-05 17:20:43 UTC (rev 70542)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms_test.dll.sources 
2007-01-05 17:26:54 UTC (rev 70543)
@@ -21,6 +21,7 @@
 System.Windows.Forms/ControlEventTest.cs
 System.Windows.Forms/ControlTest.cs
 System.Windows.Forms/ControlPaintTest.cs
+System.Windows.Forms/ControlPropertyEventsTest.cs
 System.Windows.Forms/ControlStyleTest.cs
 System.Windows.Forms/CursorTest.cs
 System.Windows.Forms/CurrencyManagerTest.cs

Modified: 
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ChangeLog
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ChangeLog   
2007-01-05 17:20:43 UTC (rev 70542)
+++ trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ChangeLog   
2007-01-05 17:26:54 UTC (rev 70543)
@@ -1,3 +1,9 @@
+2007-01-05  Jonathan Pobst  <[EMAIL PROTECTED]>
+
+       * ControlPropertyEventsTest.cs: Added.  These test property getters and
+       setters and ensure that all relevant events are called on setters for
+       Control.
+
 2007-01-04  Chris Toshok  <[EMAIL PROTECTED]>
 
        * CommonDialogsTest.cs: disable FolderBrowserDialogTest (and add a

Added: 
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ControlPropertyEventsTest.cs
===================================================================
--- 
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ControlPropertyEventsTest.cs
        2007-01-05 17:20:43 UTC (rev 70542)
+++ 
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ControlPropertyEventsTest.cs
        2007-01-05 17:26:54 UTC (rev 70543)
@@ -0,0 +1,673 @@
+#if NET_2_0
+using System;
+using System.Collections.Generic;
+using System.Text;
+using NUnit.Framework;
+using System.Drawing;
+using System.Windows.Forms;
+using System.ComponentModel;
+
+namespace MonoTests.System.Windows.Forms
+{
+       [TestFixture]
+       public class ControlPropertyEventsTest
+       {
+               [Test]
+               public void PropertyAllowDrop ()
+               {
+                       Control c = new Control ();
+                       EventWatcher ew = new EventWatcher (c);
+
+                       c.AllowDrop = true;
+                       Assert.AreEqual (true, c.AllowDrop, "B1");
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B2");
+
+                       ew.Clear ();
+                       c.AllowDrop = true;
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+               }
+
+               [Test]
+               public void PropertyAnchor ()
+               {
+                       Control c = new Control ();
+                       EventWatcher ew = new EventWatcher (c);
+
+                       c.Anchor = AnchorStyles.Bottom;
+                       Assert.AreEqual (AnchorStyles.Bottom, c.Anchor, "B1");
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B2");
+
+                       ew.Clear ();
+                       c.Anchor = AnchorStyles.Bottom;
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+               }
+
+               //[Test]
+               //public void PropertyAutoScrollOffset ()
+               //{
+               //        Control c = new Control ();
+               //        EventWatcher ew = new EventWatcher (c);
+
+               //        c.AutoScrollOffset = new Point (45, 45);
+               //        Assert.AreEqual (new Point (45, 45), 
c.AutoScrollOffset, "B1");
+               //        Assert.AreEqual (string.Empty, ew.ToString (), "B2");
+
+               //        ew.Clear ();
+               //        c.AutoScrollOffset = new Point (45, 45);
+               //        Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+               //}
+
+               [Test]
+               public void PropertyAutoSize ()
+               {
+                       Control c = new Control ();
+                       EventWatcher ew = new EventWatcher (c);
+
+                       c.AutoSize = true;
+                       Assert.AreEqual (true, c.AutoSize, "B1");
+                       Assert.AreEqual ("AutoSizeChanged", ew.ToString (), 
"B2");
+
+                       ew.Clear ();
+                       c.AutoSize = true;
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+               }
+
+               [Test]
+               public void PropertyBackColor ()
+               {
+                       Control c = new Control ();
+                       EventWatcher ew = new EventWatcher (c);
+
+                       c.BackColor = Color.Aquamarine;
+                       Assert.AreEqual (Color.Aquamarine, c.BackColor, "B1");
+                       Assert.AreEqual ("BackColorChanged", ew.ToString (), 
"B2");
+
+                       ew.Clear ();
+                       c.BackColor = Color.Aquamarine;
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+               }
+
+               [Test]
+               public void PropertyBackgroundImage ()
+               {
+                       Control c = new Control ();
+                       EventWatcher ew = new EventWatcher (c);
+                       Image i = new Bitmap (5, 5);
+
+                       c.BackgroundImage = i;
+                       Assert.AreSame (i, c.BackgroundImage, "B1");
+                       Assert.AreEqual ("BackgroundImageChanged", ew.ToString 
(), "B2");
+
+                       ew.Clear ();
+                       c.BackgroundImage = i;
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+               }
+
+               [Test]
+               public void PropertyBackgroundImageLayout ()
+               {
+                       Control c = new Control ();
+                       EventWatcher ew = new EventWatcher (c);
+
+                       c.BackgroundImageLayout = ImageLayout.Zoom;
+                       Assert.AreEqual (ImageLayout.Zoom, 
c.BackgroundImageLayout, "B1");
+                       Assert.AreEqual ("BackgroundImageLayoutChanged", 
ew.ToString (), "B2");
+
+                       ew.Clear ();
+                       c.BackgroundImageLayout = ImageLayout.Zoom;
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+               }
+
+               [Test]
+               public void PropertyBindingContext ()
+               {
+                       Control c = new Control ();
+                       EventWatcher ew = new EventWatcher (c);
+                       BindingContext b = new BindingContext ();
+
+                       c.BindingContext = b;
+                       Assert.AreSame (b, c.BindingContext, "B1");
+                       Assert.AreEqual ("BindingContextChanged", ew.ToString 
(), "B2");
+                       
+                       c.BindingContext = b;
+                       Assert.AreEqual ("BindingContextChanged", ew.ToString 
(), "B3");
+               }
+
+               [Test]
+               public void PropertyBounds ()
+               {
+                       Control c = new Control ();
+                       EventWatcher ew = new EventWatcher (c);
+
+                       c.Bounds = new Rectangle (0, 0, 5, 5);
+                       Assert.AreEqual (new Rectangle (0, 0, 5, 5), c.Bounds, 
"B1");
+                       Assert.AreEqual 
("Layout;Resize;SizeChanged;ClientSizeChanged", ew.ToString (), "B2");
+
+                       ew.Clear ();
+                       c.Bounds = new Rectangle (0, 0, 5, 5);
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+               }
+
+               [Test]
+               [Ignore ("Setting Capture to true does not hold, getter returns 
false.")]
+               public void PropertyCapture ()
+               {
+                       Control c = new Control ();
+                       EventWatcher ew = new EventWatcher (c);
+
+                       c.Capture = true;
+                       Assert.AreEqual (true, c.Capture, "B1");
+                       Assert.AreEqual ("HandleCreated", ew.ToString (), "B2");
+
+                       ew.Clear ();
+                       c.Capture = true;
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+               }
+
+               [Test]
+               public void PropertyClientSize ()
+               {
+                       Control c = new Control ();
+                       EventWatcher ew = new EventWatcher (c);
+
+                       c.ClientSize = new Size (5, 5);
+                       Assert.AreEqual (new Size (5, 5), c.ClientSize, "B1");
+                       Assert.AreEqual 
("Layout;Resize;SizeChanged;ClientSizeChanged;ClientSizeChanged", ew.ToString 
(), "B2");
+
+                       ew.Clear ();
+                       c.ClientSize = new Size (5, 5);
+                       Assert.AreEqual ("ClientSizeChanged", ew.ToString (), 
"B3");
+               }
+
+               [Test]
+               public void PropertyContextMenu ()
+               {
+                       Control c = new Control ();
+                       EventWatcher ew = new EventWatcher (c);
+                       ContextMenu cm = new ContextMenu ();
+                       
+                       c.ContextMenu = cm;
+                       Assert.AreEqual (cm, c.ContextMenu, "B1");
+                       Assert.AreEqual ("ContextMenuChanged", ew.ToString (), 
"B2");
+
+                       ew.Clear ();
+                       c.ContextMenu = cm;
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+               }
+
+               [Test]
+               public void PropertyContextMenuStrip ()
+               {
+                       Control c = new Control ();
+                       EventWatcher ew = new EventWatcher (c);
+                       ContextMenuStrip cm = new ContextMenuStrip ();
+
+                       c.ContextMenuStrip = cm;
+                       Assert.AreEqual (cm, c.ContextMenuStrip, "B1");
+                       Assert.AreEqual ("ContextMenuStripChanged", ew.ToString 
(), "B2");
+
+                       ew.Clear ();
+                       c.ContextMenuStrip = cm;
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+               }
+
+               [Test]
+               public void PropertyCursor ()
+               {
+                       Control c = new Control ();
+                       EventWatcher ew = new EventWatcher (c);
+
+                       c.Cursor = Cursors.HSplit;
+                       Assert.AreEqual (Cursors.HSplit, c.Cursor, "B1");
+                       Assert.AreEqual ("CursorChanged", ew.ToString (), "B2");
+
+                       ew.Clear ();
+                       c.Cursor = Cursors.HSplit;
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+               }
+
+               [Test]
+               public void PropertyDock ()
+               {
+                       Control c = new Control ();
+                       EventWatcher ew = new EventWatcher (c);
+
+                       c.Dock = DockStyle.Fill;
+                       Assert.AreEqual (DockStyle.Fill, c.Dock, "B1");
+                       Assert.AreEqual ("DockChanged", ew.ToString (), "B2");
+
+                       ew.Clear ();
+                       c.Dock = DockStyle.Fill;
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+               }
+
+               [Test]
+               public void PropertyEnabled ()
+               {
+                       Control c = new Control ();
+                       EventWatcher ew = new EventWatcher (c);
+
+                       c.Enabled = false;
+                       Assert.AreEqual (false, c.Enabled, "B1");
+                       Assert.AreEqual ("EnabledChanged", ew.ToString (), 
"B2");
+
+                       ew.Clear ();
+                       c.Enabled = false;
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+               }
+
+               [Test]
+               public void PropertyFont ()
+               {
+                       Control c = new Control ();
+                       EventWatcher ew = new EventWatcher (c);
+                       Font f = new Font ("Arial", 14);
+                       
+                       c.Font = f;
+                       Assert.AreEqual (f, c.Font, "B1");
+                       Assert.AreEqual ("FontChanged;Layout", ew.ToString (), 
"B2");
+
+                       ew.Clear ();
+                       c.Font = f;
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+               }
+
+               [Test]
+               public void PropertyForeColor ()
+               {
+                       Control c = new Control ();
+                       EventWatcher ew = new EventWatcher (c);
+
+                       c.ForeColor = Color.Peru;
+                       Assert.AreEqual (Color.Peru, c.ForeColor, "B1");
+                       Assert.AreEqual ("ForeColorChanged", ew.ToString (), 
"B2");
+
+                       ew.Clear ();
+                       c.ForeColor = Color.Peru;
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+               }
+
+               [Test]
+               public void PropertyHeight ()
+               {
+                       Control c = new Control ();
+                       EventWatcher ew = new EventWatcher (c);
+
+                       c.Height = 27;
+                       Assert.AreEqual (27, c.Height, "B1");
+                       Assert.AreEqual 
("Layout;Resize;SizeChanged;ClientSizeChanged", ew.ToString (), "B2");
+
+                       ew.Clear ();
+                       c.Height = 27;
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+               }
+
+               [Test]
+               public void PropertyImeMode ()
+               {
+                       Control c = new Control ();
+                       EventWatcher ew = new EventWatcher (c);
+
+                       c.ImeMode = ImeMode.Hiragana;
+                       Assert.AreEqual (ImeMode.Hiragana, c.ImeMode, "B1");
+                       Assert.AreEqual ("ImeModeChanged", ew.ToString (), 
"B2");
+
+                       ew.Clear ();
+                       c.ImeMode = ImeMode.Hiragana;
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+               }
+
+               [Test]
+               public void PropertyLeft ()
+               {
+                       Control c = new Control ();
+                       EventWatcher ew = new EventWatcher (c);
+
+                       c.Left = 27;
+                       Assert.AreEqual (27, c.Left, "B1");
+                       Assert.AreEqual ("Move;LocationChanged", ew.ToString 
(), "B2");
+
+                       ew.Clear ();
+                       c.Left = 27;
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+               }
+
+               [Test]
+               public void PropertyLocation ()
+               {
+                       Control c = new Control ();
+                       EventWatcher ew = new EventWatcher (c);
+
+                       c.Location = new Point (5, 5);
+                       Assert.AreEqual (new Point (5, 5), c.Location, "B1");
+                       Assert.AreEqual ("Move;LocationChanged", ew.ToString 
(), "B2");
+
+                       ew.Clear ();
+                       c.Location = new Point (5, 5);
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+               }
+
+               [Test]
+               public void PropertyMargin ()
+               {
+                       Control c = new Control ();
+                       EventWatcher ew = new EventWatcher (c);
+
+                       c.Margin = new Padding (5);
+                       Assert.AreEqual (new Padding (5), c.Margin, "B1");
+                       Assert.AreEqual ("MarginChanged", ew.ToString (), "B2");
+
+                       ew.Clear ();
+                       c.Margin = new Padding (5);
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+               }
+
+               [Test]
+               public void PropertyMaximumSize ()
+               {
+                       Control c = new Control ();
+                       EventWatcher ew = new EventWatcher (c);
+
+                       c.MaximumSize = new Size (5, 5);
+                       Assert.AreEqual (new Size (5, 5), c.MaximumSize, "B1");
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B2");
+
+                       ew.Clear ();
+                       c.MaximumSize = new Size (5, 5);
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+               }
+
+               [Test]
+               [Ignore ("Resize events do not fire because MinimumSize is not 
considered in the PerformLayout yet")]
+               public void PropertyMinimumSize ()
+               {
+                       Control c = new Control ();
+                       EventWatcher ew = new EventWatcher (c);
+
+                       c.MinimumSize = new Size (5, 5);
+                       Assert.AreEqual (new Size (5, 5), c.MinimumSize, "B1");
+                       Assert.AreEqual 
("Layout;Resize;SizeChanged;ClientSizeChanged", ew.ToString (), "B2");
+
+                       ew.Clear ();
+                       c.MinimumSize = new Size (5, 5);
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+               }
+
+               [Test]
+               public void PropertyName ()
+               {
+                       Control c = new Control ();
+                       EventWatcher ew = new EventWatcher (c);
+
+                       c.Name = "Bob";
+                       Assert.AreEqual ("Bob", c.Name, "B1");
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B2");
+
+                       ew.Clear ();
+                       c.Name = "Bob";
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+               }
+
+               [Test]
+               public void PropertyPadding ()
+               {
+                       Control c = new Control ();
+                       EventWatcher ew = new EventWatcher (c);
+
+                       c.Padding = new Padding (5);
+                       Assert.AreEqual (new Padding (5), c.Padding, "B1");
+                       Assert.AreEqual ("PaddingChanged;Layout", ew.ToString 
(), "B2");
+
+                       ew.Clear ();
+                       c.Padding = new Padding (5);
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+               }
+
+               [Test]
+               public void PropertyRegion ()
+               {
+                       Control c = new Control ();
+                       EventWatcher ew = new EventWatcher (c);
+                       Region r = new Region ();
+                       
+                       c.Region = r;
+                       Assert.AreSame (r, c.Region, "B1");
+                       Assert.AreEqual ("RegionChanged", ew.ToString (), "B2");
+
+                       ew.Clear ();
+                       c.Region = r;
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+               }
+
+               [Test]
+               public void PropertyRightToLeft ()
+               {
+                       Control c = new Control ();
+                       EventWatcher ew = new EventWatcher (c);
+
+                       c.RightToLeft = RightToLeft.Yes;
+                       Assert.AreEqual (RightToLeft.Yes, c.RightToLeft, "B1");
+                       Assert.AreEqual ("RightToLeftChanged;Layout", 
ew.ToString (), "B2");
+
+                       ew.Clear ();
+                       c.RightToLeft = RightToLeft.Yes;
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+               }
+
+               [Test]
+               public void PropertySize ()
+               {
+                       Control c = new Control ();
+                       EventWatcher ew = new EventWatcher (c);
+
+                       c.Size = new Size (5, 5);
+                       Assert.AreEqual (new Size (5, 5), c.Size, "B1");
+                       Assert.AreEqual 
("Layout;Resize;SizeChanged;ClientSizeChanged", ew.ToString (), "B2");
+
+                       ew.Clear ();
+                       c.Size = new Size (5, 5);
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+               }
+
+               [Test]
+               public void PropertyTabIndex ()
+               {
+                       Control c = new Control ();
+                       EventWatcher ew = new EventWatcher (c);
+
+                       c.TabIndex = 4;
+                       Assert.AreEqual (4, c.TabIndex, "B1");
+                       Assert.AreEqual ("TabIndexChanged", ew.ToString (), 
"B2");
+
+                       ew.Clear ();
+                       c.TabIndex = 4;
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+               }
+
+               [Test]
+               public void PropertyTabStop ()
+               {
+                       Control c = new Control ();
+                       EventWatcher ew = new EventWatcher (c);
+
+                       c.TabStop = false;
+                       Assert.AreEqual (false, c.TabStop, "B1");
+                       Assert.AreEqual ("TabStopChanged", ew.ToString (), 
"B2");
+
+                       ew.Clear ();
+                       c.TabStop = false;
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+               }
+
+               [Test]
+               public void PropertyTag ()
+               {
+                       Control c = new Control ();
+                       EventWatcher ew = new EventWatcher (c);
+                       Object o = "Hello";
+
+                       c.Tag = o;
+                       Assert.AreSame (o, c.Tag, "B1");
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B2");
+
+                       ew.Clear ();
+                       c.Tag = o;
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+               }
+
+               [Test]
+               public void PropertyText ()
+               {
+                       Control c = new Control ();
+                       EventWatcher ew = new EventWatcher (c);
+
+                       c.Text = "Enchilada";
+                       Assert.AreEqual ("Enchilada", c.Text, "B1");
+                       Assert.AreEqual ("TextChanged", ew.ToString (), "B2");
+
+                       ew.Clear ();
+                       c.Text = "Enchilada";
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+               }
+
+               [Test]
+               public void PropertyTop ()
+               {
+                       Control c = new Control ();
+                       EventWatcher ew = new EventWatcher (c);
+
+                       c.Top = 27;
+                       Assert.AreEqual (27, c.Top, "B1");
+                       Assert.AreEqual ("Move;LocationChanged", ew.ToString 
(), "B2");
+
+                       ew.Clear ();
+                       c.Top = 27;
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+               }
+
+               [Test]
+               public void PropertyVisible ()
+               {
+                       Control c = new Control ();
+                       EventWatcher ew = new EventWatcher (c);
+
+                       c.Visible = false;
+                       Assert.AreEqual (false, c.Visible, "B1");
+                       Assert.AreEqual ("VisibleChanged", ew.ToString (), 
"B2");
+
+                       ew.Clear ();
+                       c.Visible = false;
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+               }
+
+               [Test]
+               public void PropertyWidth ()
+               {
+                       Control c = new Control ();
+                       EventWatcher ew = new EventWatcher (c);
+
+                       c.Width = 27;
+                       Assert.AreEqual (27, c.Width, "B1");
+                       Assert.AreEqual 
("Layout;Resize;SizeChanged;ClientSizeChanged", ew.ToString (), "B2");
+
+                       ew.Clear ();
+                       c.Width = 27;
+                       Assert.AreEqual (string.Empty, ew.ToString (), "B3");
+               }
+
+               private class EventWatcher
+               {
+                       private string events = string.Empty;
+
+                       public EventWatcher (Control c)
+                       {
+                               c.AutoSizeChanged += new EventHandler (delegate 
(Object obj, EventArgs e) { events += ("AutoSizeChanged;"); });
+                               c.BackColorChanged += new EventHandler 
(delegate (Object obj, EventArgs e) { events += ("BackColorChanged;"); });
+                               c.BackgroundImageChanged += new EventHandler 
(delegate (Object obj, EventArgs e) { events += ("BackgroundImageChanged;"); });
+                               c.BackgroundImageLayoutChanged += new 
EventHandler (delegate (Object obj, EventArgs e) { events += 
("BackgroundImageLayoutChanged;"); });
+                               c.BindingContextChanged += new EventHandler 
(delegate (Object obj, EventArgs e) { events += ("BindingContextChanged;"); });
+                               c.CausesValidationChanged += new EventHandler 
(delegate (Object obj, EventArgs e) { events += ("CausesValidationChanged;"); 
});
+                               c.ChangeUICues += new UICuesEventHandler 
(delegate (Object obj, UICuesEventArgs e) { events += ("ChangeUICues;"); });
+                               c.Click += new EventHandler (delegate (Object 
obj, EventArgs e) { events += ("Click;"); });
+                               c.ClientSizeChanged += new EventHandler 
(delegate (Object obj, EventArgs e) { events += ("ClientSizeChanged;"); });
+                               c.ContextMenuChanged += new EventHandler 
(delegate (Object obj, EventArgs e) { events += ("ContextMenuChanged;"); });
+                               c.ContextMenuStripChanged += new EventHandler 
(delegate (Object obj, EventArgs e) { events += ("ContextMenuStripChanged;"); 
});
+                               c.ControlAdded += new ControlEventHandler 
(delegate (Object obj, ControlEventArgs e) { events += ("ControlAdded;"); });
+                               c.ControlRemoved += new ControlEventHandler 
(delegate (Object obj, ControlEventArgs e) { events += ("ControlRemoved;"); });
+                               c.CursorChanged += new EventHandler (delegate 
(Object obj, EventArgs e) { events += ("CursorChanged;"); });
+                               c.DockChanged += new EventHandler (delegate 
(Object obj, EventArgs e) { events += ("DockChanged;"); });
+                               c.DoubleClick += new EventHandler (delegate 
(Object obj, EventArgs e) { events += ("DoubleClick;"); });
+                               c.DragDrop += new DragEventHandler (delegate 
(Object obj, DragEventArgs e) { events += ("DragDrop;"); });
+                               c.DragEnter += new DragEventHandler (delegate 
(Object obj, DragEventArgs e) { events += ("DragEnter;"); });
+                               c.DragLeave += new EventHandler (delegate 
(Object obj, EventArgs e) { events += ("DragLeave;"); });
+                               c.DragOver += new DragEventHandler (delegate 
(Object obj, DragEventArgs e) { events += ("DragOver;"); });
+                               c.EnabledChanged += new EventHandler (delegate 
(Object obj, EventArgs e) { events += ("EnabledChanged;"); });
+                               c.Enter += new EventHandler (delegate (Object 
obj, EventArgs e) { events += ("Enter;"); });
+                               c.FontChanged += new EventHandler (delegate 
(Object obj, EventArgs e) { events += ("FontChanged;"); });
+                               c.ForeColorChanged += new EventHandler 
(delegate (Object obj, EventArgs e) { events += ("ForeColorChanged;"); });
+                               c.GiveFeedback += new GiveFeedbackEventHandler 
(delegate (Object obj, GiveFeedbackEventArgs e) { events += ("GiveFeedback;"); 
});
+                               c.GotFocus += new EventHandler (delegate 
(Object obj, EventArgs e) { events += ("GotFocus;"); });
+                               c.HandleCreated += new EventHandler (delegate 
(Object obj, EventArgs e) { events += ("HandleCreated;"); });
+                               c.HandleDestroyed += new EventHandler (delegate 
(Object obj, EventArgs e) { events += ("HandleDestroyed;"); });
+                               c.ImeModeChanged += new EventHandler (delegate 
(Object obj, EventArgs e) { events += ("ImeModeChanged;"); });
+                               c.Invalidated += new InvalidateEventHandler 
(delegate (Object obj, InvalidateEventArgs e) { events += ("Invalidated;"); });
+                               c.KeyDown += new KeyEventHandler (delegate 
(Object obj, KeyEventArgs e) { events += ("KeyDown;"); });
+                               c.KeyPress += new KeyPressEventHandler 
(delegate (Object obj, KeyPressEventArgs e) { events += ("KeyPress;"); });
+                               c.KeyUp += new KeyEventHandler (delegate 
(Object obj, KeyEventArgs e) { events += ("KeyUp;"); });
+                               c.Layout += new LayoutEventHandler (delegate 
(Object obj, LayoutEventArgs e) { events += ("Layout;"); });
+                               c.Leave += new EventHandler (delegate (Object 
obj, EventArgs e) { events += ("Leave;"); });
+                               c.LocationChanged += new EventHandler (delegate 
(Object obj, EventArgs e) { events += ("LocationChanged;"); });
+                               c.LostFocus += new EventHandler (delegate 
(Object obj, EventArgs e) { events += ("LostFocus;"); });
+                               c.MarginChanged += new EventHandler (delegate 
(Object obj, EventArgs e) { events += ("MarginChanged;"); });
+                               c.MouseCaptureChanged += new EventHandler 
(delegate (Object obj, EventArgs e) { events += ("MouseCaptureChanged;"); });
+                               c.MouseClick += new MouseEventHandler (delegate 
(Object obj, MouseEventArgs e) { events += ("MouseClick;"); });
+                               c.MouseDoubleClick += new MouseEventHandler 
(delegate (Object obj, MouseEventArgs e) { events += ("MouseDoubleClick;"); });
+                               c.MouseDown += new MouseEventHandler (delegate 
(Object obj, MouseEventArgs e) { events += ("MouseDown;"); });
+                               c.MouseEnter += new EventHandler (delegate 
(Object obj, EventArgs e) { events += ("MouseEnter;"); });
+                               c.MouseLeave += new EventHandler (delegate 
(Object obj, EventArgs e) { events += ("MouseLeave;"); });
+                               c.MouseMove += new MouseEventHandler (delegate 
(Object obj, MouseEventArgs e) { events += ("MouseMove;"); });
+                               c.MouseUp += new MouseEventHandler (delegate 
(Object obj, MouseEventArgs e) { events += ("MouseUp;"); });
+                               c.MouseWheel += new MouseEventHandler (delegate 
(Object obj, MouseEventArgs e) { events += ("MouseWheel;"); });
+                               c.Move += new EventHandler (delegate (Object 
obj, EventArgs e) { events += ("Move;"); });
+                               c.PaddingChanged += new EventHandler (delegate 
(Object obj, EventArgs e) { events += ("PaddingChanged;"); });
+                               c.Paint += new PaintEventHandler (delegate 
(Object obj, PaintEventArgs e) { events += ("Paint;"); });
+                               c.ParentChanged += new EventHandler (delegate 
(Object obj, EventArgs e) { events += ("ParentChanged;"); });
+                               c.PreviewKeyDown += new 
PreviewKeyDownEventHandler (delegate (Object obj, PreviewKeyDownEventArgs e) { 
events += ("PreviewKeyDown;"); });
+                               c.QueryAccessibilityHelp += new 
QueryAccessibilityHelpEventHandler (delegate (Object obj, 
QueryAccessibilityHelpEventArgs e) { events += ("QueryAccessibilityHelp;"); });
+                               c.QueryContinueDrag += new 
QueryContinueDragEventHandler (delegate (Object obj, QueryContinueDragEventArgs 
e) { events += ("QueryContinueDrag;"); });
+                               c.RegionChanged += new EventHandler (delegate 
(Object obj, EventArgs e) { events += ("RegionChanged;"); });
+                               c.Resize += new EventHandler (delegate (Object 
obj, EventArgs e) { events += ("Resize;"); });
+                               c.RightToLeftChanged += new EventHandler 
(delegate (Object obj, EventArgs e) { events += ("RightToLeftChanged;"); });
+                               c.SizeChanged += new EventHandler (delegate 
(Object obj, EventArgs e) { events += ("SizeChanged;"); });
+                               c.StyleChanged += new EventHandler (delegate 
(Object obj, EventArgs e) { events += ("StyleChanged;"); });
+                               c.SystemColorsChanged += new EventHandler 
(delegate (Object obj, EventArgs e) { events += ("SystemColorsChanged;"); });
+                               c.TabIndexChanged += new EventHandler (delegate 
(Object obj, EventArgs e) { events += ("TabIndexChanged;"); });
+                               c.TabStopChanged += new EventHandler (delegate 
(Object obj, EventArgs e) { events += ("TabStopChanged;"); });
+                               c.TextChanged += new EventHandler (delegate 
(Object obj, EventArgs e) { events += ("TextChanged;"); });
+                               c.Validated += new EventHandler (delegate 
(Object obj, EventArgs e) { events += ("Validated;"); });
+                               c.Validating += new CancelEventHandler 
(delegate (Object obj, CancelEventArgs e) { events += ("Validating;"); });
+                               c.VisibleChanged += new EventHandler (delegate 
(Object obj, EventArgs e) { events += ("VisibleChanged;"); });
+                       }
+
+                       public override string ToString ()
+                       {
+                               return events.TrimEnd (';');
+                       }
+
+                       public void Clear ()
+                       {
+                               events = string.Empty;
+                       }
+               }
+
+               private class ExposeProtectedProperties : Control
+               {
+                       //public new bool CanRaiseEvents { get { return 
base.CanRaiseEvents; } }
+                       public new Cursor DefaultCursor { get { return 
base.DefaultCursor; } }
+                       public new Size DefaultMaximumSize { get { return 
base.DefaultMaximumSize; } }
+                       public new Size DefaultMinimumSize { get { return 
base.DefaultMinimumSize; } }
+                       public new Padding DefaultPadding { get { return 
base.DefaultPadding; } }
+               }
+       }
+}
+#endif
\ No newline at end of file


Property changes on: 
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ControlPropertyEventsTest.cs
___________________________________________________________________
Name: svn:eol-style
   + native

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to