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