fixed tests
[mono.git] / mcs / class / Managed.Windows.Forms / Test / System.Windows.Forms / FormTest.cs
1 //
2 // FormTest.cs: Test cases for Form.
3 //
4 // Author:
5 //   Ritvik Mayank (mritvik@novell.com)
6 //
7 // (C) 2005 Novell, Inc. (http://www.novell.com)
8 //
9
10 using System;
11 using System.ComponentModel;
12 using System.Drawing;
13 using System.Reflection;
14 using System.Windows.Forms;
15
16 using NUnit.Framework;
17
18 namespace MonoTests.System.Windows.Forms
19 {
20         [TestFixture]
21         public class FormTest
22         {
23                 [Test]
24                 [NUnit.Framework.Category ("NotWorking")]
25                 public void FormCreateParamsStyleTest ()
26                 {
27                         Form frm;
28                         
29                         using (frm = new Form ()) {
30                                 Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles) TestHelper.GetCreateParams (frm).Style), "#01-Style");
31                                 Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles) TestHelper.GetCreateParams (frm).ExStyle), "#01-ExStyle");
32                         }
33
34                         using (frm = new Form ()) {
35                                 frm.AllowDrop = !frm.AllowDrop;
36                                 Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#02-Style");
37                                 Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#02-ExStyle");
38                         }
39
40                         using (frm = new Form ()) {
41                                 frm.AllowTransparency = !frm.AllowTransparency;
42                                 Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#03-Style");
43                                 Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW | WindowExStyles.WS_EX_LAYERED, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#03-ExStyle");
44                         }
45
46                         using (frm = new Form ()) {
47                                 frm.Opacity = 0.50;
48                                 Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#04-Style");
49                                 Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW | WindowExStyles.WS_EX_LAYERED, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#04-ExStyle");
50                         }
51
52                         using (frm = new Form ()) {
53                                 frm.TransparencyKey = Color.Cyan;
54                                 Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#05-Style");
55                                 Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW | WindowExStyles.WS_EX_LAYERED, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#05-ExStyle");
56                         }
57                         
58                         using (frm = new Form ()) {
59                                 frm.CausesValidation = !frm.CausesValidation;
60                                 Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#06-Style");
61                                 Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#06-ExStyle");
62                         }
63
64                         using (frm = new Form ()) {
65                                 frm.ControlBox = !frm.ControlBox;
66                                 Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TABSTOP | WindowStyles.WS_GROUP | WindowStyles.WS_THICKFRAME | WindowStyles.WS_BORDER | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#07-Style");
67                                 Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#07-ExStyle");
68                         }
69
70                         using (frm = new Form ()) {
71                                 frm.Enabled = true;
72                                 Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#08-Style");
73                                 Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#08-ExStyle");
74                         }
75
76                         using (frm = new Form ()) {
77                                 frm.FormBorderStyle = FormBorderStyle.Fixed3D;
78                                 Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TABSTOP | WindowStyles.WS_GROUP | WindowStyles.WS_SYSMENU | WindowStyles.WS_CAPTION | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#10-Style");
79                                 Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CLIENTEDGE | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#10-ExStyle");
80                         }
81
82                         using (frm = new Form ()) {
83                                 frm.FormBorderStyle = FormBorderStyle.FixedDialog;
84                                 Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TABSTOP | WindowStyles.WS_GROUP | WindowStyles.WS_SYSMENU | WindowStyles.WS_CAPTION | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#11-Style");
85                                 Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_DLGMODALFRAME | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#11-ExStyle");
86                         }
87
88                         using (frm = new Form ()) {
89                                 frm.FormBorderStyle = FormBorderStyle.FixedSingle;
90                                 Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TABSTOP | WindowStyles.WS_GROUP | WindowStyles.WS_SYSMENU | WindowStyles.WS_CAPTION | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#12-Style");
91                                 Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#12-ExStyle");
92                         }
93
94                         using (frm = new Form ()) {
95                                 frm.FormBorderStyle = FormBorderStyle.FixedToolWindow;
96                                 Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TABSTOP | WindowStyles.WS_GROUP | WindowStyles.WS_SYSMENU | WindowStyles.WS_CAPTION | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#13-Style");
97                                 Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_TOOLWINDOW | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#13-ExStyle");
98                         }
99
100                         using (frm = new Form ()) {
101                                 frm.FormBorderStyle = FormBorderStyle.None;
102                                 Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TABSTOP | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#14-Style");
103                                 Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#14-ExStyle");
104                         }
105
106                         using (frm = new Form ()) {
107                                 frm.FormBorderStyle = FormBorderStyle.Sizable;
108                                 Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#15-Style");
109                                 Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#15-ExStyle");
110                         }
111
112                         using (frm = new Form ()) {
113                                 frm.FormBorderStyle = FormBorderStyle.SizableToolWindow;
114                                 Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#16-Style");
115                                 Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_TOOLWINDOW | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#16-ExStyle");
116                         }
117
118                         using (frm = new Form ()) {
119                                 frm.HelpButton = !frm.HelpButton;
120                                 Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#17-Style");
121                                 Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#17-ExStyle");
122                         }
123
124                         using (frm = new Form ()) {
125                                 frm.Icon = null;
126                                 Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#18-Style");
127                                 Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#18-ExStyle");
128                         }
129
130                         using (frm = new Form ()) {
131                                 frm.Icon = SystemIcons.Asterisk;
132                                 Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#19-Style");
133                                 Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#19-ExStyle");
134                         }
135
136                         using (frm = new Form ()) {
137                                 frm.IsMdiContainer = !frm.IsMdiContainer;
138                                 Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#20-Style");
139                                 Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#20-ExStyle");
140                         }
141
142                         using (frm = new Form ()) {
143                                 frm.MaximizeBox = !frm.MaximizeBox;
144                                 Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_GROUP | WindowStyles.WS_THICKFRAME | WindowStyles.WS_SYSMENU | WindowStyles.WS_CAPTION | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#21-Style");
145                                 Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#21-ExStyle");
146                         }
147
148                         using (frm = new Form ()) {
149                                 frm.MinimizeBox = !frm.MinimizeBox;
150                                 Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TABSTOP | WindowStyles.WS_THICKFRAME | WindowStyles.WS_SYSMENU | WindowStyles.WS_CAPTION | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#22-Style");
151                                 Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#22-ExStyle");
152                         }
153 #if NET_2_0
154                         using (frm = new Form ()) {
155                                 frm.ShowIcon = !frm.ShowIcon;
156                                 Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#23-Style");
157                                 Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_DLGMODALFRAME | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#23-ExStyle");
158                         }
159 #endif          
160                         using (frm = new Form ()) {
161                                 frm.ShowInTaskbar = !frm.ShowInTaskbar;
162                                 Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#24-Style");
163                                 Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#24-ExStyle");
164                         }
165
166
167                         using (frm = new Form ()) {
168                                 frm.TabStop = !frm.TabStop;
169                                 Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#25-Style");
170                                 Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#25-ExStyle");
171                         }
172
173                         using (frm = new Form ()) {
174                                 frm.TopLevel = !frm.TopLevel;
175                                 Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN | WindowStyles.WS_CLIPSIBLINGS | WindowStyles.WS_CHILD, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#26-Style");
176                                 Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#26-ExStyle");
177                         }
178
179                         using (frm = new Form ()) {
180                                 frm.Visible = !frm.Visible;
181                                 Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#27-Style");
182                                 Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#27-ExStyle");
183                         }
184                 }
185                 
186                 [Test]
187                 public void FormParentedTest ()
188                 {
189                         using (Form frm = new Form ()) {
190                                 Form frm2 = new Form ();
191                                 frm2.TopLevel = false;
192                                 frm.ShowInTaskbar = false;
193                                 frm2.ShowInTaskbar = false;
194                                 frm2.Visible = true;
195                                 frm.Visible = true;
196                                 
197                                 EventLogger log = new EventLogger (frm);
198                                 EventLogger log2 = new EventLogger (frm2);
199                                 
200                                 frm.Controls.Add (frm2);
201
202                                 Assert.IsTrue (log2.EventRaised ("ParentChanged"), "#C1");
203                                 Assert.IsTrue (log.EventRaised ("ControlAdded"), "#P1");
204                                 Assert.AreSame (frm, frm2.Parent, "#02");
205                         }
206                 }
207                 
208                 [Test]
209                 public void FormPropertyTest ()
210                 {
211                         Form myform = new Form ();
212                         myform.Visible = true;
213                         myform.Text = "NewForm";
214                         myform.Name = "FormTest";
215                         Assert.IsNull (myform.AcceptButton, "#1");
216                         Assert.IsNull (myform.ActiveMdiChild, "#2"); 
217                         Assert.IsFalse (myform.AutoScale, "#3");
218                         Assert.IsNull (myform.CancelButton, "#6");
219                         Assert.IsTrue (myform.ControlBox, "#9");
220                         Assert.IsTrue (myform.DesktopBounds.X > 0, "#10a");
221                         Assert.IsTrue (myform.DesktopBounds.Y > 0, "#10b");
222                         Assert.AreEqual (300, myform.DesktopBounds.Height, "#10c");
223                         Assert.AreEqual (300, myform.DesktopBounds.Width, "#10d");
224                         Assert.IsTrue (myform.DesktopLocation.X > 0, "#11a");
225                         Assert.IsTrue (myform.DesktopLocation.Y > 0, "#11b");
226                         Assert.AreEqual (DialogResult.None, myform.DialogResult, "#12");
227                         Assert.AreEqual (FormBorderStyle.Sizable, myform.FormBorderStyle, "#13");
228                         Assert.IsFalse (myform.HelpButton, "#14");
229                         Assert.AreEqual ("System.Drawing.Icon", myform.Icon.GetType ().ToString (), "#15");
230                         Assert.IsFalse (myform.IsMdiChild, "#16");
231                         Assert.IsFalse (myform.IsMdiContainer, "#17");
232                         Assert.IsFalse (myform.KeyPreview, "#18");
233                         Assert.IsTrue (myform.MaximizeBox, "#19");
234                         Assert.AreEqual (0, myform.MaximumSize.Height, "#20a");
235                         Assert.AreEqual (0, myform.MaximumSize.Width, "#20b");
236                         Assert.AreEqual (0, myform.MdiChildren.Length, "#21a");
237                         Assert.AreEqual (1, myform.MdiChildren.Rank, "#21b");
238                         Assert.IsFalse (myform.MdiChildren.IsSynchronized, "#21c");
239                         Assert.IsNull (myform.MdiParent, "#22");
240                         Assert.IsNull (myform.Menu, "#23");
241                         Assert.IsNull (myform.MergedMenu, "#24");
242                         Assert.IsTrue (myform.MinimizeBox, "#25");
243                         Assert.AreEqual (0, myform.MinimumSize.Height, "#26a");
244                         Assert.AreEqual (0, myform.MinimumSize.Width, "#26b");
245                         Assert.IsTrue (myform.MinimumSize.IsEmpty, "#26c");
246                         Assert.IsFalse (myform.Modal, "#27");
247                         Assert.AreEqual (1, myform.Opacity, "#28");
248                         Assert.AreEqual (0, myform.OwnedForms.Length, "#29a");
249                         Assert.AreEqual (1, myform.OwnedForms.Rank, "#29b");
250                         Assert.IsNull (myform.Owner, "#30");
251                         Assert.IsTrue (myform.ShowInTaskbar, "#31");
252                         Assert.AreEqual (300, myform.Size.Height, "#32a");
253                         Assert.AreEqual (300, myform.Size.Width, "#32b");
254                         Assert.AreEqual (SizeGripStyle.Auto, myform.SizeGripStyle, "#33");
255                         Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, myform.StartPosition, "#34");
256                         Assert.IsTrue (myform.TopLevel, "#35");
257                         Assert.IsFalse (myform.TopMost, "#36");
258                         Assert.AreEqual (Color.Empty, myform.TransparencyKey, "#37");
259                         Assert.AreEqual (FormWindowState.Normal, myform.WindowState, "#38");
260                         Assert.AreEqual (ImeMode.NoControl, myform.ImeMode, "#39");
261                         myform.Dispose ();
262                 }
263
264                 [Test]
265                 [NUnit.Framework.Category ("NotWorking")]
266                 public void ActivateTest ()
267                 {
268                         Form myform = new Form ();
269                         myform.ShowInTaskbar = false;
270                         myform.Visible = true;
271                         myform.Text = "NewForm";
272                         myform.Name = "FormTest";
273                         myform.Activate ();
274                         Assert.AreEqual (true, myform.Focus (), "#40");
275                         myform.Dispose ();
276                 }
277
278                 [Test]
279                 public void AddOwnedFormTest ()
280                 {
281                         Form parent = new Form ();
282                         parent.ShowInTaskbar = false;
283                         parent.Text = "NewParent";
284                         Form ownedForm = new Form ();
285                         ownedForm.ShowInTaskbar = false;
286                         ownedForm.Text = "Owned Form";
287                         parent.AddOwnedForm (ownedForm);
288                         ownedForm.Show ();
289                         Assert.AreEqual ("NewParent", ownedForm.Owner.Text, "#41");
290                         ownedForm.Dispose ();
291                         parent.Dispose ();
292                 }
293
294                 [Test] // bug #80020
295                 [NUnit.Framework.Category ("NotWorking")]
296                 public void IsHandleCreated ()
297                 {
298                         Form main = new Form ();
299                         main.Name = "main";
300                         main.IsMdiContainer = true;
301                         main.ShowInTaskbar = false;
302                         Assert.IsFalse (main.IsHandleCreated, "#1");
303
304                         Form child = new Form ();
305                         child.MdiParent = main;
306                         child.WindowState = FormWindowState.Maximized;
307                         Assert.IsFalse (main.IsHandleCreated, "#2");
308
309                         child.Show ();
310                         Assert.IsFalse (child.IsHandleCreated, "#3");
311                         Assert.IsFalse (main.IsHandleCreated, "#4");
312
313                         main.Show ();
314                         Assert.IsTrue (child.IsHandleCreated, "#5");
315                         Assert.IsTrue (main.IsHandleCreated, "#6");
316
317                         child.Dispose ();
318                         main.Dispose ();
319                 }
320
321                 [Test]
322                 public void RemoveOwnedFormTest ()
323                 {
324                         Form myform = new Form ();
325                         myform.ShowInTaskbar = false;
326                         myform.Text = "NewForm";
327                         myform.Name = "FormTest";
328                         myform.RemoveOwnedForm (myform);
329                         myform.Show ();
330                         Assert.AreEqual (null, myform.Owner, "#44");
331                         myform.Dispose ();
332                 }
333
334                 [Test]
335                 public void SetDesktopBoundsTest ()
336                 {
337                         Form myform = new Form ();
338                         myform.ShowInTaskbar = false;
339                         myform.Visible = true;
340                         myform.Text = "NewForm";
341                         myform.Name = "FormTest";
342                         myform.SetDesktopBounds (10, 10, 200 , 200);
343                         Assert.AreEqual (200, myform.DesktopBounds.Height, "#45");
344                         myform.Dispose ();
345                 }
346
347                 [Test]
348                 public void SetDesktopLocationTest ()
349                 {
350                         Form myform = new Form ();
351                         myform.ShowInTaskbar = false;
352                         myform.Visible = true;
353                         myform.Text = "NewForm";
354                         myform.Name = "FormTest";
355                         myform.SetDesktopLocation (10, 10);
356                         Assert.AreEqual (10, myform.DesktopLocation.X, "#46");
357                         myform.Dispose ();
358                 }
359
360                 [Test]
361                 public void SetDialogResultOutOfRange ()
362                 {
363                         Form myform = new Form ();
364                         myform.ShowInTaskbar = false;
365                         try {
366                                 myform.DialogResult = (DialogResult) (-1);
367                                 Assert.Fail ("#48");
368                         } catch (InvalidEnumArgumentException) {
369                         }
370
371                         try {
372                                 myform.DialogResult = (DialogResult) ((int) DialogResult.No + 1);
373                                 Assert.Fail ("#49");
374                         } catch (InvalidEnumArgumentException) {
375                         }
376                         myform.Dispose ();
377                 }
378
379                 void myform_set_dialogresult (object sender, EventArgs e)
380                 {
381                         Form f = (Form)sender;
382
383                         f.DialogResult = DialogResult.OK;
384                 }
385
386                 void myform_close (object sender, EventArgs e)
387                 {
388                         Form f = (Form)sender;
389
390                         f.Close();
391                 }
392
393                 [Test]
394                 public void SetDialogResult ()
395                 {
396                         Form myform = new Form ();
397                         myform.ShowInTaskbar = false;
398                         myform.Visible = true;
399
400                         myform.DialogResult = DialogResult.Cancel;
401
402                         Assert.IsTrue (myform.Visible, "A1");
403                         Assert.IsFalse (myform.IsDisposed, "A2");
404
405                         myform.Close ();
406
407                         Assert.IsFalse (myform.Visible, "A3");
408                         Assert.IsTrue (myform.IsDisposed, "A4");
409
410                         DialogResult result;
411
412                         myform = new Form ();
413                         myform.ShowInTaskbar = false;
414                         myform.VisibleChanged += new EventHandler (myform_set_dialogresult);
415                         result = myform.ShowDialog ();
416
417                         Assert.AreEqual (result, DialogResult.OK, "A5");
418                         Assert.IsFalse (myform.Visible, "A6");
419                         Assert.IsFalse (myform.IsDisposed, "A7");
420
421                         myform = new Form ();
422                         myform.ShowInTaskbar = false;
423                         myform.VisibleChanged += new EventHandler (myform_close);
424                         result = myform.ShowDialog ();
425
426                         Assert.AreEqual (result, DialogResult.Cancel, "A8");
427                         Assert.IsFalse (myform.Visible, "A9");
428                         Assert.IsFalse (myform.IsDisposed, "A10");
429                 }
430
431                 [Test]
432                 public void ShowDialog_Child ()
433                 {
434                         Form main = new Form ();
435                         main.IsMdiContainer = true;
436                         Form child = new Form ();
437                         child.MdiParent = main;
438                         try {
439                                 child.ShowDialog ();
440                                 Assert.Fail ("#1");
441                         } catch (InvalidOperationException ex) {
442                                 // Forms that are not top level forms cannot be displayed as a
443                                 // modal dialog. Remove the form from any parent form before 
444                                 // calling ShowDialog.
445                                 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
446                                 Assert.IsNull (ex.InnerException, "#3");
447                                 Assert.IsNotNull (ex.Message, "#4");
448                         }
449                         Assert.IsNull (child.Owner, "#5");
450                         child.Dispose ();
451                         main.Dispose ();
452                 }
453
454                 [Test]
455                 public void ShowDialog_Disabled ()
456                 {
457                         Form form = new Form ();
458                         form.Enabled = false;
459                         try {
460                                 form.ShowDialog ();
461                                 Assert.Fail ("#A1");
462                         } catch (InvalidOperationException ex) {
463                                 // Forms that are not enabled cannot be displayed as a modal
464                                 // dialog. Set the form's enabled property to true before
465                                 // calling ShowDialog.
466                                 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
467                                 Assert.IsNull (ex.InnerException, "#A3");
468                                 Assert.IsNotNull (ex.Message, "#A4");
469                         }
470                         Assert.IsNull (form.Owner, "#A5");
471                         form.Dispose ();
472
473                         Form main = new Form ();
474                         form = new Form ();
475                         form.Owner = main;
476                         form.Enabled = false;
477                         try {
478                                 form.ShowDialog ();
479                                 Assert.Fail ("#B1");
480                         } catch (InvalidOperationException) {
481                         }
482                         Assert.IsNotNull (form.Owner, "#B2");
483                         Assert.AreSame (main, form.Owner, "#B3");
484                         form.Dispose ();
485                         main.Dispose ();
486                 }
487
488                 [Test]
489                 [NUnit.Framework.Category ("NotWorking")]
490                 public void ShowDialog_Owner_Circular ()
491                 {
492                         Form main = new Form ();
493                         Form child = new Form ();
494                         child.Owner = main;
495                         try {
496                                 main.ShowDialog (child);
497                                 Assert.Fail ("#1");
498                         } catch (ArgumentException ex) {
499                                 // A circular control reference has been made. A control cannot
500                                 // be owned or parented to itself
501                                 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
502                                 Assert.IsNull (ex.InnerException, "#3");
503                                 Assert.IsNotNull (ex.Message, "#4");
504                                 Assert.IsNull (ex.ParamName, "#5");
505                         }
506                         Assert.IsNull (main.Owner, "#6");
507                         main.Dispose ();
508                         child.Dispose ();
509                 }
510
511                 [Test] // bug #80773
512                 [NUnit.Framework.Category ("NotWorking")]
513                 public void ShowDialog_Owner_Self ()
514                 {
515                         Form form = new Form ();
516                         try {
517                                 form.ShowDialog (form);
518                                 Assert.Fail ("#A1");
519                         } catch (ArgumentException ex) {
520                                 // Forms cannot own themselves or their owners
521                                 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
522                                 Assert.IsNull (ex.InnerException, "#A3");
523                                 Assert.IsNotNull (ex.Message, "#A4");
524                                 Assert.IsNotNull (ex.ParamName, "#A5");
525                                 Assert.AreEqual ("owner", ex.ParamName, "#A6");
526                         }
527                         Assert.IsNull (form.Owner, "#A7");
528                         form.Dispose ();
529
530                         Form main = new Form ();
531                         form = new Form ();
532                         form.Owner = main;
533                         try {
534                                 form.ShowDialog (form);
535                                 Assert.Fail ("#B1");
536                         } catch (ArgumentException) {
537                         }
538                         Assert.IsNotNull (form.Owner);
539                         Assert.AreSame (main, form.Owner, "#B2");
540                         form.Dispose ();
541                         main.Dispose ();
542                 }
543
544                 [Test]
545                 public void ShowDialog_Visible ()
546                 {
547                         Form form = new Form ();
548                         form.ShowInTaskbar = false;
549                         form.Visible = true;
550                         try {
551                                 form.ShowDialog ();
552                                 Assert.Fail ("#A1");
553                         } catch (InvalidOperationException ex) {
554                                 // Forms that are already visible cannot be displayed as a modal
555                                 // dialog. Set the form's visible property to false before 
556                                 // calling ShowDialog.
557                                 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
558                                 Assert.IsNull (ex.InnerException, "#A3");
559                                 Assert.IsNotNull (ex.Message, "#A4");
560                         }
561                         Assert.IsNull (form.Owner, "#A5");
562                         form.Dispose ();
563
564                         Form main = new Form ();
565                         form = new Form ();
566                         form.Owner = main;
567                         form.Visible = true;
568                         try {
569                                 form.ShowDialog ();
570                                 Assert.Fail ("#B1");
571                         } catch (InvalidOperationException) {
572                         }
573                         Assert.IsNotNull (form.Owner, "#B2");
574                         Assert.AreSame (main, form.Owner, "#B3");
575                         form.Dispose ();
576                         main.Dispose ();
577                 }
578
579                 [Test] // bug #80604
580                 [NUnit.Framework.Category ("NotWorking")]
581                 public void VisibleOnLoad ()
582                 {
583                         MockForm form = new MockForm ();
584                         form.CloseOnLoad = true;
585                         Application.Run (form);
586                         Assert.IsTrue (form.VisibleOnLoad, "#1");
587                         form.Dispose ();
588
589                         form = new MockForm ();
590                         form.ShowInTaskbar = false;
591                         form.Show ();
592                         Assert.IsTrue (form.VisibleOnLoad, "#2");
593                         form.Dispose ();
594                 }
595
596                 [Test] // bug #80052
597                 [NUnit.Framework.Category ("NotWorking")]
598                 public void Location ()
599                 {
600                         // 
601                         // CenterParent
602                         // 
603
604                         Form formA = new Form ();
605                         formA.ShowInTaskbar = false;
606                         formA.StartPosition = FormStartPosition.CenterParent;
607                         formA.Location = new Point (151, 251);
608                         formA.Show ();
609
610                         Assert.AreEqual (FormStartPosition.CenterParent, formA.StartPosition, "#A1");
611                         Assert.IsFalse (formA.Location.X == 151, "#A2");
612                         Assert.IsFalse (formA.Location.Y == 251, "#A3");
613
614                         formA.Location = new Point (311, 221);
615
616                         Assert.AreEqual (FormStartPosition.CenterParent, formA.StartPosition, "#A4");
617                         Assert.AreEqual (311, formA.Location.X, "#A5");
618                         Assert.AreEqual (221, formA.Location.Y, "#A6");
619
620                         formA.Dispose ();
621
622                         // 
623                         // CenterScreen
624                         // 
625
626                         Form formB = new Form ();
627                         formB.ShowInTaskbar = false;
628                         formB.StartPosition = FormStartPosition.CenterScreen;
629                         formB.Location = new Point (151, 251);
630                         formB.Show ();
631
632                         Assert.AreEqual (FormStartPosition.CenterScreen, formB.StartPosition, "#B1");
633                         Assert.IsFalse (formB.Location.X == 151, "#B2");
634                         Assert.IsFalse (formB.Location.Y == 251, "#B3");
635
636                         formB.Location = new Point (311, 221);
637
638                         Assert.AreEqual (FormStartPosition.CenterScreen, formB.StartPosition, "#B4");
639                         Assert.AreEqual (311, formB.Location.X, "#B5");
640                         Assert.AreEqual (221, formB.Location.Y, "#B6");
641
642                         formB.Dispose ();
643
644                         // 
645                         // Manual
646                         // 
647
648                         Form formC = new Form ();
649                         formC.ShowInTaskbar = false;
650                         formC.StartPosition = FormStartPosition.Manual;
651                         formC.Location = new Point (151, 251);
652                         formC.Show ();
653
654                         Assert.AreEqual (FormStartPosition.Manual, formC.StartPosition, "#C1");
655                         Assert.AreEqual (151, formC.Location.X, "#C2");
656                         Assert.AreEqual (251, formC.Location.Y, "#C3");
657
658                         formC.Location = new Point (311, 221);
659
660                         Assert.AreEqual (FormStartPosition.Manual, formC.StartPosition, "#C4");
661                         Assert.AreEqual (311, formC.Location.X, "#C5");
662                         Assert.AreEqual (221, formC.Location.Y, "#C6");
663
664                         formC.Dispose ();
665
666                         // 
667                         // WindowsDefaultBounds
668                         // 
669
670                         Form formD = new Form ();
671                         formD.ShowInTaskbar = false;
672                         formD.StartPosition = FormStartPosition.WindowsDefaultBounds;
673                         formD.Location = new Point (151, 251);
674                         formD.Show ();
675
676                         Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, formD.StartPosition, "#D1");
677                         Assert.IsFalse (formD.Location.X == 151, "#D2");
678                         Assert.IsFalse (formD.Location.Y == 251, "#D3");
679
680                         formD.Location = new Point (311, 221);
681
682                         Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, formD.StartPosition, "#D4");
683                         Assert.AreEqual (311, formD.Location.X, "#D5");
684                         Assert.AreEqual (221, formD.Location.Y, "#D6");
685
686                         formD.Dispose ();
687
688                         // 
689                         // WindowsDefaultLocation
690                         // 
691
692                         Form formE = new Form ();
693                         formE.ShowInTaskbar = false;
694                         formE.Location = new Point (151, 251);
695                         formE.Show ();
696
697                         Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, formE.StartPosition, "#E1");
698                         Assert.IsFalse (formE.Location.X == 151, "#E2");
699                         Assert.IsFalse (formE.Location.Y == 251, "#E3");
700
701                         formE.Location = new Point (311, 221);
702
703                         Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, formE.StartPosition, "#E4");
704                         Assert.AreEqual (311, formE.Location.X, "#E5");
705                         Assert.AreEqual (221, formE.Location.Y, "#E6");
706
707                         formE.Dispose ();
708                 }
709
710                 [Test]
711                 public void DisposeOwnerTest ()
712                 {
713                         Form f1 = new Form ();
714                         Form f2 = new Form ();
715
716                         f2.Owner = f1;
717
718                         f1.Dispose ();
719
720                         Assert.IsNull (f2.Owner, "1");
721                         Assert.AreEqual (0, f1.OwnedForms.Length, "2");
722                 }
723
724                 [Test]
725                 [ExpectedException (typeof (ObjectDisposedException))]
726                 public void AccessDisposedForm ()
727                 {
728                         Form myform = new Form ();
729                         myform.ShowInTaskbar = false;
730
731                         myform.Show ();
732                         myform.Close (); // this should result in the form being disposed
733                         myform.Show (); // and this line should result in the ODE being thrown
734                 }
735
736                 class MyForm : Form
737                 {
738                         public void DoDestroyHandle ()
739                         {
740                                 DestroyHandle();
741                         }
742                         public void DoRecreateHandle ()
743                         {
744                                 RecreateHandle();
745                         }
746                 }
747
748                 int handle_destroyed_count;
749                 void handle_destroyed (object sender, EventArgs e)
750                 {
751                         handle_destroyed_count++;
752                 }
753
754                 [Test]
755                 public void DestroyHandleTest ()
756                 {
757                         handle_destroyed_count = 0;
758
759                         MyForm f1 = new MyForm ();
760                         f1.HandleDestroyed += new EventHandler (handle_destroyed);
761                         f1.Show ();
762                         f1.DoDestroyHandle ();
763                         Assert.AreEqual (1, handle_destroyed_count, "1");
764
765                         f1 = new MyForm ();
766                         f1.HandleDestroyed += new EventHandler (handle_destroyed);
767                         f1.Show ();
768                         f1.DoRecreateHandle ();
769                         Assert.AreEqual (2, handle_destroyed_count, "2");
770                 }
771
772                 [Test]
773                 public void FormClose ()
774                 {
775                         Form myform = new Form ();
776                         myform.ShowInTaskbar = false;
777
778                         Assert.IsFalse (myform.Visible, "A1");
779                         Assert.IsFalse (myform.IsDisposed, "A2");
780
781                         myform.Close ();
782
783                         Assert.IsFalse (myform.Visible, "A3");
784                         Assert.IsFalse (myform.IsDisposed, "A4");
785
786                         myform.Show ();
787
788                         Assert.IsTrue (myform.Visible, "A5");
789                         Assert.IsFalse (myform.IsDisposed, "A6");
790
791                         myform.Close ();
792
793                         Assert.IsFalse (myform.Visible, "A7");
794                         Assert.IsTrue (myform.IsDisposed, "A8");
795                 }
796
797                 [Test]
798                 public void FormClose2 ()
799                 {
800                         WMCloseWatcher f = new WMCloseWatcher ();
801                         f.ShowInTaskbar = false;
802
803                         f.close_count = 0;
804                         Assert.IsFalse (f.Visible, "A1");
805                         f.Close ();
806                         Assert.AreEqual (0, f.close_count, "A2");
807
808
809                         f.Show ();
810                         f.Close ();
811                         Assert.AreEqual (1, f.close_count, "A3");
812                 }
813
814                 class WMCloseWatcher : Form {
815                         public int close_count;
816
817                         protected override void WndProc (ref Message msg) {
818                                 if (msg.Msg == 0x0010 /* WM_CLOSE */) {
819                                         close_count ++;
820                                 }
821
822                                 base.WndProc (ref msg);
823                         }
824                 }
825
826                 class SwallowOnActivated : Form {
827                         protected override void OnActivated (EventArgs e)
828                         {
829                                 // do nothing
830                         }
831
832                         protected override void OnCreateControl () {
833                                 base.OnCreateControl ();
834                         }
835                 }
836
837                 class EnterTest : Button {
838                         protected override void OnEnter (EventArgs e)
839                         {
840                                 on_enter = true;
841                                 base.OnEnter (e);
842                         }
843
844                         public bool on_enter;
845                 }
846
847                 [Test]
848                 public void OnActivateEventHandlingTest1 ()
849                 {
850                         if (RunningOnUnix) {
851                                 Assert.Ignore ("Relies on form.Show() synchronously generating WM_ACTIVATE");
852                         }
853
854                         SwallowOnActivated f = new SwallowOnActivated ();
855
856                         f.ShowInTaskbar = false;
857
858                         EnterTest c = new EnterTest ();
859                         f.Controls.Add (c);
860
861                         f.Show ();
862
863                         Assert.IsTrue (c.on_enter, "1");
864
865                         f.Dispose ();
866                 }
867                 
868 #if NET_2_0
869                 [Test]
870                 public void FormClosingEvents ()
871                 {
872                         // Standard Close
873                         Form f = new Form ();
874                         string events = string.Empty;
875
876                         f.Closing += new CancelEventHandler (delegate (Object obj, CancelEventArgs e) { events += ("Closing;"); });
877                         f.FormClosing += new FormClosingEventHandler (delegate (Object obj, FormClosingEventArgs e) { events += string.Format ("FormClosing [Reason:{0} - Cancel:{1}]", e.CloseReason, e.Cancel); });
878         
879                         f.Show ();
880                         f.Close ();
881                         
882                         Assert.AreEqual ("Closing;FormClosing [Reason:UserClosing - Cancel:False]", events, "A1");                      
883                 }
884
885                 [Test]
886                 public void FormClosingEventsCancel ()
887                 {
888                         // Shows that setting Cancel in Closing flows through to FormClosing
889                         Form f = new Form ();
890                         string events = string.Empty;
891
892                         f.Closing += new CancelEventHandler (delegate (Object obj, CancelEventArgs e) { events += ("Closing;"); e.Cancel = true; });
893                         f.FormClosing += new FormClosingEventHandler (delegate (Object obj, FormClosingEventArgs e) { events += string.Format("FormClosing [Reason:{0} - Cancel:{1}]", e.CloseReason, e.Cancel); e.Cancel = false; });
894
895                         f.Show ();
896                         f.Close ();
897
898                         Assert.AreEqual ("Closing;FormClosing [Reason:UserClosing - Cancel:True]", events, "A1");
899                 }
900
901                 [Test]
902                 public void FormClosedEvents ()
903                 {
904                         // Standard Closed
905                         Form f = new Form ();
906                         string events = string.Empty;
907
908                         f.Closed += new EventHandler (delegate (Object obj, EventArgs e) { events += ("Closed;"); });
909                         f.FormClosed += new FormClosedEventHandler (delegate (Object obj, FormClosedEventArgs e) { events += string.Format ("FormClosed [Reason:{0}]", e.CloseReason); });
910
911                         f.Show ();
912                         f.Close ();
913
914                         Assert.AreEqual ("Closed;FormClosed [Reason:UserClosing]", events, "A1");
915                 }
916
917                 [Test]
918                 public void ShowWithOwner ()
919                 {
920                         Form f = new Form ();
921                         Button b = new Button ();
922                         f.Controls.Add (b);
923
924                         Form f2 = new Form ();
925
926                         f2.Show (f);
927
928                         Assert.AreSame (f, f2.Owner, "A1");
929
930                         f2 = new Form ();
931
932                         f2.Show (b);
933                         Assert.AreSame (f, f2.Owner, "A2");
934
935                         Button b2 = new Button ();
936                         f2 = new Form ();
937
938                         f2.Show (b2);
939                         Assert.AreEqual (null, f2.Owner, "A3");
940
941                         f2 = new Form ();
942                         f2.Show (null);
943                         Assert.AreEqual (null, f2.Owner, "A4");
944                 }
945
946                 [Test]
947                 [ExpectedException (typeof (InvalidOperationException))]
948                 public void ShowWithOwnerIOE ()
949                 {
950                         Form f = new Form ();
951                         f.Show (f);
952                 }
953                 
954                 [Test]  // Bug #79959
955                 [NUnit.Framework.Category ("NotWorking")]
956                 public void BehaviorResizeOnBorderStyleChanged ()
957                 {
958                         // Marked NotWorking because the ClientSize is probably dependent on the WM.
959                         // The values below match .Net to make sure our behavior is the same.
960                         Form f = new Form ();
961                         f.Show ();
962
963                         Assert.AreEqual (new Size (300, 300), f.Size, "A1");
964                         Assert.AreEqual (new Size (292, 266), f.ClientSize, "A2");
965
966                         f.FormBorderStyle = FormBorderStyle.FixedSingle;
967                         Assert.AreEqual (new Size (298, 298), f.Size, "A3");
968                         Assert.AreEqual (new Size (292, 266), f.ClientSize, "A4");
969
970                         f.FormBorderStyle = FormBorderStyle.Sizable;
971                         Assert.AreEqual (new Size (300, 300), f.Size, "A5");
972                         Assert.AreEqual (new Size (292, 266), f.ClientSize, "A6");
973                         
974                         f.Close ();
975                 }
976                 
977                 [Test]  // bug #80574
978                 [NUnit.Framework.Category ("NotWorking")]
979                 public void BehaviorResizeOnBorderStyleChangedNotVisible ()
980                 {
981                         // Marked NotWorking because the ClientSize is probably dependent on the WM.
982                         // The values below match .Net to make sure our behavior is the same.
983                         Form f = new Form ();
984
985                         Assert.AreEqual (new Size (300, 300), f.Size, "A1");
986                         Assert.AreEqual (new Size (292, 266), f.ClientSize, "A2");
987
988                         f.FormBorderStyle = FormBorderStyle.Fixed3D;
989                         Assert.AreEqual (new Size (300, 300), f.Size, "A3");
990                         Assert.AreEqual (new Size (292, 266), f.ClientSize, "A4");
991
992                         f.FormBorderStyle = FormBorderStyle.FixedDialog;
993                         Assert.AreEqual (new Size (300, 300), f.Size, "A5");
994                         Assert.AreEqual (new Size (292, 266), f.ClientSize, "A6");
995
996                         f.FormBorderStyle = FormBorderStyle.FixedSingle;
997                         Assert.AreEqual (new Size (300, 300), f.Size, "A7");
998                         Assert.AreEqual (new Size (292, 266), f.ClientSize, "A8");
999
1000                         f.FormBorderStyle = FormBorderStyle.FixedToolWindow;
1001                         Assert.AreEqual (new Size (300, 300), f.Size, "A9");
1002                         Assert.AreEqual (new Size (292, 266), f.ClientSize, "A0");
1003
1004                         f.FormBorderStyle = FormBorderStyle.None;
1005                         Assert.AreEqual (new Size (300, 300), f.Size, "A11");
1006                         Assert.AreEqual (new Size (292, 266), f.ClientSize, "A12");
1007
1008                         f.FormBorderStyle = FormBorderStyle.SizableToolWindow;
1009                         Assert.AreEqual (new Size (300, 300), f.Size, "A13");
1010                         Assert.AreEqual (new Size (292, 266), f.ClientSize, "A14");
1011
1012                         f.FormBorderStyle = FormBorderStyle.Sizable;
1013                         Assert.AreEqual (new Size (300, 300), f.Size, "A15");
1014                         Assert.AreEqual (new Size (292, 266), f.ClientSize, "A16");
1015                 }
1016 #endif
1017
1018                 private bool RunningOnUnix {
1019                         get {
1020                                 // check for Unix platforms - see FAQ for more details
1021                                 // http://www.mono-project.com/FAQ:_Technical#How_to_detect_the_execution_platform_.3F
1022                                 int platform = (int) Environment.OSVersion.Platform;
1023                                 return ((platform == 4) || (platform == 128));
1024                         }
1025                 }
1026
1027                 private class MockForm : Form
1028                 {
1029                         public bool CloseOnLoad {
1030                                 get { return _closeOnLoad; }
1031                                 set { _closeOnLoad = value; }
1032                         }
1033
1034                         public bool VisibleOnLoad {
1035                                 get { return _visibleOnLoad; }
1036                         }
1037
1038                         protected override void OnLoad(EventArgs e) {
1039                                 base.OnLoad(e);
1040                                 _visibleOnLoad = Visible;
1041                                 if (CloseOnLoad)
1042                                         Close ();
1043                         }
1044
1045                         private bool _closeOnLoad;
1046                         private bool _visibleOnLoad;
1047                 }
1048         }
1049 }