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 public void FormPropertyTest ()
26 Form myform
= new Form ();
27 myform
.Visible
= true;
28 myform
.Text
= "NewForm";
29 myform
.Name
= "FormTest";
30 Assert
.IsNull (myform
.AcceptButton
, "#1");
31 Assert
.IsNull (myform
.ActiveMdiChild
, "#2");
32 Assert
.IsFalse (myform
.AutoScale
, "#3");
33 Assert
.IsNull (myform
.CancelButton
, "#6");
34 Assert
.IsTrue (myform
.ControlBox
, "#9");
35 Assert
.IsTrue (myform
.DesktopBounds
.X
> 0, "#10a");
36 Assert
.IsTrue (myform
.DesktopBounds
.Y
> 0, "#10b");
37 Assert
.AreEqual (300, myform
.DesktopBounds
.Height
, "#10c");
38 Assert
.AreEqual (300, myform
.DesktopBounds
.Width
, "#10d");
39 Assert
.IsTrue (myform
.DesktopLocation
.X
> 0, "#11a");
40 Assert
.IsTrue (myform
.DesktopLocation
.Y
> 0, "#11b");
41 Assert
.AreEqual (DialogResult
.None
, myform
.DialogResult
, "#12");
42 Assert
.AreEqual (FormBorderStyle
.Sizable
, myform
.FormBorderStyle
, "#13");
43 Assert
.IsFalse (myform
.HelpButton
, "#14");
44 Assert
.AreEqual ("System.Drawing.Icon", myform
.Icon
.GetType ().ToString (), "#15");
45 Assert
.IsFalse (myform
.IsMdiChild
, "#16");
46 Assert
.IsFalse (myform
.IsMdiContainer
, "#17");
47 Assert
.IsFalse (myform
.KeyPreview
, "#18");
48 Assert
.IsTrue (myform
.MaximizeBox
, "#19");
49 Assert
.AreEqual (0, myform
.MaximumSize
.Height
, "#20a");
50 Assert
.AreEqual (0, myform
.MaximumSize
.Width
, "#20b");
51 Assert
.AreEqual (0, myform
.MdiChildren
.Length
, "#21a");
52 Assert
.AreEqual (1, myform
.MdiChildren
.Rank
, "#21b");
53 Assert
.IsFalse (myform
.MdiChildren
.IsSynchronized
, "#21c");
54 Assert
.IsNull (myform
.MdiParent
, "#22");
55 Assert
.IsNull (myform
.Menu
, "#23");
56 Assert
.IsNull (myform
.MergedMenu
, "#24");
57 Assert
.IsTrue (myform
.MinimizeBox
, "#25");
58 Assert
.AreEqual (0, myform
.MinimumSize
.Height
, "#26a");
59 Assert
.AreEqual (0, myform
.MinimumSize
.Width
, "#26b");
60 Assert
.IsTrue (myform
.MinimumSize
.IsEmpty
, "#26c");
61 Assert
.IsFalse (myform
.Modal
, "#27");
62 Assert
.AreEqual (1, myform
.Opacity
, "#28");
63 Assert
.AreEqual (0, myform
.OwnedForms
.Length
, "#29a");
64 Assert
.AreEqual (1, myform
.OwnedForms
.Rank
, "#29b");
65 Assert
.IsNull (myform
.Owner
, "#30");
66 Assert
.IsTrue (myform
.ShowInTaskbar
, "#31");
67 Assert
.AreEqual (300, myform
.Size
.Height
, "#32a");
68 Assert
.AreEqual (300, myform
.Size
.Width
, "#32b");
69 Assert
.AreEqual (SizeGripStyle
.Auto
, myform
.SizeGripStyle
, "#33");
70 Assert
.AreEqual (FormStartPosition
.WindowsDefaultLocation
, myform
.StartPosition
, "#34");
71 Assert
.IsTrue (myform
.TopLevel
, "#35");
72 Assert
.IsFalse (myform
.TopMost
, "#36");
73 Assert
.AreEqual (Color
.Empty
, myform
.TransparencyKey
, "#37");
74 Assert
.AreEqual (FormWindowState
.Normal
, myform
.WindowState
, "#38");
75 Assert
.AreEqual (ImeMode
.NoControl
, myform
.ImeMode
, "#39");
80 [NUnit
.Framework
.Category ("NotWorking")]
81 public void ActivateTest ()
83 Form myform
= new Form ();
84 myform
.ShowInTaskbar
= false;
85 myform
.Visible
= true;
86 myform
.Text
= "NewForm";
87 myform
.Name
= "FormTest";
89 Assert
.AreEqual (true, myform
.Focus (), "#40");
94 public void AddOwnedFormTest ()
96 Form parent
= new Form ();
97 parent
.ShowInTaskbar
= false;
98 parent
.Text
= "NewParent";
99 Form ownedForm
= new Form ();
100 ownedForm
.ShowInTaskbar
= false;
101 ownedForm
.Text
= "Owned Form";
102 parent
.AddOwnedForm (ownedForm
);
104 Assert
.AreEqual ("NewParent", ownedForm
.Owner
.Text
, "#41");
105 ownedForm
.Dispose ();
110 [NUnit
.Framework
.Category ("NotWorking")]
111 public void IsHandleCreated ()
113 Form main
= new Form ();
115 main
.IsMdiContainer
= true;
116 main
.ShowInTaskbar
= false;
117 Assert
.IsFalse (main
.IsHandleCreated
, "#1");
119 Form child
= new Form ();
120 child
.MdiParent
= main
;
121 child
.WindowState
= FormWindowState
.Maximized
;
122 Assert
.IsFalse (main
.IsHandleCreated
, "#2");
125 Assert
.IsFalse (child
.IsHandleCreated
, "#3");
126 Assert
.IsFalse (main
.IsHandleCreated
, "#4");
129 Assert
.IsTrue (child
.IsHandleCreated
, "#5");
130 Assert
.IsTrue (main
.IsHandleCreated
, "#6");
137 public void RemoveOwnedFormTest ()
139 Form myform
= new Form ();
140 myform
.ShowInTaskbar
= false;
141 myform
.Text
= "NewForm";
142 myform
.Name
= "FormTest";
143 myform
.RemoveOwnedForm (myform
);
145 Assert
.AreEqual (null, myform
.Owner
, "#44");
150 public void SetDesktopBoundsTest ()
152 Form myform
= new Form ();
153 myform
.ShowInTaskbar
= false;
154 myform
.Visible
= true;
155 myform
.Text
= "NewForm";
156 myform
.Name
= "FormTest";
157 myform
.SetDesktopBounds (10, 10, 200 , 200);
158 Assert
.AreEqual (200, myform
.DesktopBounds
.Height
, "#45");
163 public void SetDesktopLocationTest ()
165 Form myform
= new Form ();
166 myform
.ShowInTaskbar
= false;
167 myform
.Visible
= true;
168 myform
.Text
= "NewForm";
169 myform
.Name
= "FormTest";
170 myform
.SetDesktopLocation (10, 10);
171 Assert
.AreEqual (10, myform
.DesktopLocation
.X
, "#46");
176 public void SetDialogResultOutOfRange ()
178 Form myform
= new Form ();
179 myform
.ShowInTaskbar
= false;
181 myform
.DialogResult
= (DialogResult
) (-1);
183 } catch (InvalidEnumArgumentException
) {
187 myform
.DialogResult
= (DialogResult
) ((int) DialogResult
.No
+ 1);
189 } catch (InvalidEnumArgumentException
) {
194 void myform_set_dialogresult (object sender
, EventArgs e
)
196 Form f
= (Form
)sender
;
198 f
.DialogResult
= DialogResult
.OK
;
201 void myform_close (object sender
, EventArgs e
)
203 Form f
= (Form
)sender
;
209 public void SetDialogResult ()
211 Form myform
= new Form ();
212 myform
.ShowInTaskbar
= false;
213 myform
.Visible
= true;
215 myform
.DialogResult
= DialogResult
.Cancel
;
217 Assert
.IsTrue (myform
.Visible
, "A1");
218 Assert
.IsFalse (myform
.IsDisposed
, "A2");
222 Assert
.IsFalse (myform
.Visible
, "A3");
223 Assert
.IsTrue (myform
.IsDisposed
, "A4");
227 myform
= new Form ();
228 myform
.ShowInTaskbar
= false;
229 myform
.VisibleChanged
+= new EventHandler (myform_set_dialogresult
);
230 result
= myform
.ShowDialog ();
232 Assert
.AreEqual (result
, DialogResult
.OK
, "A5");
233 Assert
.IsFalse (myform
.Visible
, "A6");
234 Assert
.IsFalse (myform
.IsDisposed
, "A7");
236 myform
= new Form ();
237 myform
.ShowInTaskbar
= false;
238 myform
.VisibleChanged
+= new EventHandler (myform_close
);
239 result
= myform
.ShowDialog ();
241 Assert
.AreEqual (result
, DialogResult
.Cancel
, "A8");
242 Assert
.IsFalse (myform
.Visible
, "A9");
243 Assert
.IsFalse (myform
.IsDisposed
, "A10");
247 [NUnit
.Framework
.Category ("NotWorking")]
248 public void Location ()
254 Form formA
= new Form ();
255 formA
.ShowInTaskbar
= false;
256 formA
.StartPosition
= FormStartPosition
.CenterParent
;
257 formA
.Location
= new Point (151, 251);
260 Assert
.AreEqual (FormStartPosition
.CenterParent
, formA
.StartPosition
, "#A1");
261 Assert
.IsFalse (formA
.Location
.X
== 151, "#A2");
262 Assert
.IsFalse (formA
.Location
.Y
== 251, "#A3");
264 formA
.Location
= new Point (311, 221);
266 Assert
.AreEqual (FormStartPosition
.CenterParent
, formA
.StartPosition
, "#A4");
267 Assert
.AreEqual (311, formA
.Location
.X
, "#A5");
268 Assert
.AreEqual (221, formA
.Location
.Y
, "#A6");
276 Form formB
= new Form ();
277 formB
.ShowInTaskbar
= false;
278 formB
.StartPosition
= FormStartPosition
.CenterScreen
;
279 formB
.Location
= new Point (151, 251);
282 Assert
.AreEqual (FormStartPosition
.CenterScreen
, formB
.StartPosition
, "#B1");
283 Assert
.IsFalse (formB
.Location
.X
== 151, "#B2");
284 Assert
.IsFalse (formB
.Location
.Y
== 251, "#B3");
286 formB
.Location
= new Point (311, 221);
288 Assert
.AreEqual (FormStartPosition
.CenterScreen
, formB
.StartPosition
, "#B4");
289 Assert
.AreEqual (311, formB
.Location
.X
, "#B5");
290 Assert
.AreEqual (221, formB
.Location
.Y
, "#B6");
298 Form formC
= new Form ();
299 formC
.ShowInTaskbar
= false;
300 formC
.StartPosition
= FormStartPosition
.Manual
;
301 formC
.Location
= new Point (151, 251);
304 Assert
.AreEqual (FormStartPosition
.Manual
, formC
.StartPosition
, "#C1");
305 Assert
.AreEqual (151, formC
.Location
.X
, "#C2");
306 Assert
.AreEqual (251, formC
.Location
.Y
, "#C3");
308 formC
.Location
= new Point (311, 221);
310 Assert
.AreEqual (FormStartPosition
.Manual
, formC
.StartPosition
, "#C4");
311 Assert
.AreEqual (311, formC
.Location
.X
, "#C5");
312 Assert
.AreEqual (221, formC
.Location
.Y
, "#C6");
317 // WindowsDefaultBounds
320 Form formD
= new Form ();
321 formD
.ShowInTaskbar
= false;
322 formD
.StartPosition
= FormStartPosition
.WindowsDefaultBounds
;
323 formD
.Location
= new Point (151, 251);
326 Assert
.AreEqual (FormStartPosition
.WindowsDefaultBounds
, formD
.StartPosition
, "#D1");
327 Assert
.IsFalse (formD
.Location
.X
== 151, "#D2");
328 Assert
.IsFalse (formD
.Location
.Y
== 251, "#D3");
330 formD
.Location
= new Point (311, 221);
332 Assert
.AreEqual (FormStartPosition
.WindowsDefaultBounds
, formD
.StartPosition
, "#D4");
333 Assert
.AreEqual (311, formD
.Location
.X
, "#D5");
334 Assert
.AreEqual (221, formD
.Location
.Y
, "#D6");
339 // WindowsDefaultLocation
342 Form formE
= new Form ();
343 formE
.ShowInTaskbar
= false;
344 formE
.Location
= new Point (151, 251);
347 Assert
.AreEqual (FormStartPosition
.WindowsDefaultLocation
, formE
.StartPosition
, "#E1");
348 Assert
.IsFalse (formE
.Location
.X
== 151, "#E2");
349 Assert
.IsFalse (formE
.Location
.Y
== 251, "#E3");
351 formE
.Location
= new Point (311, 221);
353 Assert
.AreEqual (FormStartPosition
.WindowsDefaultLocation
, formE
.StartPosition
, "#E4");
354 Assert
.AreEqual (311, formE
.Location
.X
, "#E5");
355 Assert
.AreEqual (221, formE
.Location
.Y
, "#E6");
361 public void DisposeOwnerTest ()
363 Form f1
= new Form ();
364 Form f2
= new Form ();
370 Assert
.IsNull (f2
.Owner
, "1");
371 Assert
.AreEqual (0, f1
.OwnedForms
.Length
, "2");
375 [ExpectedException (typeof (ObjectDisposedException
))]
376 public void AccessDisposedForm ()
378 Form myform
= new Form ();
379 myform
.ShowInTaskbar
= false;
382 myform
.Close (); // this should result in the form being disposed
383 myform
.Show (); // and this line should result in the ODE being thrown
388 public void DoDestroyHandle ()
392 public void DoRecreateHandle ()
398 int handle_destroyed_count
;
399 void handle_destroyed (object sender
, EventArgs e
)
401 handle_destroyed_count
++;
405 public void DestroyHandleTest ()
407 handle_destroyed_count
= 0;
409 MyForm f1
= new MyForm ();
410 f1
.HandleDestroyed
+= new EventHandler (handle_destroyed
);
412 f1
.DoDestroyHandle ();
413 Assert
.AreEqual (1, handle_destroyed_count
, "1");
416 f1
.HandleDestroyed
+= new EventHandler (handle_destroyed
);
418 f1
.DoRecreateHandle ();
419 Assert
.AreEqual (2, handle_destroyed_count
, "2");
423 public void FormClose ()
425 Form myform
= new Form ();
426 myform
.ShowInTaskbar
= false;
428 Assert
.IsFalse (myform
.Visible
, "A1");
429 Assert
.IsFalse (myform
.IsDisposed
, "A2");
433 Assert
.IsFalse (myform
.Visible
, "A3");
434 Assert
.IsFalse (myform
.IsDisposed
, "A4");
438 Assert
.IsTrue (myform
.Visible
, "A5");
439 Assert
.IsFalse (myform
.IsDisposed
, "A6");
443 Assert
.IsFalse (myform
.Visible
, "A7");
444 Assert
.IsTrue (myform
.IsDisposed
, "A8");
448 public void FormClose2 ()
450 WMCloseWatcher f
= new WMCloseWatcher ();
451 f
.ShowInTaskbar
= false;
454 Assert
.IsFalse (f
.Visible
, "A1");
456 Assert
.AreEqual (0, f
.close_count
, "A2");
461 Assert
.AreEqual (1, f
.close_count
, "A3");
464 class WMCloseWatcher
: Form
{
465 public int close_count
;
467 protected override void WndProc (ref Message msg
) {
468 if (msg
.Msg
== 0x0010 /* WM_CLOSE */) {
472 base.WndProc (ref msg
);
478 public void FormClosingEvents ()
481 Form f
= new Form ();
482 string events
= string.Empty
;
484 f
.Closing
+= new CancelEventHandler (delegate (Object obj
, CancelEventArgs e
) { events += ("Closing;"); }
);
485 f
.FormClosing
+= new FormClosingEventHandler (delegate (Object obj
, FormClosingEventArgs e
) { events += string.Format ("FormClosing [Reason:{0}
- Cancel
:{1}
]", e.CloseReason, e.Cancel); });
490 Assert.AreEqual ("Closing
;FormClosing
[Reason
:UserClosing
- Cancel
:False
]", events, "A1
");
494 public void FormClosingEventsCancel ()
496 // Shows that setting Cancel in Closing flows through to FormClosing
497 Form f = new Form ();
498 string events = string.Empty;
500 f.Closing += new CancelEventHandler (delegate (Object obj, CancelEventArgs e) { events += ("Closing;"); e.Cancel = true; });
501 f.FormClosing += new FormClosingEventHandler (delegate (Object obj, FormClosingEventArgs e) { events += string.Format("FormClosing [Reason:{0} - Cancel:{1}]", e
.CloseReason
, e
.Cancel
); e
.Cancel
= false; });
506 Assert
.AreEqual ("Closing;FormClosing [Reason:UserClosing - Cancel:True]", events
, "A1");