2 // FormTest.cs: Test cases for Form.
5 // Ritvik Mayank (mritvik@novell.com)
7 // (C) 2005 Novell, Inc. (http://www.novell.com)
11 using System.ComponentModel;
13 using System.Reflection;
14 using System.Windows.Forms;
16 using NUnit.Framework;
18 namespace MonoTests.System.Windows.Forms
24 [NUnit.Framework.Category ("NotWorking")]
25 public void FormCreateParamsStyleTest ()
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");
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");
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");
46 using (frm = new Form ()) {
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");
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");
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");
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");
70 using (frm = new Form ()) {
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");
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");
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");
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");
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");
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");
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");
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");
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");
124 using (frm = new Form ()) {
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");
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");
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");
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");
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");
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");
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");
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");
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");
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");
187 public void FormParentedTest ()
189 using (Form frm = new Form ()) {
190 Form frm2 = new Form ();
191 frm2.TopLevel = false;
192 frm.ShowInTaskbar = false;
193 frm2.ShowInTaskbar = false;
197 EventLogger log = new EventLogger (frm);
198 EventLogger log2 = new EventLogger (frm2);
200 frm.Controls.Add (frm2);
202 Assert.IsTrue (log2.EventRaised ("ParentChanged"), "#C1");
203 Assert.IsTrue (log.EventRaised ("ControlAdded"), "#P1");
204 Assert.AreSame (frm, frm2.Parent, "#02");
209 public void FormPropertyTest ()
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");
265 [NUnit.Framework.Category ("NotWorking")]
266 public void ActivateTest ()
268 Form myform = new Form ();
269 myform.ShowInTaskbar = false;
270 myform.Visible = true;
271 myform.Text = "NewForm";
272 myform.Name = "FormTest";
274 Assert.AreEqual (true, myform.Focus (), "#40");
279 public void AddOwnedFormTest ()
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);
289 Assert.AreEqual ("NewParent", ownedForm.Owner.Text, "#41");
290 ownedForm.Dispose ();
295 [NUnit.Framework.Category ("NotWorking")]
296 public void IsHandleCreated ()
298 Form main = new Form ();
300 main.IsMdiContainer = true;
301 main.ShowInTaskbar = false;
302 Assert.IsFalse (main.IsHandleCreated, "#1");
304 Form child = new Form ();
305 child.MdiParent = main;
306 child.WindowState = FormWindowState.Maximized;
307 Assert.IsFalse (main.IsHandleCreated, "#2");
310 Assert.IsFalse (child.IsHandleCreated, "#3");
311 Assert.IsFalse (main.IsHandleCreated, "#4");
314 Assert.IsTrue (child.IsHandleCreated, "#5");
315 Assert.IsTrue (main.IsHandleCreated, "#6");
322 public void RemoveOwnedFormTest ()
324 Form myform = new Form ();
325 myform.ShowInTaskbar = false;
326 myform.Text = "NewForm";
327 myform.Name = "FormTest";
328 myform.RemoveOwnedForm (myform);
330 Assert.AreEqual (null, myform.Owner, "#44");
335 public void SetDesktopBoundsTest ()
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");
348 public void SetDesktopLocationTest ()
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");
361 public void SetDialogResultOutOfRange ()
363 Form myform = new Form ();
364 myform.ShowInTaskbar = false;
366 myform.DialogResult = (DialogResult) (-1);
368 } catch (InvalidEnumArgumentException) {
372 myform.DialogResult = (DialogResult) ((int) DialogResult.No + 1);
374 } catch (InvalidEnumArgumentException) {
379 void myform_set_dialogresult (object sender, EventArgs e)
381 Form f = (Form)sender;
383 f.DialogResult = DialogResult.OK;
386 void myform_close (object sender, EventArgs e)
388 Form f = (Form)sender;
394 public void SetDialogResult ()
396 Form myform = new Form ();
397 myform.ShowInTaskbar = false;
398 myform.Visible = true;
400 myform.DialogResult = DialogResult.Cancel;
402 Assert.IsTrue (myform.Visible, "A1");
403 Assert.IsFalse (myform.IsDisposed, "A2");
407 Assert.IsFalse (myform.Visible, "A3");
408 Assert.IsTrue (myform.IsDisposed, "A4");
412 myform = new Form ();
413 myform.ShowInTaskbar = false;
414 myform.VisibleChanged += new EventHandler (myform_set_dialogresult);
415 result = myform.ShowDialog ();
417 Assert.AreEqual (result, DialogResult.OK, "A5");
418 Assert.IsFalse (myform.Visible, "A6");
419 Assert.IsFalse (myform.IsDisposed, "A7");
421 myform = new Form ();
422 myform.ShowInTaskbar = false;
423 myform.VisibleChanged += new EventHandler (myform_close);
424 result = myform.ShowDialog ();
426 Assert.AreEqual (result, DialogResult.Cancel, "A8");
427 Assert.IsFalse (myform.Visible, "A9");
428 Assert.IsFalse (myform.IsDisposed, "A10");
432 public void ShowDialog_Child ()
434 Form main = new Form ();
435 main.IsMdiContainer = true;
436 Form child = new Form ();
437 child.MdiParent = main;
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");
449 Assert.IsNull (child.Owner, "#5");
455 public void ShowDialog_Disabled ()
457 Form form = new Form ();
458 form.Enabled = false;
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");
470 Assert.IsNull (form.Owner, "#A5");
473 Form main = new Form ();
476 form.Enabled = false;
480 } catch (InvalidOperationException) {
482 Assert.IsNotNull (form.Owner, "#B2");
483 Assert.AreSame (main, form.Owner, "#B3");
489 [NUnit.Framework.Category ("NotWorking")]
490 public void ShowDialog_Owner_Circular ()
492 Form main = new Form ();
493 Form child = new Form ();
496 main.ShowDialog (child);
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");
506 Assert.IsNull (main.Owner, "#6");
512 [NUnit.Framework.Category ("NotWorking")]
513 public void ShowDialog_Owner_Self ()
515 Form form = new Form ();
517 form.ShowDialog (form);
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");
527 Assert.IsNull (form.Owner, "#A7");
530 Form main = new Form ();
534 form.ShowDialog (form);
536 } catch (ArgumentException) {
538 Assert.IsNotNull (form.Owner);
539 Assert.AreSame (main, form.Owner, "#B2");
545 public void ShowDialog_Visible ()
547 Form form = new Form ();
548 form.ShowInTaskbar = false;
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");
561 Assert.IsNull (form.Owner, "#A5");
564 Form main = new Form ();
571 } catch (InvalidOperationException) {
573 Assert.IsNotNull (form.Owner, "#B2");
574 Assert.AreSame (main, form.Owner, "#B3");
580 [NUnit.Framework.Category ("NotWorking")]
581 public void VisibleOnLoad ()
583 MockForm form = new MockForm ();
584 form.CloseOnLoad = true;
585 Application.Run (form);
586 Assert.IsTrue (form.VisibleOnLoad, "#1");
589 form = new MockForm ();
590 form.ShowInTaskbar = false;
592 Assert.IsTrue (form.VisibleOnLoad, "#2");
597 [NUnit.Framework.Category ("NotWorking")]
598 public void Location ()
604 Form formA = new Form ();
605 formA.ShowInTaskbar = false;
606 formA.StartPosition = FormStartPosition.CenterParent;
607 formA.Location = new Point (151, 251);
610 Assert.AreEqual (FormStartPosition.CenterParent, formA.StartPosition, "#A1");
611 Assert.IsFalse (formA.Location.X == 151, "#A2");
612 Assert.IsFalse (formA.Location.Y == 251, "#A3");
614 formA.Location = new Point (311, 221);
616 Assert.AreEqual (FormStartPosition.CenterParent, formA.StartPosition, "#A4");
617 Assert.AreEqual (311, formA.Location.X, "#A5");
618 Assert.AreEqual (221, formA.Location.Y, "#A6");
626 Form formB = new Form ();
627 formB.ShowInTaskbar = false;
628 formB.StartPosition = FormStartPosition.CenterScreen;
629 formB.Location = new Point (151, 251);
632 Assert.AreEqual (FormStartPosition.CenterScreen, formB.StartPosition, "#B1");
633 Assert.IsFalse (formB.Location.X == 151, "#B2");
634 Assert.IsFalse (formB.Location.Y == 251, "#B3");
636 formB.Location = new Point (311, 221);
638 Assert.AreEqual (FormStartPosition.CenterScreen, formB.StartPosition, "#B4");
639 Assert.AreEqual (311, formB.Location.X, "#B5");
640 Assert.AreEqual (221, formB.Location.Y, "#B6");
648 Form formC = new Form ();
649 formC.ShowInTaskbar = false;
650 formC.StartPosition = FormStartPosition.Manual;
651 formC.Location = new Point (151, 251);
654 Assert.AreEqual (FormStartPosition.Manual, formC.StartPosition, "#C1");
655 Assert.AreEqual (151, formC.Location.X, "#C2");
656 Assert.AreEqual (251, formC.Location.Y, "#C3");
658 formC.Location = new Point (311, 221);
660 Assert.AreEqual (FormStartPosition.Manual, formC.StartPosition, "#C4");
661 Assert.AreEqual (311, formC.Location.X, "#C5");
662 Assert.AreEqual (221, formC.Location.Y, "#C6");
667 // WindowsDefaultBounds
670 Form formD = new Form ();
671 formD.ShowInTaskbar = false;
672 formD.StartPosition = FormStartPosition.WindowsDefaultBounds;
673 formD.Location = new Point (151, 251);
676 Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, formD.StartPosition, "#D1");
677 Assert.IsFalse (formD.Location.X == 151, "#D2");
678 Assert.IsFalse (formD.Location.Y == 251, "#D3");
680 formD.Location = new Point (311, 221);
682 Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, formD.StartPosition, "#D4");
683 Assert.AreEqual (311, formD.Location.X, "#D5");
684 Assert.AreEqual (221, formD.Location.Y, "#D6");
689 // WindowsDefaultLocation
692 Form formE = new Form ();
693 formE.ShowInTaskbar = false;
694 formE.Location = new Point (151, 251);
697 Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, formE.StartPosition, "#E1");
698 Assert.IsFalse (formE.Location.X == 151, "#E2");
699 Assert.IsFalse (formE.Location.Y == 251, "#E3");
701 formE.Location = new Point (311, 221);
703 Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, formE.StartPosition, "#E4");
704 Assert.AreEqual (311, formE.Location.X, "#E5");
705 Assert.AreEqual (221, formE.Location.Y, "#E6");
711 public void DisposeOwnerTest ()
713 Form f1 = new Form ();
714 Form f2 = new Form ();
720 Assert.IsNull (f2.Owner, "1");
721 Assert.AreEqual (0, f1.OwnedForms.Length, "2");
725 [ExpectedException (typeof (ObjectDisposedException))]
726 public void AccessDisposedForm ()
728 Form myform = new Form ();
729 myform.ShowInTaskbar = false;
732 myform.Close (); // this should result in the form being disposed
733 myform.Show (); // and this line should result in the ODE being thrown
738 public void DoDestroyHandle ()
742 public void DoRecreateHandle ()
748 int handle_destroyed_count;
749 void handle_destroyed (object sender, EventArgs e)
751 handle_destroyed_count++;
755 public void DestroyHandleTest ()
757 handle_destroyed_count = 0;
759 MyForm f1 = new MyForm ();
760 f1.HandleDestroyed += new EventHandler (handle_destroyed);
762 f1.DoDestroyHandle ();
763 Assert.AreEqual (1, handle_destroyed_count, "1");
766 f1.HandleDestroyed += new EventHandler (handle_destroyed);
768 f1.DoRecreateHandle ();
769 Assert.AreEqual (2, handle_destroyed_count, "2");
773 public void FormClose ()
775 Form myform = new Form ();
776 myform.ShowInTaskbar = false;
778 Assert.IsFalse (myform.Visible, "A1");
779 Assert.IsFalse (myform.IsDisposed, "A2");
783 Assert.IsFalse (myform.Visible, "A3");
784 Assert.IsFalse (myform.IsDisposed, "A4");
788 Assert.IsTrue (myform.Visible, "A5");
789 Assert.IsFalse (myform.IsDisposed, "A6");
793 Assert.IsFalse (myform.Visible, "A7");
794 Assert.IsTrue (myform.IsDisposed, "A8");
798 public void FormClose2 ()
800 WMCloseWatcher f = new WMCloseWatcher ();
801 f.ShowInTaskbar = false;
804 Assert.IsFalse (f.Visible, "A1");
806 Assert.AreEqual (0, f.close_count, "A2");
811 Assert.AreEqual (1, f.close_count, "A3");
814 class WMCloseWatcher : Form {
815 public int close_count;
817 protected override void WndProc (ref Message msg) {
818 if (msg.Msg == 0x0010 /* WM_CLOSE */) {
822 base.WndProc (ref msg);
826 class SwallowOnActivated : Form {
827 protected override void OnActivated (EventArgs e)
832 protected override void OnCreateControl () {
833 base.OnCreateControl ();
837 class EnterTest : Button {
838 protected override void OnEnter (EventArgs e)
844 public bool on_enter;
848 public void OnActivateEventHandlingTest1 ()
851 Assert.Ignore ("Relies on form.Show() synchronously generating WM_ACTIVATE");
854 SwallowOnActivated f = new SwallowOnActivated ();
856 f.ShowInTaskbar = false;
858 EnterTest c = new EnterTest ();
863 Assert.IsTrue (c.on_enter, "1");
870 public void FormClosingEvents ()
873 Form f = new Form ();
874 string events = string.Empty;
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); });
882 Assert.AreEqual ("Closing;FormClosing [Reason:UserClosing - Cancel:False]", events, "A1");
886 public void FormClosingEventsCancel ()
888 // Shows that setting Cancel in Closing flows through to FormClosing
889 Form f = new Form ();
890 string events = string.Empty;
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; });
898 Assert.AreEqual ("Closing;FormClosing [Reason:UserClosing - Cancel:True]", events, "A1");
902 public void FormClosedEvents ()
905 Form f = new Form ();
906 string events = string.Empty;
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); });
914 Assert.AreEqual ("Closed;FormClosed [Reason:UserClosing]", events, "A1");
918 public void ShowWithOwner ()
920 Form f = new Form ();
921 Button b = new Button ();
924 Form f2 = new Form ();
928 Assert.AreSame (f, f2.Owner, "A1");
933 Assert.AreSame (f, f2.Owner, "A2");
935 Button b2 = new Button ();
939 Assert.AreEqual (null, f2.Owner, "A3");
943 Assert.AreEqual (null, f2.Owner, "A4");
947 [ExpectedException (typeof (InvalidOperationException))]
948 public void ShowWithOwnerIOE ()
950 Form f = new Form ();
955 [NUnit.Framework.Category ("NotWorking")]
956 public void BehaviorResizeOnBorderStyleChanged ()
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 ();
963 Assert.AreEqual (new Size (300, 300), f.Size, "A1");
964 Assert.AreEqual (new Size (292, 266), f.ClientSize, "A2");
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");
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");
978 [NUnit.Framework.Category ("NotWorking")]
979 public void BehaviorResizeOnBorderStyleChangedNotVisible ()
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 ();
985 Assert.AreEqual (new Size (300, 300), f.Size, "A1");
986 Assert.AreEqual (new Size (292, 266), f.ClientSize, "A2");
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");
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");
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");
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");
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");
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");
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");
1018 private bool RunningOnUnix {
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));
1027 private class MockForm : Form
1029 public bool CloseOnLoad {
1030 get { return _closeOnLoad; }
1031 set { _closeOnLoad = value; }
1034 public bool VisibleOnLoad {
1035 get { return _visibleOnLoad; }
1038 protected override void OnLoad(EventArgs e) {
1040 _visibleOnLoad = Visible;
1045 private bool _closeOnLoad;
1046 private bool _visibleOnLoad;