3 using NUnit.Framework;
\r
4 using System.Windows.Forms;
\r
5 using System.Drawing;
\r
7 namespace MonoTests.System.Windows.Forms
\r
10 public class SplitContainerTests : TestHelper
\r
13 public void TestSplitContainerConstruction ()
\r
15 SplitContainer sc = new SplitContainer ();
\r
17 Assert.AreEqual (new Size (150, 100), sc.Size, "A1");
\r
18 Assert.AreEqual (FixedPanel.None, sc.FixedPanel, "A2");
\r
19 Assert.AreEqual (false, sc.IsSplitterFixed, "A3");
\r
20 Assert.AreEqual (Orientation.Vertical, sc.Orientation, "A4");
\r
21 Assert.AreEqual (false, sc.Panel1Collapsed, "A6");
\r
22 Assert.AreEqual (25, sc.Panel1MinSize, "A7");
\r
23 Assert.AreEqual (false, sc.Panel2Collapsed, "A9");
\r
24 Assert.AreEqual (25, sc.Panel2MinSize, "A10");
\r
25 Assert.AreEqual (50, sc.SplitterDistance, "A11");
\r
26 Assert.AreEqual (1, sc.SplitterIncrement, "A12");
\r
27 Assert.AreEqual (new Rectangle(50, 0, 4, 100), sc.SplitterRectangle, "A13");
\r
28 Assert.AreEqual (4, sc.SplitterWidth, "A14");
\r
29 Assert.AreEqual (BorderStyle.None, sc.BorderStyle, "A14");
\r
30 Assert.AreEqual (DockStyle.None, sc.Dock, "A15");
\r
34 public void TestProperties ()
\r
36 SplitContainer sc = new SplitContainer ();
\r
38 sc.BorderStyle = BorderStyle.FixedSingle;
\r
39 Assert.AreEqual (BorderStyle.FixedSingle, sc.BorderStyle, "C1");
\r
41 sc.Dock = DockStyle.Fill;
\r
42 Assert.AreEqual (DockStyle.Fill, sc.Dock, "C2");
\r
44 sc.FixedPanel = FixedPanel.Panel1;
\r
45 Assert.AreEqual (FixedPanel.Panel1, sc.FixedPanel, "C3");
\r
47 sc.IsSplitterFixed = true;
\r
48 Assert.AreEqual (true, sc.IsSplitterFixed, "C4");
\r
50 sc.Orientation = Orientation.Horizontal;
\r
51 Assert.AreEqual (Orientation.Horizontal, sc.Orientation, "C5");
\r
53 sc.Panel1Collapsed = true;
\r
54 Assert.AreEqual (true, sc.Panel1Collapsed, "C6");
\r
56 sc.Panel1MinSize = 10;
\r
57 Assert.AreEqual (10, sc.Panel1MinSize, "C7");
\r
59 sc.Panel2Collapsed = true;
\r
60 Assert.AreEqual (true, sc.Panel2Collapsed, "C8");
\r
62 sc.Panel2MinSize = 10;
\r
63 Assert.AreEqual (10, sc.Panel2MinSize, "C9");
\r
65 sc.SplitterDistance = 77;
\r
66 Assert.AreEqual (77, sc.SplitterDistance, "C10");
\r
68 sc.SplitterIncrement = 5;
\r
69 Assert.AreEqual (5, sc.SplitterIncrement, "C11");
\r
71 sc.SplitterWidth = 10;
\r
72 Assert.AreEqual (10, sc.SplitterWidth, "C12");
\r
76 public void TestPanelProperties ()
\r
78 SplitContainer sc = new SplitContainer ();
\r
79 SplitterPanel p = sc.Panel1;
\r
81 Assert.AreEqual (AnchorStyles.Top | AnchorStyles.Left, p.Anchor, "D1");
\r
82 p.Anchor = AnchorStyles.None;
\r
83 Assert.AreEqual (AnchorStyles.None, p.Anchor, "D1-2");
\r
85 Assert.AreEqual (false, p.AutoSize, "D2");
\r
87 Assert.AreEqual (true, p.AutoSize, "D2-2");
\r
89 Assert.AreEqual (AutoSizeMode.GrowOnly, p.AutoSizeMode, "D3");
\r
90 p.AutoSizeMode = AutoSizeMode.GrowAndShrink;
\r
91 Assert.AreEqual (AutoSizeMode.GrowOnly, p.AutoSizeMode, "D3-2");
\r
93 Assert.AreEqual (BorderStyle.None, p.BorderStyle, "D4");
\r
94 p.BorderStyle = BorderStyle.FixedSingle;
\r
95 Assert.AreEqual (BorderStyle.FixedSingle, p.BorderStyle, "D4-2");
\r
97 Assert.AreEqual (DockStyle.None, p.Dock, "D5");
\r
98 p.Dock = DockStyle.Left;
\r
99 Assert.AreEqual (DockStyle.Left, p.Dock, "D5-2");
\r
101 Assert.AreEqual (new Point (0, 0), p.Location, "D7");
\r
102 p.Location = new Point (10, 10);
\r
103 Assert.AreEqual (new Point (0, 0), p.Location, "D7-2");
\r
105 Assert.AreEqual (new Size (0, 0), p.MaximumSize, "D8");
\r
106 p.MaximumSize = new Size (10, 10);
\r
107 Assert.AreEqual (new Size (10, 10), p.MaximumSize, "D8-2");
\r
109 Assert.AreEqual (new Size (0, 0), p.MinimumSize, "D9");
\r
110 p.MinimumSize = new Size (10, 10);
\r
111 Assert.AreEqual (new Size (10, 10), p.MinimumSize, "D9-2");
\r
113 Assert.AreEqual (String.Empty, p.Name, "D10");
\r
114 p.Name = "MyPanel";
\r
115 Assert.AreEqual ("MyPanel", p.Name, "D10-2");
\r
117 // We set a new max/min size above, so let's start over with new controls
\r
118 sc = new SplitContainer();
\r
121 Assert.AreEqual (new Size (50, 100), p.Size, "D12");
\r
122 p.Size = new Size (10, 10);
\r
123 Assert.AreEqual (new Size (50, 100), p.Size, "D12-2");
\r
125 //Assert.AreEqual (0, p.TabIndex, "D13");
\r
127 Assert.AreEqual (4, p.TabIndex, "D13-2");
\r
129 Assert.AreEqual (false, p.TabStop, "D14");
\r
131 Assert.AreEqual (true, p.TabStop, "D14-2");
\r
133 Assert.AreEqual (true, p.Visible, "D15");
\r
135 Assert.AreEqual (false, p.Visible, "D15-2");
\r
139 [ExpectedException (typeof (NotSupportedException))]
\r
140 public void TestPanelHeightProperty ()
\r
142 SplitContainer sc = new SplitContainer ();
\r
143 SplitterPanel p = sc.Panel1;
\r
145 Assert.AreEqual (100, p.Height, "E1");
\r
151 [ExpectedException (typeof (NotSupportedException))]
\r
152 public void TestPanelWidthProperty ()
\r
154 SplitContainer sc = new SplitContainer ();
\r
155 SplitterPanel p = sc.Panel1;
\r
157 Assert.AreEqual (50, p.Width, "F1");
\r
163 [ExpectedException (typeof (NotSupportedException))]
\r
164 public void TestPanelParentProperty ()
\r
166 SplitContainer sc = new SplitContainer ();
\r
167 SplitContainer sc2 = new SplitContainer ();
\r
168 SplitterPanel p = sc.Panel1;
\r
170 Assert.AreEqual (sc, p.Parent, "G1");
\r
176 public void TestSplitterPosition ()
\r
178 SplitContainer sc = new SplitContainer ();
\r
180 Assert.AreEqual (new Rectangle (50, 0, 4, 100), sc.SplitterRectangle, "H1");
\r
182 sc.Orientation = Orientation.Horizontal;
\r
183 Assert.AreEqual (new Rectangle (0, 50, 150, 4), sc.SplitterRectangle, "H2");
\r
187 public void TestFixedPanelNone ()
\r
189 SplitContainer sc = new SplitContainer ();
\r
191 Assert.AreEqual (50, sc.SplitterDistance, "I1");
\r
194 Assert.AreEqual (100, sc.SplitterDistance, "I2");
\r
198 public void TestFixedPanel1 ()
\r
200 SplitContainer sc = new SplitContainer ();
\r
201 sc.FixedPanel = FixedPanel.Panel1;
\r
203 Assert.AreEqual (50, sc.SplitterDistance, "J1");
\r
206 Assert.AreEqual (50, sc.SplitterDistance, "J2");
\r
210 public void TestFixedPanel2 ()
\r
212 SplitContainer sc = new SplitContainer ();
\r
213 sc.FixedPanel = FixedPanel.Panel2;
\r
215 Assert.AreEqual (50, sc.SplitterDistance, "K1");
\r
218 Assert.AreEqual (200, sc.SplitterDistance, "K2");
\r
222 public void TestSplitterDistance ()
\r
224 SplitContainer sc = new SplitContainer ();
\r
226 Assert.AreEqual (new Rectangle (50, 0, 4, 100), sc.SplitterRectangle, "L1");
\r
228 sc.SplitterDistance = 100;
\r
229 Assert.AreEqual (new Rectangle (100, 0, 4, 100), sc.SplitterRectangle, "L2");
\r
233 public void TestSplitterWidth ()
\r
235 SplitContainer sc = new SplitContainer ();
\r
237 Assert.AreEqual (new Rectangle (50, 0, 4, 100), sc.SplitterRectangle, "M1");
\r
239 sc.SplitterWidth = 10;
\r
240 Assert.AreEqual (new Rectangle (50, 0, 10, 100), sc.SplitterRectangle, "M2");
\r
244 public void MethodScaleControl ()
\r
246 Form f = new Form ();
\r
248 PublicSplitContainer gb = new PublicSplitContainer ();
\r
249 gb.Location = new Point (5, 10);
\r
250 f.Controls.Add (gb);
\r
252 Assert.AreEqual (new Rectangle (5, 10, 150, 100), gb.Bounds, "A1");
\r
254 gb.PublicScaleControl (new SizeF (2.0f, 2.0f), BoundsSpecified.All);
\r
255 Assert.AreEqual (new Rectangle (10, 20, 300, 200), gb.Bounds, "A2");
\r
257 gb.PublicScaleControl (new SizeF (.5f, .5f), BoundsSpecified.Location);
\r
258 Assert.AreEqual (new Rectangle (5, 10, 300, 200), gb.Bounds, "A3");
\r
260 gb.PublicScaleControl (new SizeF (.5f, .5f), BoundsSpecified.Size);
\r
261 Assert.AreEqual (new Rectangle (5, 10, 150, 100), gb.Bounds, "A4");
\r
263 gb.PublicScaleControl (new SizeF (3.5f, 3.5f), BoundsSpecified.Size);
\r
264 Assert.AreEqual (new Rectangle (5, 10, 525, 350), gb.Bounds, "A5");
\r
266 gb.PublicScaleControl (new SizeF (2.5f, 2.5f), BoundsSpecified.Size);
\r
267 Assert.AreEqual (new Rectangle (5, 10, 1312, 875), gb.Bounds, "A6");
\r
269 gb.PublicScaleControl (new SizeF (.2f, .2f), BoundsSpecified.Size);
\r
270 Assert.AreEqual (new Rectangle (5, 10, 262, 175), gb.Bounds, "A7");
\r
276 public void ControlStyle ()
\r
278 PublicSplitContainer epp = new PublicSplitContainer ();
\r
280 ControlStyles cs = ControlStyles.ContainerControl;
\r
281 cs |= ControlStyles.UserPaint;
\r
282 cs |= ControlStyles.StandardClick;
\r
283 cs |= ControlStyles.SupportsTransparentBackColor;
\r
284 cs |= ControlStyles.StandardDoubleClick;
\r
285 cs |= ControlStyles.Selectable;
\r
286 cs |= ControlStyles.OptimizedDoubleBuffer;
\r
287 cs |= ControlStyles.UseTextForAccessibility;
\r
289 Assert.AreEqual (cs, epp.GetControlStyles (), "Styles");
\r
292 private class PublicSplitContainer : SplitContainer
\r
294 public void PublicScaleControl (SizeF factor, BoundsSpecified specified)
\r
296 base.ScaleControl (factor, specified);
\r
299 public ControlStyles GetControlStyles ()
\r
301 ControlStyles retval = (ControlStyles)0;
\r
303 foreach (ControlStyles cs in Enum.GetValues (typeof (ControlStyles)))
\r
304 if (this.GetStyle (cs) == true)
\r