2007-03-15 Rolf Bjarne Kvinge <RKvinge@novell.com>
[mono.git] / mcs / class / Managed.Windows.Forms / Test / System.Windows.Forms / DefaultLayoutTest.cs
1 using System;\r
2 using System.Drawing;\r
3 using System.Windows.Forms;\r
4 \r
5 using NUnit.Framework;\r
6 \r
7 namespace MonoTests.System.Windows.Forms\r
8 {\r
9         [TestFixture]\r
10         public class DefaultLayoutTest\r
11         {\r
12                 int event_count;\r
13                 LayoutEventArgs most_recent_args;\r
14 \r
15                 void p_Layout (object sender, LayoutEventArgs e)\r
16                 {\r
17                         event_count ++;\r
18                         most_recent_args = e;\r
19                 }\r
20 \r
21                 [Test]\r
22                 public void AnchorLayoutEvents ()\r
23                 {\r
24                         Panel p;\r
25                         Button b;\r
26 \r
27                         p = new Panel ();\r
28 \r
29                         b = new Button ();\r
30                         p.Controls.Add (b);\r
31 \r
32                         p.Layout += new LayoutEventHandler (p_Layout);\r
33 \r
34                         /* set the button's anchor to something different */\r
35                         b.Anchor = AnchorStyles.Bottom;\r
36                         Assert.AreEqual (1, event_count, "1");\r
37                         Assert.AreEqual ("Anchor", most_recent_args.AffectedProperty, "2");\r
38 \r
39                         /* reset it to something new with the panel's layout suspended */\r
40                         event_count = 0;\r
41                         p.SuspendLayout ();\r
42                         b.Anchor = AnchorStyles.Top;\r
43                         Assert.AreEqual (0, event_count, "3");\r
44                         p.ResumeLayout ();\r
45                         Assert.AreEqual (1, event_count, "4");\r
46                         Assert.AreEqual (null, most_recent_args.AffectedProperty, "5");\r
47 \r
48                         /* with the anchor style set to something, resize the parent */\r
49                         event_count = 0;\r
50                         p.Size = new Size (500, 500);\r
51                         Assert.AreEqual (1, event_count, "6");\r
52                         Assert.AreEqual ("Bounds", most_recent_args.AffectedProperty, "7");\r
53 \r
54                         /* now try it with layout suspended */\r
55                         event_count = 0;\r
56                         p.SuspendLayout ();\r
57                         p.Size = new Size (400, 400);\r
58                         Assert.AreEqual (0, event_count, "8");\r
59                         p.ResumeLayout ();\r
60                         Assert.AreEqual (1, event_count, "9");\r
61                         Assert.AreEqual (null, most_recent_args.AffectedProperty, "10");\r
62 \r
63                         /* with the anchor style set to something, resize the child */\r
64                         event_count = 0;\r
65                         b.Size = new Size (100, 100);\r
66                         Assert.AreEqual (1, event_count, "11");\r
67                         Assert.AreEqual ("Bounds", most_recent_args.AffectedProperty, "12");\r
68 \r
69                         /* and again with layout suspended */\r
70                         event_count = 0;\r
71                         p.SuspendLayout ();\r
72                         b.Size = new Size (200, 200);\r
73                         Assert.AreEqual (0, event_count, "13");\r
74                         p.ResumeLayout ();\r
75                         Assert.AreEqual (1, event_count, "14");\r
76                         Assert.AreEqual (null, most_recent_args.AffectedProperty, "15");\r
77                 }\r
78 \r
79                 [Test]\r
80                 public void AnchorTopLeftTest ()\r
81                 {\r
82                         Form f = new Form ();\r
83                         f.ShowInTaskbar = false;\r
84 \r
85                         f.Size = new Size (200, 200);\r
86 \r
87                         Button b = new Button ();\r
88                         b.Size = new Size (100, 100);\r
89                         b.Anchor = AnchorStyles.Top | AnchorStyles.Left;\r
90 \r
91                         f.Controls.Add (b);\r
92 \r
93                         Assert.AreEqual (0, b.Left, "1");\r
94                         Assert.AreEqual (0, b.Top, "2");\r
95                         f.Size = new Size (300, 300);\r
96 \r
97                         Assert.AreEqual (0, b.Left, "3");\r
98                         Assert.AreEqual (0, b.Top, "4");\r
99                         \r
100                         f.Dispose ();\r
101                 }\r
102 \r
103                 [Test]\r
104                 public void AnchorTopRightTest ()\r
105                 {\r
106                         Form f = new Form ();\r
107                         f.ShowInTaskbar = false;\r
108 \r
109                         f.Size = new Size (200, 200);\r
110 \r
111                         Button b = new Button ();\r
112                         b.Size = new Size (100, 100);\r
113                         b.Anchor = AnchorStyles.Top | AnchorStyles.Right;\r
114 \r
115                         f.Controls.Add (b);\r
116 \r
117                         Assert.AreEqual (0, b.Left, "1");\r
118                         Assert.AreEqual (0, b.Top, "2");\r
119 \r
120                         f.Size = new Size (300, 300);\r
121 \r
122                         Assert.AreEqual (100, b.Left, "3");\r
123                         Assert.AreEqual (0, b.Top, "4");\r
124                         \r
125                         f.Dispose ();\r
126                 }\r
127 \r
128                 [Test]\r
129                 public void AnchorLeftRightTest ()\r
130                 {\r
131                         Form f = new Form ();\r
132                         f.ShowInTaskbar = false;\r
133 \r
134                         f.Size = new Size (200, 200);\r
135 \r
136                         Button b = new Button ();\r
137                         b.Size = new Size (100, 100);\r
138                         b.Anchor = AnchorStyles.Left | AnchorStyles.Right;\r
139 \r
140                         f.Controls.Add (b);\r
141 \r
142                         Assert.AreEqual (0, b.Left, "1");\r
143                         Assert.AreEqual (100, b.Right, "2");\r
144 \r
145                         f.Size = new Size (300, 300);\r
146 \r
147                         Assert.AreEqual (0, b.Left, "3");\r
148                         Assert.AreEqual (200, b.Right, "4");\r
149                         \r
150                         f.Dispose ();\r
151                 }\r
152 \r
153                 [Test]\r
154                 public void AnchorBottomLeftTest ()\r
155                 {\r
156                         Form f = new Form ();\r
157                         f.ShowInTaskbar = false;\r
158 \r
159                         f.Size = new Size (200, 200);\r
160 \r
161                         Button b = new Button ();\r
162                         b.Size = new Size (100, 100);\r
163                         b.Anchor = AnchorStyles.Left | AnchorStyles.Bottom;\r
164 \r
165                         f.Controls.Add (b);\r
166 \r
167                         Assert.AreEqual (0, b.Left, "1");\r
168                         Assert.AreEqual (0, b.Top, "2");\r
169 \r
170                         f.Size = new Size (300, 300);\r
171 \r
172                         Assert.AreEqual (0, b.Left, "3");\r
173                         Assert.AreEqual (100, b.Top, "4");\r
174                         \r
175                         f.Dispose ();\r
176                 }\r
177 \r
178                 [Test]\r
179                 public void AnchorBottomRightTest ()\r
180                 {\r
181                         Form f = new Form ();\r
182                         f.ShowInTaskbar = false;\r
183 \r
184                         f.Size = new Size (200, 200);\r
185 \r
186                         Button b = new Button ();\r
187                         b.Size = new Size (100, 100);\r
188                         b.Anchor = AnchorStyles.Right | AnchorStyles.Bottom;\r
189 \r
190                         f.Controls.Add (b);\r
191 \r
192                         Assert.AreEqual (0, b.Left, "1");\r
193                         Assert.AreEqual (0, b.Top, "2");\r
194 \r
195                         f.Size = new Size (300, 300);\r
196 \r
197                         Assert.AreEqual (100, b.Left, "3");\r
198                         Assert.AreEqual (100, b.Top, "4");\r
199                         \r
200                         f.Dispose ();\r
201                 }\r
202 \r
203                 [Test]\r
204                 public void AnchorTopBottomTest ()\r
205                 {\r
206                         Form f = new Form ();\r
207                         f.ShowInTaskbar = false;\r
208 \r
209                         f.Size = new Size (200, 200);\r
210 \r
211                         Button b = new Button ();\r
212                         b.Size = new Size (100, 100);\r
213                         b.Anchor = AnchorStyles.Top | AnchorStyles.Bottom;\r
214 \r
215                         f.Controls.Add (b);\r
216 \r
217                         Assert.AreEqual (0, b.Top, "1");\r
218                         Assert.AreEqual (100, b.Bottom, "2");\r
219 \r
220                         f.Size = new Size (300, 300);\r
221 \r
222                         Assert.AreEqual (0, b.Top, "3");\r
223                         Assert.AreEqual (200, b.Bottom, "4");\r
224                         \r
225                         f.Dispose ();\r
226                 }\r
227 \r
228                 // Unit test version of the test case in bug #80336\r
229                 [Test]\r
230                 public void AnchorSuspendLayoutTest ()\r
231                 {\r
232                         Form f = new Form ();\r
233                         f.ShowInTaskbar = false;\r
234 \r
235                         f.SuspendLayout ();\r
236 \r
237                         Button b = new Button ();\r
238                         b.Size = new Size (100, 100);\r
239 \r
240                         f.Controls.Add (b);\r
241 \r
242                         f.Size = new Size (200, 200);\r
243 \r
244                         b.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;\r
245 \r
246                         Assert.AreEqual (0, b.Top, "1");\r
247                         Assert.AreEqual (0, b.Left, "2");\r
248 \r
249                         f.Size = new Size (300, 300);\r
250 \r
251                         Assert.AreEqual (0, b.Top, "3");\r
252                         Assert.AreEqual (0, b.Left, "4");\r
253 \r
254                         f.ResumeLayout();\r
255 \r
256                         Assert.AreEqual (100, b.Top, "5");\r
257                         Assert.AreEqual (100, b.Left, "6");\r
258                         \r
259                         f.Dispose ();\r
260                 }\r
261 \r
262                 // another variant of AnchorSuspendLayoutTest1, with\r
263                 // the SuspendLayout moved after the Anchor\r
264                 // assignment.\r
265                 [Test]\r
266                 public void AnchorSuspendLayoutTest2 ()\r
267                 {\r
268                         Form f = new Form ();\r
269                         f.ShowInTaskbar = false;\r
270 \r
271                         Button b = new Button ();\r
272                         b.Size = new Size (100, 100);\r
273 \r
274                         f.Controls.Add (b);\r
275 \r
276                         f.Size = new Size (200, 200);\r
277 \r
278                         b.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;\r
279 \r
280                         Assert.AreEqual (0, b.Top, "1");\r
281                         Assert.AreEqual (0, b.Left, "2");\r
282 \r
283                         f.SuspendLayout ();\r
284 \r
285                         f.Size = new Size (300, 300);\r
286 \r
287                         Assert.AreEqual (0, b.Top, "3");\r
288                         Assert.AreEqual (0, b.Left, "4");\r
289 \r
290                         f.ResumeLayout();\r
291 \r
292                         Assert.AreEqual (100, b.Top, "5");\r
293                         Assert.AreEqual (100, b.Left, "6");\r
294                         \r
295                         f.Dispose ();\r
296                 }\r
297 \r
298                 // yet another variant, this time with no Suspend/Resume.\r
299                 [Test]\r
300                 public void AnchorSuspendLayoutTest3 ()\r
301                 {\r
302                         Form f = new Form ();\r
303                         f.ShowInTaskbar = false;\r
304 \r
305                         Button b = new Button ();\r
306                         b.Size = new Size (100, 100);\r
307 \r
308                         f.Controls.Add (b);\r
309 \r
310                         f.Size = new Size (200, 200);\r
311 \r
312                         b.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;\r
313 \r
314                         Assert.AreEqual (0, b.Top, "1");\r
315                         Assert.AreEqual (0, b.Left, "2");\r
316 \r
317                         f.Size = new Size (300, 300);\r
318 \r
319                         Assert.AreEqual (100, b.Top, "5");\r
320                         Assert.AreEqual (100, b.Left, "6");\r
321                         \r
322                         f.Dispose ();\r
323                 }\r
324 \r
325                 private string event_raised = string.Empty;\r
326 \r
327                 [Test]\r
328                 public void TestAnchorDockInteraction ()\r
329                 {\r
330                         Panel p = new Panel ();\r
331                         p.DockChanged += new EventHandler (DockChanged_Handler);\r
332 \r
333                         Assert.AreEqual (AnchorStyles.Top | AnchorStyles.Left, p.Anchor, "A1");\r
334                         Assert.AreEqual (DockStyle.None, p.Dock, "A2");\r
335 \r
336                         p.Dock = DockStyle.Right;\r
337                         Assert.AreEqual (AnchorStyles.Top | AnchorStyles.Left, p.Anchor, "A3");\r
338                         Assert.AreEqual (DockStyle.Right, p.Dock, "A4");\r
339                         Assert.AreEqual ("DockStyleChanged", event_raised, "A5");\r
340                         event_raised = string.Empty;\r
341 \r
342                         p.Anchor = AnchorStyles.Bottom;\r
343                         Assert.AreEqual (AnchorStyles.Bottom, p.Anchor, "A6");\r
344                         Assert.AreEqual (DockStyle.None, p.Dock, "A7");\r
345                         Assert.AreEqual (string.Empty, event_raised, "A8");\r
346 \r
347                         p.Dock = DockStyle.Fill;\r
348                         Assert.AreEqual (AnchorStyles.Top | AnchorStyles.Left, p.Anchor, "A9");\r
349                         Assert.AreEqual (DockStyle.Fill, p.Dock, "A10");\r
350                         Assert.AreEqual ("DockStyleChanged", event_raised, "A11");\r
351                         event_raised = string.Empty;\r
352 \r
353                         p.Anchor = AnchorStyles.Top | AnchorStyles.Left;\r
354                         Assert.AreEqual (AnchorStyles.Top | AnchorStyles.Left, p.Anchor, "A12");\r
355                         Assert.AreEqual (DockStyle.Fill, p.Dock, "A13");\r
356                         Assert.AreEqual (string.Empty, event_raised, "A14");\r
357 \r
358                         p.Dock = DockStyle.None;\r
359                         Assert.AreEqual (AnchorStyles.Top | AnchorStyles.Left, p.Anchor, "A15");\r
360                         Assert.AreEqual (DockStyle.None, p.Dock, "A16");\r
361                         Assert.AreEqual ("DockStyleChanged", event_raised, "A17");\r
362                         event_raised = string.Empty;\r
363 \r
364                         p.Anchor = AnchorStyles.Bottom;\r
365                         p.Dock = DockStyle.None;\r
366                         Assert.AreEqual (AnchorStyles.Bottom, p.Anchor, "A18");\r
367                         Assert.AreEqual (DockStyle.None, p.Dock, "A19");\r
368                         Assert.AreEqual (string.Empty, event_raised, "A20");\r
369                 }\r
370 \r
371                 public void DockChanged_Handler (object sender, EventArgs e)\r
372                 {\r
373                         event_raised += "DockStyleChanged";\r
374                 }\r
375 \r
376                 [Test]  // bug #80917\r
377                 [Category ("NotWorking")]\r
378                 public void BehaviorOverriddenDisplayRectangle ()\r
379                 {\r
380                         Control c = new Control ();\r
381                         c.Anchor |= AnchorStyles.Bottom;\r
382                         c.Size = new Size (100, 100);\r
383 \r
384                         Form f = new DisplayRectangleForm ();\r
385                         f.Controls.Add (c);\r
386                         f.ShowInTaskbar = false;\r
387                         f.Show ();\r
388                         \r
389                         Assert.AreEqual (new Size (100, 100), c.Size, "A1");\r
390                         \r
391                         f.Dispose ();\r
392                 }\r
393 \r
394                 private class DisplayRectangleForm : Form\r
395                 {\r
396                         public override Rectangle DisplayRectangle\r
397                         {\r
398                                 get { return Rectangle.Empty; }\r
399                         }\r
400                 }\r
401         }\r
402 \r
403         [TestFixture]   \r
404         public class DockingTests\r
405         {\r
406                 Form form;\r
407                 Panel panel;\r
408 \r
409                 int event_count;\r
410 \r
411                 [SetUp]\r
412                 public void Init ()\r
413                 {\r
414                         form = new Form ();\r
415                         form.ShowInTaskbar = false;\r
416                         form.Size = new Size (400, 400);\r
417                         panel = new Panel ();\r
418                         form.Controls.Add (panel);\r
419                         event_count = 0;\r
420                 }\r
421 \r
422                 [TearDown]\r
423                 public void Cleanup ()\r
424                 {\r
425                         form.Dispose ();\r
426                 }\r
427 \r
428                 void IncrementEventCount (object o, EventArgs args)\r
429                 {\r
430                         event_count++;\r
431                 }\r
432 \r
433                 [Test]\r
434                 public void TestDockSizeChangedEvent ()\r
435                 {\r
436                         panel.SizeChanged += new EventHandler (IncrementEventCount);\r
437                         panel.Dock = DockStyle.Bottom;\r
438                         Assert.AreEqual (1, event_count);\r
439                 }\r
440 \r
441                 [Test]\r
442                 public void TestDockLocationChangedEvent ()\r
443                 {\r
444                         panel.LocationChanged += new EventHandler (IncrementEventCount);\r
445                         panel.Dock = DockStyle.Bottom;\r
446                         Assert.AreEqual (1, event_count);\r
447                 }\r
448 \r
449                 [Test]\r
450                 public void TestDockFillFirst ()\r
451                 {\r
452                         Form f = new Form ();\r
453                         f.ShowInTaskbar = false;\r
454 \r
455                         Panel b1 = new Panel ();\r
456                         Panel b2 = new Panel ();\r
457 \r
458                         b1.Dock = DockStyle.Fill;\r
459                         b2.Dock = DockStyle.Left;\r
460 \r
461                         f.Controls.Add (b1);\r
462                         f.Controls.Add (b2);\r
463 \r
464                         f.Show ();\r
465                         Assert.AreEqual (new Rectangle (b2.Width, 0, f.ClientRectangle.Width - b2.Width, f.ClientRectangle.Height), b1.Bounds, "A1");\r
466                         Assert.AreEqual (new Rectangle (0, 0, 200, f.ClientRectangle.Height), b2.Bounds, "A2");\r
467                         f.Dispose ();\r
468                 }\r
469 \r
470                 [Test]\r
471                 public void TestDockFillLast ()\r
472                 {\r
473                         Form f = new Form ();\r
474                         f.ShowInTaskbar = false;\r
475 \r
476                         Panel b1 = new Panel ();\r
477                         Panel b2 = new Panel ();\r
478 \r
479                         b1.Dock = DockStyle.Fill;\r
480                         b2.Dock = DockStyle.Left;\r
481 \r
482                         f.Controls.Add (b2);\r
483                         f.Controls.Add (b1);\r
484 \r
485                         f.Show ();\r
486                         Assert.AreEqual (new Rectangle (0, 0, f.ClientRectangle.Width, f.ClientRectangle.Height), b1.Bounds, "B1");\r
487                         Assert.AreEqual (new Rectangle (0, 0, 200, f.ClientRectangle.Height), b2.Bounds, "B2");\r
488                         f.Dispose ();\r
489                 }\r
490         }\r
491 \r
492         [TestFixture]   \r
493         public class UndockingTests\r
494         {\r
495                 class TestPanel : Panel {\r
496 \r
497                         public void InvokeSetBoundsCore ()\r
498                         {\r
499                                 SetBoundsCore (37, 37, 37, 37, BoundsSpecified.All);\r
500                         }\r
501 \r
502                         public void InvokeUpdateBounds ()\r
503                         {\r
504                                 UpdateBounds (37, 37, 37, 37);\r
505                         }\r
506                 }\r
507 \r
508                 Form form;\r
509                 TestPanel panel;\r
510 \r
511                 [SetUp]\r
512                 public void Init ()\r
513                 {\r
514                         form = new Form ();\r
515                         form.ShowInTaskbar = false;\r
516                         form.Size = new Size (400, 400);\r
517                         panel = new TestPanel ();\r
518                         form.Controls.Add (panel);\r
519                 }\r
520 \r
521                 [TearDown]\r
522                 public void Cleanup ()\r
523                 {\r
524                         form.Dispose ();\r
525                 }\r
526 \r
527                 [Test]\r
528                 public void TestUndockDefaultLocation ()\r
529                 {\r
530                         Point loc = panel.Location;\r
531                         panel.Dock = DockStyle.Bottom;\r
532                         panel.Dock = DockStyle.None;\r
533                         Assert.AreEqual (loc, panel.Location);\r
534                 }\r
535 \r
536                 [Test]\r
537                 public void TestUndockDefaultLocationVisible ()\r
538                 {\r
539                         form.Show ();\r
540                         Point loc = panel.Location;\r
541                         panel.Dock = DockStyle.Bottom;\r
542                         panel.Dock = DockStyle.None;\r
543                         Assert.AreEqual (loc, panel.Location);\r
544                 }\r
545 \r
546                 [Test]\r
547                 public void TestUndockExplicitLeft ()\r
548                 {\r
549                         panel.Left = 150;\r
550                         panel.Dock = DockStyle.Top;\r
551                         panel.Dock = DockStyle.None;\r
552                         Assert.AreEqual (150, panel.Left);\r
553                 }\r
554 \r
555                 [Test]\r
556                 public void TestUndockExplicitTop ()\r
557                 {\r
558                         panel.Top = 150;\r
559                         panel.Dock = DockStyle.Top;\r
560                         panel.Dock = DockStyle.None;\r
561                         Assert.AreEqual (150, panel.Top);\r
562                 }\r
563 \r
564                 [Test]\r
565                 public void TestUndockExplicitLocation ()\r
566                 {\r
567                         panel.Location = new Point (50, 50);\r
568                         Point loc = panel.Location;\r
569                         panel.Dock = DockStyle.Bottom;\r
570                         panel.Dock = DockStyle.None;\r
571                         Assert.AreEqual (loc, panel.Location);\r
572                 }\r
573 \r
574                 [Test]\r
575                 public void TestUndockExplicitLeftVisible ()\r
576                 {\r
577                         form.Show ();\r
578                         panel.Left = 150;\r
579                         panel.Dock = DockStyle.Top;\r
580                         panel.Dock = DockStyle.None;\r
581                         Assert.AreEqual (150, panel.Left);\r
582                 }\r
583 \r
584                 [Test]\r
585                 public void TestUndockExplicitTopVisible ()\r
586                 {\r
587                         form.Show ();\r
588                         panel.Top = 150;\r
589                         panel.Dock = DockStyle.Top;\r
590                         panel.Dock = DockStyle.None;\r
591                         Assert.AreEqual (150, panel.Top);\r
592                 }\r
593 \r
594                 [Test]\r
595                 public void TestUndockExplicitLocationVisible ()\r
596                 {\r
597                         form.Show ();\r
598                         panel.Location = new Point (50, 50);\r
599                         Point loc = panel.Location;\r
600                         panel.Dock = DockStyle.Bottom;\r
601                         panel.Dock = DockStyle.None;\r
602                         Assert.AreEqual (loc, panel.Location);\r
603                 }\r
604 \r
605                 [Test]\r
606                 [Category ("NotWorking")]\r
607                 public void TestUndockDefaultSize ()\r
608                 {\r
609                         Size sz = panel.Size;\r
610                         panel.Dock = DockStyle.Fill;\r
611                         panel.Dock = DockStyle.None;\r
612                         Assert.AreEqual (sz, panel.Size);\r
613                 }\r
614 \r
615                 [Test]\r
616                 public void TestUndockExplicitHeight ()\r
617                 {\r
618                         panel.Height = 50;\r
619                         panel.Dock = DockStyle.Left;\r
620                         panel.Dock = DockStyle.None;\r
621                         Assert.AreEqual (50, panel.Height);\r
622                 }\r
623 \r
624                 [Test]\r
625                 [Category ("NotWorking")]\r
626                 public void TestUndockExplicitSize ()\r
627                 {\r
628                         panel.Size = new Size (50, 50);\r
629                         Size sz = panel.Size;\r
630                         panel.Dock = DockStyle.Fill;\r
631                         panel.Dock = DockStyle.None;\r
632                         Assert.AreEqual (sz, panel.Size);\r
633                 }\r
634 \r
635                 [Test]\r
636                 public void TestUndockExplicitWidth ()\r
637                 {\r
638                         panel.Width = 50;\r
639                         panel.Dock = DockStyle.Top;\r
640                         panel.Dock = DockStyle.None;\r
641                         Assert.AreEqual (50, panel.Width);\r
642                 }\r
643 \r
644                 [Test]\r
645                 public void TestUndockExplicitHeightVisible ()\r
646                 {\r
647                         form.Show ();\r
648                         panel.Height = 50;\r
649                         panel.Dock = DockStyle.Left;\r
650                         panel.Dock = DockStyle.None;\r
651                         Assert.AreEqual (50, panel.Height);\r
652                 }\r
653 \r
654                 [Test]\r
655                 [Category ("NotWorking")]\r
656                 public void TestUndockExplicitSizeVisible ()\r
657                 {\r
658                         form.Show ();\r
659                         panel.Size = new Size (50, 50);\r
660                         Size sz = panel.Size;\r
661                         panel.Dock = DockStyle.Fill;\r
662                         panel.Dock = DockStyle.None;\r
663                         Assert.AreEqual (sz, panel.Size);\r
664                 }\r
665 \r
666                 [Test]\r
667                 public void TestUndockExplicitWidthVisible ()\r
668                 {\r
669                         form.Show ();\r
670                         panel.Width = 50;\r
671                         panel.Dock = DockStyle.Top;\r
672                         panel.Dock = DockStyle.None;\r
673                         Assert.AreEqual (50, panel.Width);\r
674                 }\r
675 \r
676                 [Test]\r
677                 public void TestUndockSetBounds ()\r
678                 {\r
679                         panel.SetBounds (50, 50, 50, 50, BoundsSpecified.All);\r
680                         panel.Dock = DockStyle.Top;\r
681                         panel.Dock = DockStyle.None;\r
682                         Assert.AreEqual (50, panel.Height, "Height");\r
683                         Assert.AreEqual (50, panel.Left, "Left");\r
684                         Assert.AreEqual (50, panel.Top, "Top");\r
685                         Assert.AreEqual (50, panel.Width, "Width");\r
686                 }\r
687 \r
688                 [Test]\r
689                 public void TestUndockSetBoundsVisible ()\r
690                 {\r
691                         form.Show ();\r
692                         panel.SetBounds (50, 50, 50, 50, BoundsSpecified.All);\r
693                         panel.Dock = DockStyle.Top;\r
694                         panel.Dock = DockStyle.None;\r
695                         Assert.AreEqual (50, panel.Height, "Height");\r
696                         Assert.AreEqual (50, panel.Left, "Left");\r
697                         Assert.AreEqual (50, panel.Top, "Top");\r
698                         Assert.AreEqual (50, panel.Width, "Width");\r
699                 }\r
700 \r
701                 [Test]\r
702                 public void TestUndockSetBoundsCore ()\r
703                 {\r
704                         panel.InvokeSetBoundsCore ();\r
705                         panel.Dock = DockStyle.Top;\r
706                         panel.Dock = DockStyle.None;\r
707                         Assert.AreEqual (37, panel.Height, "Height");\r
708                         Assert.AreEqual (37, panel.Left, "Left");\r
709                         Assert.AreEqual (37, panel.Top, "Top");\r
710                         Assert.AreEqual (37, panel.Width, "Width");\r
711                 }\r
712 \r
713                 [Test]\r
714                 public void TestUndockSetBoundsCoreVisible ()\r
715                 {\r
716                         form.Show ();\r
717                         panel.InvokeSetBoundsCore ();\r
718                         panel.Dock = DockStyle.Top;\r
719                         panel.Dock = DockStyle.None;\r
720                         Assert.AreEqual (37, panel.Height, "Height");\r
721                         Assert.AreEqual (37, panel.Left, "Left");\r
722                         Assert.AreEqual (37, panel.Top, "Top");\r
723                         Assert.AreEqual (37, panel.Width, "Width");\r
724                 }\r
725 \r
726                 [Test]\r
727                 public void TestUndockUpdateBounds ()\r
728                 {\r
729                         panel.InvokeUpdateBounds ();\r
730                         panel.Dock = DockStyle.Top;\r
731                         panel.Dock = DockStyle.None;\r
732                         Assert.AreEqual (37, panel.Height, "Height");\r
733                         Assert.AreEqual (37, panel.Left, "Left");\r
734                         Assert.AreEqual (37, panel.Top, "Top");\r
735                         Assert.AreEqual (37, panel.Width, "Width");\r
736                 }\r
737 \r
738                 [Test]\r
739                 public void TestUndockUpdateBoundsVisible ()\r
740                 {\r
741                         form.Show ();\r
742                         panel.InvokeUpdateBounds ();\r
743                         panel.Dock = DockStyle.Top;\r
744                         panel.Dock = DockStyle.None;\r
745                         Assert.AreEqual (37, panel.Height, "Height");\r
746                         Assert.AreEqual (37, panel.Left, "Left");\r
747                         Assert.AreEqual (37, panel.Top, "Top");\r
748                         Assert.AreEqual (37, panel.Width, "Width");\r
749                 }\r
750         }\r
751 }\r