2008-11-24 Jonathan Pobst <monkey@jpobst.com>
[mono.git] / mcs / class / Managed.Windows.Forms / Test / System.Windows.Forms / SplitContainerTests.cs
1 #if NET_2_0\r
2 using System;\r
3 using NUnit.Framework;\r
4 using System.Windows.Forms;\r
5 using System.Drawing;\r
6 \r
7 namespace MonoTests.System.Windows.Forms\r
8 {\r
9         [TestFixture]\r
10         public class SplitContainerTests : TestHelper\r
11         {\r
12                 [Test]\r
13                 public void TestSplitContainerConstruction ()\r
14                 {\r
15                         SplitContainer sc = new SplitContainer ();\r
16 \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
31                 }\r
32                 \r
33                 [Test]\r
34                 public void TestProperties ()\r
35                 {\r
36                         SplitContainer sc = new SplitContainer ();\r
37                         \r
38                         sc.BorderStyle = BorderStyle.FixedSingle;\r
39                         Assert.AreEqual (BorderStyle.FixedSingle, sc.BorderStyle, "C1");\r
40 \r
41                         sc.Dock =  DockStyle.Fill;\r
42                         Assert.AreEqual (DockStyle.Fill, sc.Dock, "C2");\r
43 \r
44                         sc.FixedPanel = FixedPanel.Panel1;\r
45                         Assert.AreEqual (FixedPanel.Panel1, sc.FixedPanel, "C3");\r
46 \r
47                         sc.IsSplitterFixed = true;\r
48                         Assert.AreEqual (true, sc.IsSplitterFixed, "C4");\r
49 \r
50                         sc.Orientation = Orientation.Horizontal;\r
51                         Assert.AreEqual (Orientation.Horizontal, sc.Orientation, "C5");\r
52 \r
53                         sc.Panel1Collapsed = true;\r
54                         Assert.AreEqual (true, sc.Panel1Collapsed, "C6");\r
55                         \r
56                         sc.Panel1MinSize = 10;\r
57                         Assert.AreEqual (10, sc.Panel1MinSize, "C7");\r
58 \r
59                         sc.Panel2Collapsed = true;\r
60                         Assert.AreEqual (true, sc.Panel2Collapsed, "C8");\r
61 \r
62                         sc.Panel2MinSize = 10;\r
63                         Assert.AreEqual (10, sc.Panel2MinSize, "C9");\r
64 \r
65                         sc.SplitterDistance = 77;\r
66                         Assert.AreEqual (77, sc.SplitterDistance, "C10");\r
67                         \r
68                         sc.SplitterIncrement = 5;\r
69                         Assert.AreEqual (5, sc.SplitterIncrement, "C11");\r
70                         \r
71                         sc.SplitterWidth = 10;\r
72                         Assert.AreEqual (10, sc.SplitterWidth, "C12");\r
73                 }\r
74                 \r
75                 [Test]\r
76                 public void TestPanelProperties ()\r
77                 {\r
78                         SplitContainer sc = new SplitContainer ();\r
79                         SplitterPanel p = sc.Panel1;\r
80 \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
84 \r
85                         Assert.AreEqual (false, p.AutoSize, "D2");\r
86                         p.AutoSize = true;\r
87                         Assert.AreEqual (true, p.AutoSize, "D2-2");\r
88 \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
92 \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
96 \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
100 \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
104 \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
108 \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
112 \r
113                         Assert.AreEqual (String.Empty, p.Name, "D10");\r
114                         p.Name = "MyPanel";\r
115                         Assert.AreEqual ("MyPanel", p.Name, "D10-2");\r
116 \r
117                         // We set a new max/min size above, so let's start over with new controls\r
118                         sc = new SplitContainer();\r
119                         p = sc.Panel1;\r
120 \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
124 \r
125                         //Assert.AreEqual (0, p.TabIndex, "D13");\r
126                         p.TabIndex = 4;\r
127                         Assert.AreEqual (4, p.TabIndex, "D13-2");\r
128 \r
129                         Assert.AreEqual (false, p.TabStop, "D14");\r
130                         p.TabStop = true;\r
131                         Assert.AreEqual (true, p.TabStop, "D14-2");\r
132 \r
133                         Assert.AreEqual (true, p.Visible, "D15");\r
134                         p.Visible = false;\r
135                         Assert.AreEqual (false, p.Visible, "D15-2");\r
136                 }\r
137                 \r
138                 [Test]\r
139                 [ExpectedException (typeof (NotSupportedException))]\r
140                 public void TestPanelHeightProperty ()\r
141                 {\r
142                         SplitContainer sc = new SplitContainer ();\r
143                         SplitterPanel p = sc.Panel1;\r
144 \r
145                         Assert.AreEqual (100, p.Height, "E1");\r
146                         \r
147                         p.Height = 200;\r
148                 }\r
149 \r
150                 [Test]\r
151                 [ExpectedException (typeof (NotSupportedException))]\r
152                 public void TestPanelWidthProperty ()\r
153                 {\r
154                         SplitContainer sc = new SplitContainer ();\r
155                         SplitterPanel p = sc.Panel1;\r
156 \r
157                         Assert.AreEqual (50, p.Width, "F1");\r
158 \r
159                         p.Width = 200;\r
160                 }\r
161 \r
162                 [Test]\r
163                 [ExpectedException (typeof (NotSupportedException))]\r
164                 public void TestPanelParentProperty ()\r
165                 {\r
166                         SplitContainer sc = new SplitContainer ();\r
167                         SplitContainer sc2 = new SplitContainer ();\r
168                         SplitterPanel p = sc.Panel1;\r
169 \r
170                         Assert.AreEqual (sc, p.Parent, "G1");\r
171 \r
172                         p.Parent = sc2;\r
173                 }\r
174 \r
175                 [Test]\r
176                 public void TestSplitterPosition ()\r
177                 {\r
178                         SplitContainer sc = new SplitContainer ();\r
179 \r
180                         Assert.AreEqual (new Rectangle (50, 0, 4, 100), sc.SplitterRectangle, "H1");\r
181                         \r
182                         sc.Orientation = Orientation.Horizontal;\r
183                         Assert.AreEqual (new Rectangle (0, 50, 150, 4), sc.SplitterRectangle, "H2");\r
184                 }\r
185 \r
186                 [Test]\r
187                 public void TestFixedPanelNone ()\r
188                 {\r
189                         SplitContainer sc = new SplitContainer ();\r
190 \r
191                         Assert.AreEqual (50, sc.SplitterDistance, "I1");\r
192 \r
193                         sc.Width = 300;\r
194                         Assert.AreEqual (100, sc.SplitterDistance, "I2");\r
195                 }\r
196                 \r
197                 [Test]\r
198                 public void TestFixedPanel1 ()\r
199                 {\r
200                         SplitContainer sc = new SplitContainer ();\r
201                         sc.FixedPanel = FixedPanel.Panel1;\r
202                         \r
203                         Assert.AreEqual (50, sc.SplitterDistance, "J1");\r
204 \r
205                         sc.Width = 300;\r
206                         Assert.AreEqual (50, sc.SplitterDistance, "J2");\r
207                 }\r
208                 \r
209                 [Test]\r
210                 public void TestFixedPanel2 ()\r
211                 {\r
212                         SplitContainer sc = new SplitContainer ();\r
213                         sc.FixedPanel = FixedPanel.Panel2;\r
214 \r
215                         Assert.AreEqual (50, sc.SplitterDistance, "K1");\r
216 \r
217                         sc.Width = 300;\r
218                         Assert.AreEqual (200, sc.SplitterDistance, "K2");\r
219                 }\r
220 \r
221                 [Test]\r
222                 public void TestSplitterDistance ()\r
223                 {\r
224                         SplitContainer sc = new SplitContainer ();\r
225 \r
226                         Assert.AreEqual (new Rectangle (50, 0, 4, 100), sc.SplitterRectangle, "L1");\r
227 \r
228                         sc.SplitterDistance = 100;\r
229                         Assert.AreEqual (new Rectangle (100, 0, 4, 100), sc.SplitterRectangle, "L2");\r
230                 }\r
231 \r
232                 [Test]\r
233                 public void TestSplitterWidth ()\r
234                 {\r
235                         SplitContainer sc = new SplitContainer ();\r
236 \r
237                         Assert.AreEqual (new Rectangle (50, 0, 4, 100), sc.SplitterRectangle, "M1");\r
238 \r
239                         sc.SplitterWidth = 10;\r
240                         Assert.AreEqual (new Rectangle (50, 0, 10, 100), sc.SplitterRectangle, "M2");\r
241                 }\r
242 \r
243                 [Test]\r
244                 public void MethodScaleControl ()\r
245                 {\r
246                         Form f = new Form ();\r
247 \r
248                         PublicSplitContainer gb = new PublicSplitContainer ();\r
249                         gb.Location = new Point (5, 10);\r
250                         f.Controls.Add (gb);\r
251 \r
252                         Assert.AreEqual (new Rectangle (5, 10, 150, 100), gb.Bounds, "A1");\r
253 \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
256 \r
257                         gb.PublicScaleControl (new SizeF (.5f, .5f), BoundsSpecified.Location);\r
258                         Assert.AreEqual (new Rectangle (5, 10, 300, 200), gb.Bounds, "A3");\r
259 \r
260                         gb.PublicScaleControl (new SizeF (.5f, .5f), BoundsSpecified.Size);\r
261                         Assert.AreEqual (new Rectangle (5, 10, 150, 100), gb.Bounds, "A4");\r
262 \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
265 \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
268 \r
269                         gb.PublicScaleControl (new SizeF (.2f, .2f), BoundsSpecified.Size);\r
270                         Assert.AreEqual (new Rectangle (5, 10, 262, 175), gb.Bounds, "A7");\r
271 \r
272                         f.Dispose ();\r
273                 }\r
274 \r
275                 [Test]\r
276                 public void ControlStyle ()\r
277                 {\r
278                         PublicSplitContainer epp = new PublicSplitContainer ();\r
279 \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
288 \r
289                         Assert.AreEqual (cs, epp.GetControlStyles (), "Styles");\r
290                 }\r
291 \r
292                 private class PublicSplitContainer : SplitContainer\r
293                 {\r
294                         public void PublicScaleControl (SizeF factor, BoundsSpecified specified)\r
295                         {\r
296                                 base.ScaleControl (factor, specified);\r
297                         }\r
298 \r
299                         public ControlStyles GetControlStyles ()\r
300                         {\r
301                                 ControlStyles retval = (ControlStyles)0;\r
302 \r
303                                 foreach (ControlStyles cs in Enum.GetValues (typeof (ControlStyles)))\r
304                                         if (this.GetStyle (cs) == true)\r
305                                                 retval |= cs;\r
306 \r
307                                 return retval;\r
308                         }\r
309                 }\r
310         }\r
311 }\r
312 #endif