[MWF] Add unit tests for AutoSize behavior of FlowLayoutPanel
authorEberhard Beilharz <eb1@sil.org>
Thu, 13 Mar 2014 16:06:58 +0000 (17:06 +0100)
committerEberhard Beilharz <eb1@sil.org>
Mon, 28 Apr 2014 14:20:17 +0000 (16:20 +0200)
mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/FlowPanelTests.cs

index c2d6ed30d27b8f19a5948ffff99db717303974c7..818deb34dd0ffcb3d2f811f63fa989b8368e8531 100644 (file)
@@ -1,4 +1,3 @@
-#if NET_2_0\r
 using System;\r
 using System.Text;\r
 using NUnit.Framework;\r
@@ -1327,5 +1326,318 @@ namespace MonoTests.System.Windows.Forms
                        Assert.AreEqual (new Rectangle (23, 79, 50, 50), b2.Bounds, "A2");\r
                }\r
        }\r
+\r
+       [TestFixture]\r
+       public class FlowPanelTests_AutoSize: TestHelper\r
+       {\r
+               private Form f;\r
+               protected override void SetUp ()\r
+               {\r
+                       base.SetUp ();\r
+                       f = new Form ();\r
+                       f.AutoSize = false;\r
+                       f.ClientSize = new Size (100, 300);\r
+                       f.ShowInTaskbar = false;\r
+                       f.Show ();\r
+               }\r
+\r
+               protected override void TearDown ()\r
+               {\r
+                       f.Dispose ();\r
+                       base.TearDown ();\r
+               }\r
+\r
+               [Test]\r
+               public void AutoSizeGrowOnly_ResizeIfLarger ()\r
+               {\r
+                       var panel = new FlowLayoutPanel ();\r
+                       panel.SuspendLayout ();\r
+                       panel.AutoSize = true;\r
+                       panel.AutoSizeMode = AutoSizeMode.GrowOnly;\r
+                       panel.WrapContents = true;\r
+                       panel.Bounds = new Rectangle (5, 5, 10, 10);\r
+                       panel.Dock = DockStyle.None;\r
+\r
+                       var c = new Label ();\r
+                       c.Size = new Size (90, 25);\r
+                       panel.Controls.Add (c);\r
+                       c = new Label ();\r
+                       c.Size = new Size (90, 25);\r
+                       panel.Controls.Add (c);\r
+                       f.Controls.Add (panel);\r
+                       panel.ResumeLayout (true);\r
+\r
+                       Assert.AreEqual (192, panel.Width, "1"); // 2 * 90 + 4 * 3 margin\r
+                       Assert.AreEqual (25, panel.Height, "2");\r
+               }\r
+\r
+               [Test]\r
+               public void AutoSizeGrowOnly_ResizeIfLarger_DockBottom ()\r
+               {\r
+                       var panel = new FlowLayoutPanel ();\r
+                       panel.SuspendLayout ();\r
+                       panel.AutoSize = true;\r
+                       panel.AutoSizeMode = AutoSizeMode.GrowOnly;\r
+                       panel.WrapContents = true;\r
+                       panel.Bounds = new Rectangle (5, 5, 10, 10);\r
+                       panel.Dock = DockStyle.Bottom;\r
+\r
+                       var c = new Label ();\r
+                       c.Size = new Size (90, 25);\r
+                       panel.Controls.Add (c);\r
+                       c = new Label ();\r
+                       c.Size = new Size (90, 25);\r
+                       panel.Controls.Add (c);\r
+                       f.Controls.Add (panel);\r
+                       panel.ResumeLayout (true);\r
+\r
+                       Assert.AreEqual (250, panel.Top, "1");\r
+                       Assert.AreEqual (f.ClientRectangle.Width, panel.Width, "2");\r
+                       Assert.AreEqual (50, panel.Height, "3");\r
+               }\r
+\r
+               [Test]\r
+               public void AutoSizeGrowOnly_DontResizeIfSmaller ()\r
+               {\r
+                       var panel = new FlowLayoutPanel ();\r
+                       panel.SuspendLayout ();\r
+                       panel.AutoSize = true;\r
+                       panel.AutoSizeMode = AutoSizeMode.GrowOnly;\r
+                       panel.WrapContents = true;\r
+                       panel.Bounds = new Rectangle(5, 5, 100, 100);\r
+                       panel.Dock = DockStyle.None;\r
+\r
+                       var c = new Label ();\r
+                       c.Size = new Size (90, 25);\r
+                       panel.Controls.Add (c);\r
+                       f.Controls.Add (panel);\r
+                       panel.ResumeLayout (true);\r
+\r
+                       Assert.AreEqual (100, panel.Width, "1");\r
+                       Assert.AreEqual (100, panel.Height, "2");\r
+               }\r
+\r
+               [Test]\r
+               public void AutoSizeGrowOnly_ResizeIfSmaller_DockTop ()\r
+               {\r
+                       var panel = new FlowLayoutPanel ();\r
+                       panel.SuspendLayout ();\r
+                       panel.AutoSize = true;\r
+                       panel.AutoSizeMode = AutoSizeMode.GrowOnly;\r
+                       panel.WrapContents = true;\r
+                       panel.Bounds = new Rectangle(5, 5, 100, 100);\r
+                       panel.Dock = DockStyle.Top;\r
+\r
+                       var c = new Label ();\r
+                       c.Size = new Size (90, 25);\r
+                       panel.Controls.Add (c);\r
+                       f.Controls.Add(panel);\r
+                       panel.ResumeLayout (true);\r
+\r
+                       Assert.AreEqual (0, panel.Top, "1");\r
+                       Assert.AreEqual (f.ClientRectangle.Width, panel.Width, "2");\r
+                       Assert.AreEqual (25, panel.Height, "3");\r
+               }\r
+\r
+               [Test]\r
+               public void AutoSizeGrowOnly_ResizeIfSmaller_DockBottom ()\r
+               {\r
+                       var panel = new FlowLayoutPanel ();\r
+                       panel.SuspendLayout ();\r
+                       panel.AutoSize = true;\r
+                       panel.AutoSizeMode = AutoSizeMode.GrowOnly;\r
+                       panel.WrapContents = true;\r
+                       panel.Bounds = new Rectangle(5, 5, 100, 100);\r
+                       panel.Dock = DockStyle.Bottom;\r
+\r
+                       var c = new Label ();\r
+                       c.Size = new Size (90, 25);\r
+                       panel.Controls.Add (c);\r
+                       f.Controls.Add(panel);\r
+                       panel.ResumeLayout (true);\r
+\r
+                       Assert.AreEqual (275, panel.Top, "1");\r
+                       Assert.AreEqual (f.ClientRectangle.Width, panel.Width, "2");\r
+                       Assert.AreEqual (25, panel.Height, "3");\r
+               }\r
+\r
+               [Test]\r
+               public void AutoSizeGrowOnly_ResizeIfSmaller_DockLeft ()\r
+               {\r
+                       f.ClientSize = new Size (300, 100);\r
+\r
+                       var panel = new FlowLayoutPanel ();\r
+                       panel.SuspendLayout ();\r
+                       panel.AutoSize = true;\r
+                       panel.AutoSizeMode = AutoSizeMode.GrowOnly;\r
+                       panel.WrapContents = true;\r
+                       panel.Bounds = new Rectangle(5, 5, 100, 100);\r
+                       panel.Dock = DockStyle.Left;\r
+\r
+                       var c = new Label ();\r
+                       c.Size = new Size (25, 90);\r
+                       panel.Controls.Add (c);\r
+                       f.Controls.Add(panel);\r
+                       panel.ResumeLayout (true);\r
+\r
+                       Assert.AreEqual (0, panel.Left, "1");\r
+                       Assert.AreEqual (f.ClientRectangle.Height, panel.Height, "2");\r
+                       Assert.AreEqual (31, panel.Width, "3"); // 25 + 2*3 margin\r
+               }\r
+\r
+               [Test]\r
+               public void AutoSizeGrowOnly_ResizeIfSmaller_DockRight ()\r
+               {\r
+                       f.ClientSize = new Size (300, 100);\r
+\r
+                       var panel = new FlowLayoutPanel ();\r
+                       panel.SuspendLayout ();\r
+                       panel.AutoSize = true;\r
+                       panel.AutoSizeMode = AutoSizeMode.GrowOnly;\r
+                       panel.WrapContents = true;\r
+                       panel.Bounds = new Rectangle(5, 5, 100, 100);\r
+                       panel.Dock = DockStyle.Right;\r
+\r
+                       var c = new Label ();\r
+                       c.Size = new Size (25, 90);\r
+                       panel.Controls.Add (c);\r
+                       f.Controls.Add(panel);\r
+                       panel.ResumeLayout (true);\r
+\r
+                       Assert.AreEqual (269, panel.Left, "1");\r
+                       Assert.AreEqual (f.ClientRectangle.Height, panel.Height, "2");\r
+                       Assert.AreEqual (31, panel.Width, "3"); // 25 + 2*3 margin\r
+               }\r
+\r
+               [Test]\r
+               public void AutoSizeGrowAndShrink_ResizeIfSmaller ()\r
+               {\r
+                       var panel = new FlowLayoutPanel ();\r
+                       panel.SuspendLayout ();\r
+                       panel.AutoSize = true;\r
+                       panel.AutoSizeMode = AutoSizeMode.GrowAndShrink;\r
+                       panel.WrapContents = true;\r
+                       panel.Bounds = new Rectangle (5, 5, 100, 100);\r
+                       panel.Dock = DockStyle.None;\r
+\r
+                       var c = new Label ();\r
+                       c.Size = new Size (90, 25);\r
+                       panel.Controls.Add (c);\r
+                       f.Controls.Add(panel);\r
+                       panel.ResumeLayout (true);\r
+\r
+                       Assert.AreEqual (96, panel.Width, "1"); // 90 + 2*3 margin\r
+                       Assert.AreEqual (25, panel.Height, "2");\r
+               }\r
+\r
+               [Test]\r
+               public void AutoSizeGrowAndShrink_ResizeIfSmaller_DockBottom ()\r
+               {\r
+                       var panel = new FlowLayoutPanel ();\r
+                       panel.SuspendLayout ();\r
+                       panel.AutoSize = true;\r
+                       panel.AutoSizeMode = AutoSizeMode.GrowAndShrink;\r
+                       panel.WrapContents = true;\r
+                       panel.Bounds = new Rectangle (5, 5, 100, 100);\r
+                       panel.Dock = DockStyle.Bottom;\r
+\r
+                       var c = new Label ();\r
+                       c.Size = new Size (90, 25);\r
+                       panel.Controls.Add (c);\r
+                       f.Controls.Add (panel);\r
+                       panel.ResumeLayout (true);\r
+\r
+                       Assert.AreEqual (275, panel.Top, "1");\r
+                       Assert.AreEqual (f.ClientRectangle.Width, panel.Width, "2");\r
+                       Assert.AreEqual (25, panel.Height, "3");\r
+               }\r
+\r
+               [Test]\r
+               public void NoAutoSize_DontResizeIfLarger ()\r
+               {\r
+                       var panel = new FlowLayoutPanel ();\r
+                       panel.SuspendLayout ();\r
+                       panel.AutoSize = false;\r
+                       panel.WrapContents = true;\r
+                       panel.Bounds = new Rectangle (5, 5, 10, 10);\r
+                       panel.Dock = DockStyle.None;\r
+\r
+                       var c = new Label ();\r
+                       c.Size = new Size (90, 25);\r
+                       panel.Controls.Add (c);\r
+                       c = new Label ();\r
+                       c.Size = new Size (90, 25);\r
+                       panel.Controls.Add (c);\r
+                       f.Controls.Add (panel);\r
+                       panel.ResumeLayout (true);\r
+\r
+                       Assert.AreEqual (10, panel.Width, "1");\r
+                       Assert.AreEqual (10, panel.Height, "2");\r
+               }\r
+\r
+               [Test]\r
+               public void NoAutoSize_DontResizeIfLarger_DockBottom ()\r
+               {\r
+                       var panel = new FlowLayoutPanel ();\r
+                       panel.SuspendLayout ();\r
+                       panel.AutoSize = false;\r
+                       panel.WrapContents = true;\r
+                       panel.Bounds = new Rectangle (5, 5, 10, 10);\r
+                       panel.Dock = DockStyle.Bottom;\r
+\r
+                       var c = new Label ();\r
+                       c.Size = new Size (90, 25);\r
+                       panel.Controls.Add (c);\r
+                       c = new Label ();\r
+                       c.Size = new Size (90, 25);\r
+                       panel.Controls.Add (c);\r
+                       f.Controls.Add (panel);\r
+                       panel.ResumeLayout (true);\r
+\r
+                       Assert.AreEqual (290, panel.Top, "1");\r
+                       Assert.AreEqual (f.ClientRectangle.Width, panel.Width, "2");\r
+                       Assert.AreEqual (10, panel.Height, "3");\r
+               }\r
+\r
+               [Test]\r
+               public void NoAutoSize_DontResizeIfSmaller ()\r
+               {\r
+                       var panel = new FlowLayoutPanel ();\r
+                       panel.SuspendLayout ();\r
+                       panel.AutoSize = false;\r
+                       panel.WrapContents = true;\r
+                       panel.Bounds = new Rectangle(5, 5, 100, 100);\r
+                       panel.Dock = DockStyle.None;\r
+\r
+                       var c = new Label ();\r
+                       c.Size = new Size (90, 25);\r
+                       panel.Controls.Add (c);\r
+                       f.Controls.Add (panel);\r
+                       panel.ResumeLayout (true);\r
+\r
+                       Assert.AreEqual (100, panel.Width, "1");\r
+                       Assert.AreEqual (100, panel.Height, "2");\r
+               }\r
+\r
+               [Test]\r
+               public void NoAutoSize_DontResizeIfSmaller_DockBottom ()\r
+               {\r
+                       var panel = new FlowLayoutPanel ();\r
+                       panel.SuspendLayout ();\r
+                       panel.AutoSize = false;\r
+                       panel.WrapContents = true;\r
+                       panel.Bounds = new Rectangle(5, 5, 100, 100);\r
+                       panel.Dock = DockStyle.Bottom;\r
+\r
+                       var c = new Label ();\r
+                       c.Size = new Size (90, 25);\r
+                       panel.Controls.Add (c);\r
+                       f.Controls.Add(panel);\r
+                       panel.ResumeLayout (true);\r
+\r
+                       Assert.AreEqual (200, panel.Top, "1");\r
+                       Assert.AreEqual (f.ClientRectangle.Width, panel.Width, "2");\r
+                       Assert.AreEqual (100, panel.Height, "3");\r
+               }\r
+       }\r
 }\r
-#endif\r