4 using NUnit.Framework;
\r
5 using System.Windows.Forms;
\r
6 using System.Drawing;
\r
7 using System.Collections.Generic;
\r
9 namespace MonoTests.System.Windows.Forms
\r
12 public class FlowPanelTests : TestHelper
\r
15 public void TestConstruction()
\r
17 FlowLayoutPanel p = new FlowLayoutPanel();
\r
19 Assert.AreEqual(FlowDirection.LeftToRight, p.FlowDirection, "A1");
\r
20 Assert.AreEqual(true, p.WrapContents, "A2");
\r
21 Assert.AreEqual("System.Windows.Forms.Layout.FlowLayout", p.LayoutEngine.ToString(), "A3");
\r
23 p.FlowDirection = FlowDirection.BottomUp;
\r
24 p.WrapContents = false;
\r
26 Assert.AreEqual (FlowDirection.BottomUp, p.FlowDirection, "A4");
\r
27 Assert.AreEqual (false, p.WrapContents, "A5");
\r
31 public void TestExtenderProvider()
\r
33 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
34 Button b = new Button();
\r
36 Assert.AreEqual(false, p.GetFlowBreak(b), "B1");
\r
38 p.SetFlowBreak(b, true);
\r
40 Assert.AreEqual (true, p.GetFlowBreak (b), "B2");
\r
43 #region LeftToRight Tests
\r
45 public void LeftToRightLayoutTest1 ()
\r
48 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
50 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
51 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
53 Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[0].Bounds, "C1");
\r
54 Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[1].Bounds, "C2");
\r
58 public void LeftToRightLayoutTest2 ()
\r
60 // Dock Fill and Normal
\r
61 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
63 p.Controls.Add (CreateButton (100, 50, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
64 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
66 Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[0].Bounds, "D1");
\r
67 Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[1].Bounds, "D2");
\r
71 public void LeftToRightLayoutTest3 ()
\r
73 // Anchored: Top/Bottom and Normal
\r
74 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
76 p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.Top | AnchorStyles.Bottom));
\r
77 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
79 Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[0].Bounds, "E1");
\r
80 Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[1].Bounds, "E2");
\r
84 public void LeftToRightLayoutTest4 ()
\r
86 // Anchored: Top/Bottom and Dock Fill
\r
87 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
89 p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.Top | AnchorStyles.Bottom));
\r
90 p.Controls.Add (CreateButton (100, 100, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
92 Assert.AreEqual (new Rectangle (0, 0, 100, 0), p.Controls[0].Bounds, "F1");
\r
93 Assert.AreEqual (new Rectangle (100, 0, 100, 0), p.Controls[1].Bounds, "F2");
\r
97 public void LeftToRightLayoutTest5 ()
\r
99 // 2 Anchored: Top/Bottom
\r
100 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
102 p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.Top | AnchorStyles.Bottom));
\r
103 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Top | AnchorStyles.Bottom));
\r
105 Assert.AreEqual (new Rectangle (0, 0, 100, 0), p.Controls[0].Bounds, "G1");
\r
106 Assert.AreEqual (new Rectangle (100, 0, 100, 0), p.Controls[1].Bounds, "G2");
\r
110 public void LeftToRightLayoutTest6 ()
\r
113 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
115 p.Controls.Add (CreateButton (100, 50, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
116 p.Controls.Add (CreateButton (100, 100, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
118 Assert.AreEqual (new Rectangle (0, 0, 100, 0), p.Controls[0].Bounds, "H1");
\r
119 Assert.AreEqual (new Rectangle (100, 0, 100, 0), p.Controls[1].Bounds, "H2");
\r
123 public void LeftToRightLayoutTest7 ()
\r
126 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
128 p.Controls.Add (CreateButton (100, 50, false, DockStyle.Top, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
129 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
131 Assert.AreEqual (new Rectangle (0, 0, 100, 50), p.Controls[0].Bounds, "I1");
\r
132 Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[1].Bounds, "I2");
\r
136 public void LeftToRightLayoutTest8 ()
\r
139 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
141 p.Controls.Add (CreateButton (100, 50, false, DockStyle.Bottom, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
142 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
144 Assert.AreEqual (new Rectangle (0, 50, 100, 50), p.Controls[0].Bounds, "J1");
\r
145 Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[1].Bounds, "J2");
\r
149 public void LeftToRightLayoutTest9 ()
\r
152 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
154 p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Bottom));
\r
155 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
157 Assert.AreEqual (new Rectangle (0, 50, 100, 50), p.Controls[0].Bounds, "K1");
\r
158 Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[1].Bounds, "K2");
\r
162 public void LeftToRightLayoutTest10 ()
\r
164 // No Dock or Anchor
\r
165 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
167 p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.None));
\r
168 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
170 Assert.AreEqual (new Rectangle (0, 25, 100, 50), p.Controls[0].Bounds, "L1");
\r
171 Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[1].Bounds, "L2");
\r
175 public void LeftToRightLayoutTest11 ()
\r
177 // WrapContents = true
\r
178 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
180 p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
181 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
182 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
183 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
185 Assert.AreEqual (new Rectangle (0, 0, 100, 50), p.Controls[0].Bounds, "M1");
\r
186 Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[1].Bounds, "M2");
\r
187 Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[2].Bounds, "M3");
\r
188 Assert.AreEqual (new Rectangle (100, 100, 100, 100), p.Controls[3].Bounds, "M4");
\r
192 public void LeftToRightLayoutTest12 ()
\r
194 // WrapContents = false
\r
195 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
196 p.WrapContents = false;
\r
198 p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
199 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
200 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
201 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
203 Assert.AreEqual (new Rectangle (0, 0, 100, 50), p.Controls[0].Bounds, "N1");
\r
204 Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[1].Bounds, "N2");
\r
205 Assert.AreEqual (new Rectangle (200, 0, 100, 100), p.Controls[2].Bounds, "N3");
\r
206 Assert.AreEqual (new Rectangle (300, 0, 100, 100), p.Controls[3].Bounds, "N4");
\r
210 public void LeftToRightLayoutTest13 ()
\r
212 // SetFlowBreak 1, 3
\r
213 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
215 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
216 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
217 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
218 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
220 p.SetFlowBreak (p.Controls[0], true);
\r
221 p.SetFlowBreak (p.Controls[2], true);
\r
223 Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[0].Bounds, "O1");
\r
224 Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[1].Bounds, "O2");
\r
225 Assert.AreEqual (new Rectangle (100, 100, 100, 100), p.Controls[2].Bounds, "O3");
\r
226 Assert.AreEqual (new Rectangle (0, 200, 100, 100), p.Controls[3].Bounds, "O4");
\r
230 public void LeftToRightLayoutTest14 ()
\r
233 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
235 p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (1,3,5,2), AnchorStyles.Left | AnchorStyles.Top));
\r
236 p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (7,3,12,5), AnchorStyles.Left | AnchorStyles.Top));
\r
237 p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (14,7,1,3), AnchorStyles.Left | AnchorStyles.Top));
\r
238 p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (4), AnchorStyles.Left | AnchorStyles.Top));
\r
240 Assert.AreEqual (new Rectangle (1, 3, 50, 50), p.Controls[0].Bounds, "P1");
\r
241 Assert.AreEqual (new Rectangle (63, 3, 50, 50), p.Controls[1].Bounds, "P2");
\r
242 Assert.AreEqual (new Rectangle (139, 7, 50, 50), p.Controls[2].Bounds, "P3");
\r
243 Assert.AreEqual (new Rectangle (4, 64, 50, 50), p.Controls[3].Bounds, "P4");
\r
247 public void LeftToRightLayoutTest15 ()
\r
249 // Margins and Different Sizes
\r
250 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
252 p.Controls.Add (CreateButton (25, 45, false, DockStyle.None, new Padding (6), AnchorStyles.Left | AnchorStyles.Top));
\r
253 p.Controls.Add (CreateButton (60, 20, false, DockStyle.None, new Padding (9), AnchorStyles.Left | AnchorStyles.Top));
\r
254 p.Controls.Add (CreateButton (15, 85, false, DockStyle.None, new Padding (2), AnchorStyles.Left | AnchorStyles.Top));
\r
255 p.Controls.Add (CreateButton (50, 20, false, DockStyle.None, new Padding (4), AnchorStyles.Left | AnchorStyles.Top));
\r
257 Assert.AreEqual (new Rectangle (6, 6, 25, 45), p.Controls[0].Bounds, "Q1");
\r
258 Assert.AreEqual (new Rectangle (46, 9, 60, 20), p.Controls[1].Bounds, "Q2");
\r
259 Assert.AreEqual (new Rectangle (117, 2, 15, 85), p.Controls[2].Bounds, "Q3");
\r
260 Assert.AreEqual (new Rectangle (138, 4, 50, 20), p.Controls[3].Bounds, "Q4");
\r
264 public void LeftToRightLayoutTest16 ()
\r
266 // Random Complex Layout 1
\r
267 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
269 p.Controls.Add (CreateButton (25, 45, false, DockStyle.None, new Padding (6), AnchorStyles.Right | AnchorStyles.Top));
\r
270 p.Controls.Add (CreateButton (60, 20, false, DockStyle.Fill, new Padding (9), AnchorStyles.Bottom | AnchorStyles.Top));
\r
271 p.Controls.Add (CreateButton (15, 85, false, DockStyle.None, new Padding (2), AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Bottom));
\r
272 p.Controls.Add (CreateButton (50, 20, false, DockStyle.None, new Padding (4), AnchorStyles.Left | AnchorStyles.Bottom));
\r
273 p.Controls.Add (CreateButton (13, 22, false, DockStyle.None, new Padding (12), AnchorStyles.Left | AnchorStyles.Right));
\r
274 p.Controls.Add (CreateButton (73, 28, false, DockStyle.Top, new Padding (6), AnchorStyles.None));
\r
276 Assert.AreEqual (new Rectangle (6, 6, 25, 45), p.Controls[0].Bounds, "R1");
\r
277 Assert.AreEqual (new Rectangle (46, 9, 60, 39), p.Controls[1].Bounds, "R2");
\r
278 Assert.AreEqual (new Rectangle (117, 2, 15, 53), p.Controls[2].Bounds, "R3");
\r
279 Assert.AreEqual (new Rectangle (138, 33, 50, 20), p.Controls[3].Bounds, "R4");
\r
280 Assert.AreEqual (new Rectangle (12, 69, 13, 22), p.Controls[4].Bounds, "R5");
\r
281 Assert.AreEqual (new Rectangle (43, 63, 73, 28), p.Controls[5].Bounds, "R6");
\r
285 public void LeftToRightLayoutTest17 ()
\r
287 // Random Complex Layout 2
\r
288 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
290 p.Controls.Add (CreateButton (12, 345, false, DockStyle.Bottom, new Padding (1, 2, 3, 4), AnchorStyles.Left | AnchorStyles.Top));
\r
291 p.Controls.Add (CreateButton (9, 44, false, DockStyle.Top, new Padding (6, 3, 2, 7), AnchorStyles.Right | AnchorStyles.Top));
\r
292 p.Controls.Add (CreateButton (78, 14, false, DockStyle.None, new Padding (5, 1, 2, 4), AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Right));
\r
293 p.Controls.Add (CreateButton (21, 64, false, DockStyle.Top, new Padding (3, 3, 3, 1), AnchorStyles.None));
\r
294 p.Controls.Add (CreateButton (14, 14, false, DockStyle.Fill, new Padding (11, 4, 6, 3), AnchorStyles.Top | AnchorStyles.Bottom));
\r
295 p.Controls.Add (CreateButton (132, 6, false, DockStyle.Fill, new Padding (5, 5, 4, 5), AnchorStyles.Top | AnchorStyles.Bottom));
\r
297 p.SetFlowBreak (p.Controls[0], true);
\r
298 p.SetFlowBreak (p.Controls[2], true);
\r
300 Assert.AreEqual (new Rectangle (1, 2, 12, 345), p.Controls[0].Bounds, "S1");
\r
301 Assert.AreEqual (new Rectangle (6, 354, 9, 44), p.Controls[1].Bounds, "S2");
\r
302 Assert.AreEqual (new Rectangle (22, 352, 78, 49), p.Controls[2].Bounds, "S3");
\r
303 Assert.AreEqual (new Rectangle (3, 408, 21, 64), p.Controls[3].Bounds, "S4");
\r
304 Assert.AreEqual (new Rectangle (38, 409, 14, 61), p.Controls[4].Bounds, "S5");
\r
305 Assert.AreEqual (new Rectangle (63, 410, 132, 58), p.Controls[5].Bounds, "S6");
\r
309 public void LeftToRightLayoutTest18 ()
\r
311 // SetFlowBreak has no effect when WrapContents = false
\r
312 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
313 p.WrapContents = false;
\r
315 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
316 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
318 p.SetFlowBreak(p.Controls[0], true);
\r
320 Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[0].Bounds, "T1");
\r
321 Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[1].Bounds, "T2");
\r
325 #region RightToLeft Tests
\r
327 public void RightToLeftLayoutTest1 ()
\r
329 // 2 Normal Buttons
\r
330 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
331 p.FlowDirection = FlowDirection.RightToLeft;
\r
333 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
334 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
336 Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[0].Bounds, "AC1");
\r
337 Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "AC2");
\r
341 public void RightToLeftLayoutTest2 ()
\r
343 // Dock Fill and Normal
\r
344 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
345 p.FlowDirection = FlowDirection.RightToLeft;
\r
347 p.Controls.Add (CreateButton (100, 50, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
348 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
350 Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[0].Bounds, "AD1");
\r
351 Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "AD2");
\r
355 public void RightToLeftLayoutTest3 ()
\r
357 // Anchored: Top/Bottom and Normal
\r
358 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
359 p.FlowDirection = FlowDirection.RightToLeft;
\r
361 p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.Top | AnchorStyles.Bottom));
\r
362 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
364 Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[0].Bounds, "AE1");
\r
365 Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "AE2");
\r
369 public void RightToLeftLayoutTest4 ()
\r
371 // Anchored: Top/Bottom and Dock Fill
\r
372 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
373 p.FlowDirection = FlowDirection.RightToLeft;
\r
375 p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.Top | AnchorStyles.Bottom));
\r
376 p.Controls.Add (CreateButton (100, 100, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
378 Assert.AreEqual (new Rectangle (100, 0, 100, 0), p.Controls[0].Bounds, "AF1");
\r
379 Assert.AreEqual (new Rectangle (0, 0, 100, 0), p.Controls[1].Bounds, "AF2");
\r
383 public void RightToLeftLayoutTest5 ()
\r
385 // 2 Anchored: Top/Bottom
\r
386 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
387 p.FlowDirection = FlowDirection.RightToLeft;
\r
389 p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.Top | AnchorStyles.Bottom));
\r
390 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Top | AnchorStyles.Bottom));
\r
392 Assert.AreEqual (new Rectangle (100, 0, 100, 0), p.Controls[0].Bounds, "AG1");
\r
393 Assert.AreEqual (new Rectangle (0, 0, 100, 0), p.Controls[1].Bounds, "AG2");
\r
397 public void RightToLeftLayoutTest6 ()
\r
400 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
401 p.FlowDirection = FlowDirection.RightToLeft;
\r
403 p.Controls.Add (CreateButton (100, 50, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
404 p.Controls.Add (CreateButton (100, 100, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
406 Assert.AreEqual (new Rectangle (100, 0, 100, 0), p.Controls[0].Bounds, "AH1");
\r
407 Assert.AreEqual (new Rectangle (0, 0, 100, 0), p.Controls[1].Bounds, "AH2");
\r
411 public void RightToLeftLayoutTest7 ()
\r
414 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
415 p.FlowDirection = FlowDirection.RightToLeft;
\r
417 p.Controls.Add (CreateButton (100, 50, false, DockStyle.Top, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
418 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
420 Assert.AreEqual (new Rectangle (100, 0, 100, 50), p.Controls[0].Bounds, "AI1");
\r
421 Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "AI2");
\r
425 public void RightToLeftLayoutTest8 ()
\r
428 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
429 p.FlowDirection = FlowDirection.RightToLeft;
\r
431 p.Controls.Add (CreateButton (100, 50, false, DockStyle.Bottom, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
432 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
434 Assert.AreEqual (new Rectangle (100, 50, 100, 50), p.Controls[0].Bounds, "AJ1");
\r
435 Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "AJ2");
\r
439 public void RightToLeftLayoutTest9 ()
\r
442 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
443 p.FlowDirection = FlowDirection.RightToLeft;
\r
445 p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Bottom));
\r
446 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
448 Assert.AreEqual (new Rectangle (100, 50, 100, 50), p.Controls[0].Bounds, "AK1");
\r
449 Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "AK2");
\r
453 public void RightToLeftLayoutTest10 ()
\r
455 // No Dock or Anchor
\r
456 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
457 p.FlowDirection = FlowDirection.RightToLeft;
\r
459 p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.None));
\r
460 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
462 Assert.AreEqual (new Rectangle (100, 25, 100, 50), p.Controls[0].Bounds, "AL1");
\r
463 Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "AL2");
\r
467 public void RightToLeftLayoutTest11 ()
\r
469 // WrapContents = true
\r
470 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
471 p.FlowDirection = FlowDirection.RightToLeft;
\r
473 p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
474 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
475 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
476 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
478 Assert.AreEqual (new Rectangle (100, 0, 100, 50), p.Controls[0].Bounds, "AM1");
\r
479 Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "AM2");
\r
480 Assert.AreEqual (new Rectangle (100, 100, 100, 100), p.Controls[2].Bounds, "AM3");
\r
481 Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[3].Bounds, "AM4");
\r
485 public void RightToLeftLayoutTest12 ()
\r
487 // WrapContents = false
\r
488 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
489 p.WrapContents = false;
\r
490 p.FlowDirection = FlowDirection.RightToLeft;
\r
492 p.Controls.Add (CreateButton (100, 50, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
493 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
494 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
495 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
497 Assert.AreEqual (new Rectangle (100, 0, 100, 50), p.Controls[0].Bounds, "AN1");
\r
498 Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "AN2");
\r
499 Assert.AreEqual (new Rectangle (-100, 0, 100, 100), p.Controls[2].Bounds, "AN3");
\r
500 Assert.AreEqual (new Rectangle (-200, 0, 100, 100), p.Controls[3].Bounds, "AN4");
\r
504 public void RightToLeftLayoutTest13 ()
\r
506 // SetFlowBreak 1, 3
\r
507 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
508 p.FlowDirection = FlowDirection.RightToLeft;
\r
510 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
511 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
512 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
513 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
515 p.SetFlowBreak (p.Controls[0], true);
\r
516 p.SetFlowBreak (p.Controls[2], true);
\r
518 Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[0].Bounds, "AO1");
\r
519 Assert.AreEqual (new Rectangle (100, 100, 100, 100), p.Controls[1].Bounds, "AO2");
\r
520 Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[2].Bounds, "AO3");
\r
521 Assert.AreEqual (new Rectangle (100, 200, 100, 100), p.Controls[3].Bounds, "AO4");
\r
525 public void RightToLeftLayoutTest14 ()
\r
528 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
529 p.FlowDirection = FlowDirection.RightToLeft;
\r
531 p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (1, 3, 5, 2), AnchorStyles.Left | AnchorStyles.Top));
\r
532 p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (7, 3, 12, 5), AnchorStyles.Left | AnchorStyles.Top));
\r
533 p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (14, 7, 1, 3), AnchorStyles.Left | AnchorStyles.Top));
\r
534 p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (4), AnchorStyles.Left | AnchorStyles.Top));
\r
536 Assert.AreEqual (new Rectangle (145, 3, 50, 50), p.Controls[0].Bounds, "AP1");
\r
537 Assert.AreEqual (new Rectangle (82, 3, 50, 50), p.Controls[1].Bounds, "AP2");
\r
538 Assert.AreEqual (new Rectangle (24, 7, 50, 50), p.Controls[2].Bounds, "AP3");
\r
539 Assert.AreEqual (new Rectangle (146, 64, 50, 50), p.Controls[3].Bounds, "AP4");
\r
543 public void RightToLeftLayoutTest15 ()
\r
545 // Margins and Different Sizes
\r
546 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
547 p.FlowDirection = FlowDirection.RightToLeft;
\r
549 p.Controls.Add (CreateButton (25, 45, false, DockStyle.None, new Padding (6), AnchorStyles.Left | AnchorStyles.Top));
\r
550 p.Controls.Add (CreateButton (60, 20, false, DockStyle.None, new Padding (9), AnchorStyles.Left | AnchorStyles.Top));
\r
551 p.Controls.Add (CreateButton (15, 85, false, DockStyle.None, new Padding (2), AnchorStyles.Left | AnchorStyles.Top));
\r
552 p.Controls.Add (CreateButton (50, 20, false, DockStyle.None, new Padding (4), AnchorStyles.Left | AnchorStyles.Top));
\r
554 Assert.AreEqual (new Rectangle (169, 6, 25, 45), p.Controls[0].Bounds, "AQ1");
\r
555 Assert.AreEqual (new Rectangle (94, 9, 60, 20), p.Controls[1].Bounds, "AQ2");
\r
556 Assert.AreEqual (new Rectangle (68, 2, 15, 85), p.Controls[2].Bounds, "AQ3");
\r
557 Assert.AreEqual (new Rectangle (12, 4, 50, 20), p.Controls[3].Bounds, "AQ4");
\r
561 public void RightToLeftLayoutTest16 ()
\r
563 // Random Complex Layout 1
\r
564 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
565 p.FlowDirection = FlowDirection.RightToLeft;
\r
567 p.Controls.Add (CreateButton (25, 45, false, DockStyle.None, new Padding (6), AnchorStyles.Right | AnchorStyles.Top));
\r
568 p.Controls.Add (CreateButton (60, 20, false, DockStyle.Fill, new Padding (9), AnchorStyles.Bottom | AnchorStyles.Top));
\r
569 p.Controls.Add (CreateButton (15, 85, false, DockStyle.None, new Padding (2), AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Bottom));
\r
570 p.Controls.Add (CreateButton (50, 20, false, DockStyle.None, new Padding (4), AnchorStyles.Left | AnchorStyles.Bottom));
\r
571 p.Controls.Add (CreateButton (13, 22, false, DockStyle.None, new Padding (12), AnchorStyles.Left | AnchorStyles.Right));
\r
572 p.Controls.Add (CreateButton (73, 28, false, DockStyle.Top, new Padding (6), AnchorStyles.None));
\r
574 Assert.AreEqual (new Rectangle (169, 6, 25, 45), p.Controls[0].Bounds, "AR1");
\r
575 Assert.AreEqual (new Rectangle (94, 9, 60, 39), p.Controls[1].Bounds, "AR2");
\r
576 Assert.AreEqual (new Rectangle (68, 2, 15, 53), p.Controls[2].Bounds, "AR3");
\r
577 Assert.AreEqual (new Rectangle (12, 33, 50, 20), p.Controls[3].Bounds, "AR4");
\r
578 Assert.AreEqual (new Rectangle (175, 69, 13, 22), p.Controls[4].Bounds, "AR5");
\r
579 Assert.AreEqual (new Rectangle (84, 63, 73, 28), p.Controls[5].Bounds, "AR6");
\r
583 public void RightToLeftLayoutTest17 ()
\r
585 // Random Complex Layout 2
\r
586 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
587 p.FlowDirection = FlowDirection.RightToLeft;
\r
589 p.Controls.Add (CreateButton (12, 345, false, DockStyle.Bottom, new Padding (1, 2, 3, 4), AnchorStyles.Left | AnchorStyles.Top));
\r
590 p.Controls.Add (CreateButton (9, 44, false, DockStyle.Top, new Padding (6, 3, 2, 7), AnchorStyles.Right | AnchorStyles.Top));
\r
591 p.Controls.Add (CreateButton (78, 14, false, DockStyle.None, new Padding (5, 1, 2, 4), AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Right));
\r
592 p.Controls.Add (CreateButton (21, 64, false, DockStyle.Top, new Padding (3, 3, 3, 1), AnchorStyles.None));
\r
593 p.Controls.Add (CreateButton (14, 14, false, DockStyle.Fill, new Padding (11, 4, 6, 3), AnchorStyles.Top | AnchorStyles.Bottom));
\r
594 p.Controls.Add (CreateButton (132, 6, false, DockStyle.Fill, new Padding (5, 5, 4, 5), AnchorStyles.Top | AnchorStyles.Bottom));
\r
596 p.SetFlowBreak (p.Controls[0], true);
\r
597 p.SetFlowBreak (p.Controls[2], true);
\r
599 Assert.AreEqual (new Rectangle (185, 2, 12, 345), p.Controls[0].Bounds, "AS1");
\r
600 Assert.AreEqual (new Rectangle (189, 354, 9, 44), p.Controls[1].Bounds, "AS2");
\r
601 Assert.AreEqual (new Rectangle (103, 352, 78, 49), p.Controls[2].Bounds, "AS3");
\r
602 Assert.AreEqual (new Rectangle (176, 408, 21, 64), p.Controls[3].Bounds, "AS4");
\r
603 Assert.AreEqual (new Rectangle (153, 409, 14, 61), p.Controls[4].Bounds, "AS5");
\r
604 Assert.AreEqual (new Rectangle (6, 410, 132, 58), p.Controls[5].Bounds, "AS6");
\r
608 public void RightToLeftLayoutTest18 ()
\r
610 // SetFlowBreak has no effect when WrapContents = false
\r
611 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
612 p.WrapContents = false;
\r
613 p.FlowDirection = FlowDirection.RightToLeft;
\r
615 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
616 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
618 p.SetFlowBreak (p.Controls[0], true);
\r
620 Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[0].Bounds, "AT1");
\r
621 Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "AT2");
\r
625 #region TopDown Tests
\r
627 public void TopDownLayoutTest1 ()
\r
629 // 2 Normal Buttons
\r
630 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
631 p.Size = new Size (100, 200);
\r
632 p.FlowDirection = FlowDirection.TopDown;
\r
634 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
635 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
637 Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[0].Bounds, "BC1");
\r
638 Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[1].Bounds, "BC2");
\r
642 public void TopDownLayoutTest2 ()
\r
644 // Dock Fill and Normal
\r
645 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
646 p.Size = new Size (100, 200);
\r
647 p.FlowDirection = FlowDirection.TopDown;
\r
649 p.Controls.Add (CreateButton (50, 100, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
650 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
652 Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[0].Bounds, "BD1");
\r
653 Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[1].Bounds, "BD2");
\r
657 public void TopDownLayoutTest3 ()
\r
659 // Anchored: Left/Right and Normal
\r
660 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
661 p.Size = new Size (100, 200);
\r
662 p.FlowDirection = FlowDirection.TopDown;
\r
664 p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Right));
\r
665 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
667 Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[0].Bounds, "BE1");
\r
668 Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[1].Bounds, "BE2");
\r
672 public void TopDownLayoutTest4 ()
\r
674 // Anchored: Left/Right and Dock Fill
\r
675 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
676 p.Size = new Size (100, 200);
\r
677 p.FlowDirection = FlowDirection.TopDown;
\r
679 p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Right));
\r
680 p.Controls.Add (CreateButton (100, 100, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
682 Assert.AreEqual (new Rectangle (0, 0, 0, 100), p.Controls[0].Bounds, "BF1");
\r
683 Assert.AreEqual (new Rectangle (0, 100, 0, 100), p.Controls[1].Bounds, "BF2");
\r
687 public void TopDownLayoutTest5 ()
\r
689 // 2 Anchored: Left/Right
\r
690 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
691 p.Size = new Size (100, 200);
\r
692 p.FlowDirection = FlowDirection.TopDown;
\r
694 p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Right));
\r
695 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Right));
\r
697 Assert.AreEqual (new Rectangle (0, 0, 0, 100), p.Controls[0].Bounds, "BG1");
\r
698 Assert.AreEqual (new Rectangle (0, 100, 0, 100), p.Controls[1].Bounds, "BG2");
\r
702 public void TopDownLayoutTest6 ()
\r
705 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
706 p.Size = new Size (100, 200);
\r
707 p.FlowDirection = FlowDirection.TopDown;
\r
709 p.Controls.Add (CreateButton (50, 100, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
710 p.Controls.Add (CreateButton (100, 100, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
712 Assert.AreEqual (new Rectangle (0, 0, 0, 100), p.Controls[0].Bounds, "BH1");
\r
713 Assert.AreEqual (new Rectangle (0, 100, 0, 100), p.Controls[1].Bounds, "BH2");
\r
717 public void TopDownLayoutTest7 ()
\r
720 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
721 p.Size = new Size (100, 200);
\r
722 p.FlowDirection = FlowDirection.TopDown;
\r
724 p.Controls.Add (CreateButton (50, 100, false, DockStyle.Left, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
725 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
727 Assert.AreEqual (new Rectangle (0, 0, 50, 100), p.Controls[0].Bounds, "BI1");
\r
728 Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[1].Bounds, "BI2");
\r
732 public void TopDownLayoutTest8 ()
\r
735 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
736 p.Size = new Size (100, 200);
\r
737 p.FlowDirection = FlowDirection.TopDown;
\r
739 p.Controls.Add (CreateButton (50, 100, false, DockStyle.Right, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
740 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
742 Assert.AreEqual (new Rectangle (50, 0, 50, 100), p.Controls[0].Bounds, "BJ1");
\r
743 Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[1].Bounds, "BJ2");
\r
747 public void TopDownLayoutTest9 ()
\r
750 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
751 p.Size = new Size (100, 200);
\r
752 p.FlowDirection = FlowDirection.TopDown;
\r
754 p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.Top | AnchorStyles.Right));
\r
755 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Top | AnchorStyles.Left));
\r
757 Assert.AreEqual (new Rectangle (50, 0, 50, 100), p.Controls[0].Bounds, "BK1");
\r
758 Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[1].Bounds, "BK2");
\r
762 public void TopDownLayoutTest10 ()
\r
764 // No Dock or Anchor
\r
765 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
766 p.Size = new Size (100, 200);
\r
767 p.FlowDirection = FlowDirection.TopDown;
\r
769 p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.None));
\r
770 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
772 Assert.AreEqual (new Rectangle (25, 0, 50, 100), p.Controls[0].Bounds, "BL1");
\r
773 Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[1].Bounds, "BL2");
\r
777 public void TopDownLayoutTest11 ()
\r
779 // WrapContents = true
\r
780 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
781 p.Size = new Size (100, 200);
\r
782 p.FlowDirection = FlowDirection.TopDown;
\r
784 p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
785 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
786 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
787 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
789 Assert.AreEqual (new Rectangle (0, 0, 50, 100), p.Controls[0].Bounds, "BM1");
\r
790 Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[1].Bounds, "BM2");
\r
791 Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[2].Bounds, "BM3");
\r
792 Assert.AreEqual (new Rectangle (100, 100, 100, 100), p.Controls[3].Bounds, "BM4");
\r
796 public void TopDownLayoutTest12 ()
\r
798 // WrapContents = false
\r
799 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
800 p.Size = new Size (100, 200);
\r
801 p.WrapContents = false;
\r
802 p.FlowDirection = FlowDirection.TopDown;
\r
804 p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
805 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
806 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
807 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
809 Assert.AreEqual (new Rectangle (0, 0, 50, 100), p.Controls[0].Bounds, "BN1");
\r
810 Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[1].Bounds, "BN2");
\r
811 Assert.AreEqual (new Rectangle (0, 200, 100, 100), p.Controls[2].Bounds, "BN3");
\r
812 Assert.AreEqual (new Rectangle (0, 300, 100, 100), p.Controls[3].Bounds, "BN4");
\r
816 public void TopDownLayoutTest13 ()
\r
818 // SetFlowBreak 1, 3
\r
819 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
820 p.Size = new Size (100, 200);
\r
821 p.FlowDirection = FlowDirection.TopDown;
\r
823 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
824 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
825 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
826 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
828 p.SetFlowBreak (p.Controls[0], true);
\r
829 p.SetFlowBreak (p.Controls[2], true);
\r
831 Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[0].Bounds, "BO1");
\r
832 Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[1].Bounds, "BO2");
\r
833 Assert.AreEqual (new Rectangle (100, 100, 100, 100), p.Controls[2].Bounds, "BO3");
\r
834 Assert.AreEqual (new Rectangle (200, 0, 100, 100), p.Controls[3].Bounds, "BO4");
\r
838 public void TopDownLayoutTest14 ()
\r
841 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
842 p.Size = new Size (100, 200);
\r
843 p.FlowDirection = FlowDirection.TopDown;
\r
845 p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (1, 3, 5, 2), AnchorStyles.Left | AnchorStyles.Top));
\r
846 p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (7, 3, 12, 5), AnchorStyles.Left | AnchorStyles.Top));
\r
847 p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (14, 7, 1, 3), AnchorStyles.Left | AnchorStyles.Top));
\r
848 p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (4), AnchorStyles.Left | AnchorStyles.Top));
\r
850 Assert.AreEqual (new Rectangle (1, 3, 50, 50), p.Controls[0].Bounds, "BP1");
\r
851 Assert.AreEqual (new Rectangle (7, 58, 50, 50), p.Controls[1].Bounds, "BP2");
\r
852 Assert.AreEqual (new Rectangle (14, 120, 50, 50), p.Controls[2].Bounds, "BP3");
\r
853 Assert.AreEqual (new Rectangle (73, 4, 50, 50), p.Controls[3].Bounds, "BP4");
\r
857 public void TopDownLayoutTest15 ()
\r
859 // Margins and Different Sizes
\r
860 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
861 p.Size = new Size (100, 200);
\r
862 p.FlowDirection = FlowDirection.TopDown;
\r
864 p.Controls.Add (CreateButton (25, 45, false, DockStyle.None, new Padding (6), AnchorStyles.Left | AnchorStyles.Top));
\r
865 p.Controls.Add (CreateButton (60, 20, false, DockStyle.None, new Padding (9), AnchorStyles.Left | AnchorStyles.Top));
\r
866 p.Controls.Add (CreateButton (15, 85, false, DockStyle.None, new Padding (2), AnchorStyles.Left | AnchorStyles.Top));
\r
867 p.Controls.Add (CreateButton (50, 20, false, DockStyle.None, new Padding (4), AnchorStyles.Left | AnchorStyles.Top));
\r
869 Assert.AreEqual (new Rectangle (6, 6, 25, 45), p.Controls[0].Bounds, "BQ1");
\r
870 Assert.AreEqual (new Rectangle (9, 66, 60, 20), p.Controls[1].Bounds, "BQ2");
\r
871 Assert.AreEqual (new Rectangle (2, 97, 15, 85), p.Controls[2].Bounds, "BQ3");
\r
872 Assert.AreEqual (new Rectangle (82, 4, 50, 20), p.Controls[3].Bounds, "BQ4");
\r
876 public void TopDownLayoutTest16 ()
\r
878 // Random Complex Layout 1
\r
879 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
880 p.Size = new Size (100, 200);
\r
881 p.FlowDirection = FlowDirection.TopDown;
\r
883 p.Controls.Add (CreateButton (25, 45, false, DockStyle.None, new Padding (6), AnchorStyles.Right | AnchorStyles.Top));
\r
884 p.Controls.Add (CreateButton (60, 20, false, DockStyle.Fill, new Padding (9), AnchorStyles.Bottom | AnchorStyles.Top));
\r
885 p.Controls.Add (CreateButton (15, 85, false, DockStyle.None, new Padding (2), AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Bottom));
\r
886 p.Controls.Add (CreateButton (50, 20, false, DockStyle.None, new Padding (4), AnchorStyles.Left | AnchorStyles.Bottom));
\r
887 p.Controls.Add (CreateButton (13, 22, false, DockStyle.None, new Padding (12), AnchorStyles.Left | AnchorStyles.Right));
\r
888 p.Controls.Add (CreateButton (73, 28, false, DockStyle.Left, new Padding (6), AnchorStyles.None));
\r
890 Assert.AreEqual (new Rectangle (6, 6, 25, 45), p.Controls[0].Bounds, "BR1");
\r
891 Assert.AreEqual (new Rectangle (9, 66, 19, 20), p.Controls[1].Bounds, "BR2");
\r
892 Assert.AreEqual (new Rectangle (2, 97, 15, 85), p.Controls[2].Bounds, "BR3");
\r
893 Assert.AreEqual (new Rectangle (41, 4, 50, 20), p.Controls[3].Bounds, "BR4");
\r
894 Assert.AreEqual (new Rectangle (49, 40, 61, 22), p.Controls[4].Bounds, "BR5");
\r
895 Assert.AreEqual (new Rectangle (43, 80, 73, 28), p.Controls[5].Bounds, "BR6");
\r
899 public void TopDownLayoutTest17 ()
\r
901 // Random Complex Layout 2
\r
902 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
903 p.Size = new Size (100, 200);
\r
904 p.FlowDirection = FlowDirection.TopDown;
\r
906 p.Controls.Add (CreateButton (12, 345, false, DockStyle.Right, new Padding (1, 2, 3, 4), AnchorStyles.Left | AnchorStyles.Top));
\r
907 p.Controls.Add (CreateButton (9, 44, false, DockStyle.Left, new Padding (6, 3, 2, 7), AnchorStyles.Right | AnchorStyles.Top));
\r
908 p.Controls.Add (CreateButton (78, 14, false, DockStyle.None, new Padding (5, 1, 2, 4), AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Right));
\r
909 p.Controls.Add (CreateButton (21, 64, false, DockStyle.Left, new Padding (3, 3, 3, 1), AnchorStyles.None));
\r
910 p.Controls.Add (CreateButton (14, 14, false, DockStyle.Fill, new Padding (11, 4, 6, 3), AnchorStyles.Left | AnchorStyles.Right));
\r
911 p.Controls.Add (CreateButton (132, 6, false, DockStyle.Fill, new Padding (5, 5, 4, 5), AnchorStyles.Left | AnchorStyles.Right));
\r
913 p.SetFlowBreak (p.Controls[0], true);
\r
914 p.SetFlowBreak (p.Controls[2], true);
\r
916 Assert.AreEqual (new Rectangle (1, 2, 12, 345), p.Controls[0].Bounds, "BS1");
\r
917 Assert.AreEqual (new Rectangle (22, 3, 9, 44), p.Controls[1].Bounds, "BS2");
\r
918 Assert.AreEqual (new Rectangle (21, 55, 10, 14), p.Controls[2].Bounds, "BS3");
\r
919 Assert.AreEqual (new Rectangle (36, 3, 21, 64), p.Controls[3].Bounds, "BS4");
\r
920 Assert.AreEqual (new Rectangle (44, 72, 10, 14), p.Controls[4].Bounds, "BS5");
\r
921 Assert.AreEqual (new Rectangle (38, 94, 18, 6), p.Controls[5].Bounds, "BS6");
\r
925 public void TopDownLayoutTest18 ()
\r
927 // SetFlowBreak has no effect when WrapContents = false
\r
928 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
929 p.Size = new Size (100, 200);
\r
930 p.WrapContents = false;
\r
931 p.FlowDirection = FlowDirection.TopDown;
\r
933 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
934 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
936 p.SetFlowBreak (p.Controls[0], true);
\r
938 Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[0].Bounds, "BT1");
\r
939 Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[1].Bounds, "BT2");
\r
943 #region BottomUp Tests
\r
945 public void BottomUpLayoutTest1 ()
\r
947 // 2 Normal Buttons
\r
948 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
949 p.Size = new Size (100, 200);
\r
950 p.FlowDirection = FlowDirection.BottomUp;
\r
952 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
953 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
955 Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[0].Bounds, "CC1");
\r
956 Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "CC2");
\r
960 public void BottomUpLayoutTest2 ()
\r
962 // Dock Fill and Normal
\r
963 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
964 p.Size = new Size (100, 200);
\r
965 p.FlowDirection = FlowDirection.BottomUp;
\r
967 p.Controls.Add (CreateButton (50, 100, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
968 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
970 Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[0].Bounds, "CD1");
\r
971 Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "CD2");
\r
975 public void BottomUpLayoutTest3 ()
\r
977 // Anchored: Left/Right and Normal
\r
978 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
979 p.Size = new Size (100, 200);
\r
980 p.FlowDirection = FlowDirection.BottomUp;
\r
982 p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Right));
\r
983 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
985 Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[0].Bounds, "CE1");
\r
986 Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "CE2");
\r
990 public void BottomUpLayoutTest4 ()
\r
992 // Anchored: Left/Right and Dock Fill
\r
993 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
994 p.Size = new Size (100, 200);
\r
995 p.FlowDirection = FlowDirection.BottomUp;
\r
997 p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Right));
\r
998 p.Controls.Add (CreateButton (100, 100, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
1000 Assert.AreEqual (new Rectangle (0, 100, 0, 100), p.Controls[0].Bounds, "CF1");
\r
1001 Assert.AreEqual (new Rectangle (0, 0, 0, 100), p.Controls[1].Bounds, "CF2");
\r
1005 public void BottomUpLayoutTest5 ()
\r
1007 // 2 Anchored: Left/Right
\r
1008 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
1009 p.Size = new Size (100, 200);
\r
1010 p.FlowDirection = FlowDirection.BottomUp;
\r
1012 p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Right));
\r
1013 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Right));
\r
1015 Assert.AreEqual (new Rectangle (0, 100, 0, 100), p.Controls[0].Bounds, "CG1");
\r
1016 Assert.AreEqual (new Rectangle (0, 0, 0, 100), p.Controls[1].Bounds, "CG2");
\r
1020 public void BottomUpLayoutTest6 ()
\r
1023 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
1024 p.Size = new Size (100, 200);
\r
1025 p.FlowDirection = FlowDirection.BottomUp;
\r
1027 p.Controls.Add (CreateButton (50, 100, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
1028 p.Controls.Add (CreateButton (100, 100, false, DockStyle.Fill, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
1030 Assert.AreEqual (new Rectangle (0, 100, 0, 100), p.Controls[0].Bounds, "CH1");
\r
1031 Assert.AreEqual (new Rectangle (0, 0, 0, 100), p.Controls[1].Bounds, "CH2");
\r
1035 public void BottomUpLayoutTest7 ()
\r
1038 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
1039 p.Size = new Size (100, 200);
\r
1040 p.FlowDirection = FlowDirection.BottomUp;
\r
1042 p.Controls.Add (CreateButton (50, 100, false, DockStyle.Left, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
1043 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
1045 Assert.AreEqual (new Rectangle (0, 100, 50, 100), p.Controls[0].Bounds, "CI1");
\r
1046 Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "CI2");
\r
1050 public void BottomUpLayoutTest8 ()
\r
1053 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
1054 p.Size = new Size (100, 200);
\r
1055 p.FlowDirection = FlowDirection.BottomUp;
\r
1057 p.Controls.Add (CreateButton (50, 100, false, DockStyle.Right, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
1058 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
1060 Assert.AreEqual (new Rectangle (50, 100, 50, 100), p.Controls[0].Bounds, "CJ1");
\r
1061 Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "CJ2");
\r
1065 public void BottomUpLayoutTest9 ()
\r
1068 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
1069 p.Size = new Size (100, 200);
\r
1070 p.FlowDirection = FlowDirection.BottomUp;
\r
1072 p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.Top | AnchorStyles.Right));
\r
1073 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Top | AnchorStyles.Left));
\r
1075 Assert.AreEqual (new Rectangle (50, 100, 50, 100), p.Controls[0].Bounds, "CK1");
\r
1076 Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "CK2");
\r
1080 public void BottomUpLayoutTest10 ()
\r
1082 // No Dock or Anchor
\r
1083 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
1084 p.Size = new Size (100, 200);
\r
1085 p.FlowDirection = FlowDirection.BottomUp;
\r
1087 p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.None));
\r
1088 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
1090 Assert.AreEqual (new Rectangle (25, 100, 50, 100), p.Controls[0].Bounds, "CL1");
\r
1091 Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "CL2");
\r
1095 public void BottomUpLayoutTest11 ()
\r
1097 // WrapContents = true
\r
1098 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
1099 p.Size = new Size (100, 200);
\r
1100 p.FlowDirection = FlowDirection.BottomUp;
\r
1102 p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
1103 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
1104 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
1105 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
1107 Assert.AreEqual (new Rectangle (0, 100, 50, 100), p.Controls[0].Bounds, "CM1");
\r
1108 Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "CM2");
\r
1109 Assert.AreEqual (new Rectangle (100, 100, 100, 100), p.Controls[2].Bounds, "CM3");
\r
1110 Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[3].Bounds, "CM4");
\r
1114 public void BottomUpLayoutTest12 ()
\r
1116 // WrapContents = false
\r
1117 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
1118 p.Size = new Size (100, 200);
\r
1119 p.WrapContents = false;
\r
1120 p.FlowDirection = FlowDirection.BottomUp;
\r
1122 p.Controls.Add (CreateButton (50, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
1123 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
1124 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
1125 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
1127 Assert.AreEqual (new Rectangle (0, 100, 50, 100), p.Controls[0].Bounds, "CN1");
\r
1128 Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "CN2");
\r
1129 Assert.AreEqual (new Rectangle (0, -100, 100, 100), p.Controls[2].Bounds, "CN3");
\r
1130 Assert.AreEqual (new Rectangle (0, -200, 100, 100), p.Controls[3].Bounds, "CN4");
\r
1134 public void BottomUpLayoutTest13 ()
\r
1136 // SetFlowBreak 1, 3
\r
1137 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
1138 p.Size = new Size (100, 200);
\r
1139 p.FlowDirection = FlowDirection.BottomUp;
\r
1141 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
1142 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
1143 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
1144 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
1146 p.SetFlowBreak (p.Controls[0], true);
\r
1147 p.SetFlowBreak (p.Controls[2], true);
\r
1149 Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[0].Bounds, "CO1");
\r
1150 Assert.AreEqual (new Rectangle (100, 100, 100, 100), p.Controls[1].Bounds, "CO2");
\r
1151 Assert.AreEqual (new Rectangle (100, 0, 100, 100), p.Controls[2].Bounds, "CO3");
\r
1152 Assert.AreEqual (new Rectangle (200, 100, 100, 100), p.Controls[3].Bounds, "CO4");
\r
1156 public void BottomUpLayoutTest14 ()
\r
1159 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
1160 p.Size = new Size (100, 200);
\r
1161 p.FlowDirection = FlowDirection.BottomUp;
\r
1163 p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (1, 3, 5, 2), AnchorStyles.Left | AnchorStyles.Top));
\r
1164 p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (7, 3, 12, 5), AnchorStyles.Left | AnchorStyles.Top));
\r
1165 p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (14, 7, 1, 3), AnchorStyles.Left | AnchorStyles.Top));
\r
1166 p.Controls.Add (CreateButton (50, 50, false, DockStyle.None, new Padding (4), AnchorStyles.Left | AnchorStyles.Top));
\r
1168 Assert.AreEqual (new Rectangle (1, 148, 50, 50), p.Controls[0].Bounds, "CP1");
\r
1169 Assert.AreEqual (new Rectangle (7, 90, 50, 50), p.Controls[1].Bounds, "CP2");
\r
1170 Assert.AreEqual (new Rectangle (14, 34, 50, 50), p.Controls[2].Bounds, "CP3");
\r
1171 Assert.AreEqual (new Rectangle (73, 146, 50, 50), p.Controls[3].Bounds, "CP4");
\r
1175 public void BottomUpLayoutTest15 ()
\r
1177 // Margins and Different Sizes
\r
1178 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
1179 p.Size = new Size (100, 200);
\r
1180 p.FlowDirection = FlowDirection.BottomUp;
\r
1182 p.Controls.Add (CreateButton (25, 45, false, DockStyle.None, new Padding (6), AnchorStyles.Left | AnchorStyles.Top));
\r
1183 p.Controls.Add (CreateButton (60, 20, false, DockStyle.None, new Padding (9), AnchorStyles.Left | AnchorStyles.Top));
\r
1184 p.Controls.Add (CreateButton (15, 85, false, DockStyle.None, new Padding (2), AnchorStyles.Left | AnchorStyles.Top));
\r
1185 p.Controls.Add (CreateButton (50, 20, false, DockStyle.None, new Padding (4), AnchorStyles.Left | AnchorStyles.Top));
\r
1187 Assert.AreEqual (new Rectangle (6, 149, 25, 45), p.Controls[0].Bounds, "CQ1");
\r
1188 Assert.AreEqual (new Rectangle (9, 114, 60, 20), p.Controls[1].Bounds, "CQ2");
\r
1189 Assert.AreEqual (new Rectangle (2, 18, 15, 85), p.Controls[2].Bounds, "CQ3");
\r
1190 Assert.AreEqual (new Rectangle (82, 176, 50, 20), p.Controls[3].Bounds, "CQ4");
\r
1194 public void BottomUpLayoutTest16 ()
\r
1196 // Random Complex Layout 1
\r
1197 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
1198 p.Size = new Size (100, 200);
\r
1199 p.FlowDirection = FlowDirection.BottomUp;
\r
1201 p.Controls.Add (CreateButton (25, 45, false, DockStyle.None, new Padding (6), AnchorStyles.Right | AnchorStyles.Top));
\r
1202 p.Controls.Add (CreateButton (60, 20, false, DockStyle.Fill, new Padding (9), AnchorStyles.Bottom | AnchorStyles.Top));
\r
1203 p.Controls.Add (CreateButton (15, 85, false, DockStyle.None, new Padding (2), AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Bottom));
\r
1204 p.Controls.Add (CreateButton (50, 20, false, DockStyle.None, new Padding (4), AnchorStyles.Left | AnchorStyles.Bottom));
\r
1205 p.Controls.Add (CreateButton (13, 22, false, DockStyle.None, new Padding (12), AnchorStyles.Left | AnchorStyles.Right));
\r
1206 p.Controls.Add (CreateButton (73, 28, false, DockStyle.Left, new Padding (6), AnchorStyles.None));
\r
1208 Assert.AreEqual (new Rectangle (6, 149, 25, 45), p.Controls[0].Bounds, "CR1");
\r
1209 Assert.AreEqual (new Rectangle (9, 114, 19, 20), p.Controls[1].Bounds, "CR2");
\r
1210 Assert.AreEqual (new Rectangle (2, 18, 15, 85), p.Controls[2].Bounds, "CR3");
\r
1211 Assert.AreEqual (new Rectangle (41, 176, 50, 20), p.Controls[3].Bounds, "CR4");
\r
1212 Assert.AreEqual (new Rectangle (49, 138, 61, 22), p.Controls[4].Bounds, "CR5");
\r
1213 Assert.AreEqual (new Rectangle (43, 92, 73, 28), p.Controls[5].Bounds, "CR6");
\r
1217 public void BottomUpLayoutTest17 ()
\r
1219 // Random Complex Layout 2
\r
1220 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
1221 p.Size = new Size (100, 200);
\r
1222 p.FlowDirection = FlowDirection.BottomUp;
\r
1224 p.Controls.Add (CreateButton (12, 345, false, DockStyle.Right, new Padding (1, 2, 3, 4), AnchorStyles.Left | AnchorStyles.Top));
\r
1225 p.Controls.Add (CreateButton (9, 44, false, DockStyle.Left, new Padding (6, 3, 2, 7), AnchorStyles.Right | AnchorStyles.Top));
\r
1226 p.Controls.Add (CreateButton (78, 14, false, DockStyle.None, new Padding (5, 1, 2, 4), AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Right));
\r
1227 p.Controls.Add (CreateButton (21, 64, false, DockStyle.Left, new Padding (3, 3, 3, 1), AnchorStyles.None));
\r
1228 p.Controls.Add (CreateButton (14, 14, false, DockStyle.Fill, new Padding (11, 4, 6, 3), AnchorStyles.Left | AnchorStyles.Right));
\r
1229 p.Controls.Add (CreateButton (132, 6, false, DockStyle.Fill, new Padding (5, 5, 4, 5), AnchorStyles.Left | AnchorStyles.Right));
\r
1231 p.SetFlowBreak (p.Controls[0], true);
\r
1232 p.SetFlowBreak (p.Controls[2], true);
\r
1234 Assert.AreEqual (new Rectangle (1, -149, 12, 345), p.Controls[0].Bounds, "CS1");
\r
1235 Assert.AreEqual (new Rectangle (22, 149, 9, 44), p.Controls[1].Bounds, "CS2");
\r
1236 Assert.AreEqual (new Rectangle (21, 128, 10, 14), p.Controls[2].Bounds, "CS3");
\r
1237 Assert.AreEqual (new Rectangle (36, 135, 21, 64), p.Controls[3].Bounds, "CS4");
\r
1238 Assert.AreEqual (new Rectangle (44, 115, 10, 14), p.Controls[4].Bounds, "CS5");
\r
1239 Assert.AreEqual (new Rectangle (38, 100, 18, 6), p.Controls[5].Bounds, "CS6");
\r
1243 public void BottomUpLayoutTest18 ()
\r
1245 // SetFlowBreak has no effect when WrapContents = false
\r
1246 FlowLayoutPanel p = new FlowLayoutPanel ();
\r
1247 p.Size = new Size (100, 200);
\r
1248 p.WrapContents = false;
\r
1249 p.FlowDirection = FlowDirection.BottomUp;
\r
1251 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
1252 p.Controls.Add (CreateButton (100, 100, false, DockStyle.None, new Padding (), AnchorStyles.Left | AnchorStyles.Top));
\r
1254 p.SetFlowBreak (p.Controls[0], true);
\r
1256 Assert.AreEqual (new Rectangle (0, 100, 100, 100), p.Controls[0].Bounds, "CT1");
\r
1257 Assert.AreEqual (new Rectangle (0, 0, 100, 100), p.Controls[1].Bounds, "CT2");
\r
1261 private Button CreateButton (int width, int height, bool autosize, DockStyle dock, Padding margin, AnchorStyles anchor)
\r
1263 Button b = new Button ();
\r
1264 b.Size = new Size(width, height);
\r
1265 b.AutoSize = autosize;
\r
1266 b.Anchor = anchor;
\r
1268 b.Margin = margin;
\r
1273 #region PreferredSize
\r
1275 public void PreferredSize ()
\r
1277 FlowLayoutPanel panel = new FlowLayoutPanel ();
\r
1278 panel.Controls.AddRange (new Control [] { new PreferredSizeControl (), new PreferredSizeControl () });
\r
1279 Assert.AreEqual (new Size (212, 106), panel.PreferredSize, "1");
\r
1280 Assert.AreEqual (new Size (106, 212), panel.GetPreferredSize (new Size (150, 150)), "2");
\r
1281 Assert.AreEqual (new Size (212, 106), panel.GetPreferredSize (new Size (1000, 1000)) , "3");
\r
1282 Assert.AreEqual (new Size (212, 106), panel.GetPreferredSize (new Size (0, 0)), "4");
\r
1283 Assert.AreEqual (new Size (106, 212), panel.GetPreferredSize (new Size (1, 1)), "5");
\r
1284 Assert.AreEqual (new Size (212, 106), panel.GetPreferredSize (new Size (0, 150)), "6");
\r
1285 Assert.AreEqual (new Size (106, 212), panel.GetPreferredSize (new Size (150, 0)), "7");
\r
1286 panel.WrapContents = false;
\r
1287 Assert.AreEqual (new Size (212, 106), panel.PreferredSize, "1, WrapContents");
\r
1288 Assert.AreEqual (new Size (212, 106), panel.GetPreferredSize (new Size (150, 150)), "2, WrapContents");
\r
1289 Assert.AreEqual (new Size (212, 106), panel.GetPreferredSize (new Size (1000, 1000)) , "3, WrapContents");
\r
1290 Assert.AreEqual (new Size (212, 106), panel.GetPreferredSize (new Size (0, 0)), "4, WrapContents");
\r
1291 Assert.AreEqual (new Size (212, 106), panel.GetPreferredSize (new Size (1, 1)), "5, WrapContents");
\r
1292 Assert.AreEqual (new Size (212, 106), panel.GetPreferredSize (new Size (0, 150)), "6, WrapContents");
\r
1293 Assert.AreEqual (new Size (212, 106), panel.GetPreferredSize (new Size (150, 0)), "7, WrapContents");
\r
1296 class PreferredSizeControl : Control
\r
1298 protected override Size DefaultSize {
\r
1300 return new Size (100, 100);
\r
1307 public void Padding ()
\r
1309 Form f = new Form ();
\r
1311 FlowLayoutPanel flp = new FlowLayoutPanel ();
\r
1312 flp.Padding = new Padding (20);
\r
1313 flp.Size = new Size (100, 100);
\r
1315 Button b = new Button ();
\r
1316 b.Size = new Size (50, 50);
\r
1318 Button b2 = new Button ();
\r
1319 b2.Size = new Size (50, 50);
\r
1321 flp.Controls.Add (b);
\r
1322 flp.Controls.Add (b2);
\r
1324 f.Controls.Add (flp);
\r
1326 Assert.AreEqual (new Rectangle (23, 23, 50, 50), b.Bounds, "A1");
\r
1327 Assert.AreEqual (new Rectangle (23, 79, 50, 50), b2.Bounds, "A2");
\r