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;
12 using System.Windows.Forms;
14 using System.Reflection;
15 using NUnit.Framework;
17 namespace MonoTests.System.Windows.Forms
23 public void FormPropertyTest ()
25 Form myform = new Form ();
26 myform.Visible = true;
27 myform.Text = "NewForm";
28 myform.Name = "FormTest";
29 Assert.IsNull (myform.AcceptButton, "#1");
30 Assert.IsNull (myform.ActiveMdiChild, "#2");
31 Assert.IsFalse (myform.AutoScale, "#3");
32 Assert.AreEqual (13, myform.AutoScaleBaseSize.Height, "#4");
33 Assert.AreEqual (5, myform.AutoScaleBaseSize.Width, "#5");
34 Assert.IsNull (myform.CancelButton, "#6");
35 Assert.IsTrue (myform.ControlBox, "#9");
36 Assert.IsTrue (myform.DesktopBounds.X > 0, "#10a");
37 Assert.IsTrue (myform.DesktopBounds.Y > 0, "#10b");
38 Assert.AreEqual (300, myform.DesktopBounds.Height, "#10c");
39 Assert.AreEqual (300, myform.DesktopBounds.Width, "#10d");
40 Assert.IsTrue (myform.DesktopLocation.X > 0, "#11a");
41 Assert.IsTrue (myform.DesktopLocation.Y > 0, "#11b");
42 Assert.AreEqual (DialogResult.None, myform.DialogResult, "#12");
43 Assert.AreEqual (FormBorderStyle.Sizable, myform.FormBorderStyle, "#13");
44 Assert.IsFalse (myform.HelpButton, "#14");
45 Assert.AreEqual ("System.Drawing.Icon", myform.Icon.GetType ().ToString (), "#15");
46 Assert.IsFalse (myform.IsMdiChild, "#16");
47 Assert.IsFalse (myform.IsMdiContainer, "#17");
48 Assert.IsFalse (myform.KeyPreview, "#18");
49 Assert.IsTrue (myform.MaximizeBox, "#19");
50 Assert.AreEqual (0, myform.MaximumSize.Height, "#20a");
51 Assert.AreEqual (0, myform.MaximumSize.Width, "#20b");
52 Assert.AreEqual (0, myform.MdiChildren.Length, "#21a");
53 Assert.AreEqual (1, myform.MdiChildren.Rank, "#21b");
54 Assert.IsFalse (myform.MdiChildren.IsSynchronized, "#21c");
55 Assert.IsNull (myform.MdiParent, "#22");
56 Assert.IsNull (myform.Menu, "#23");
57 Assert.IsNull (myform.MergedMenu, "#24");
58 Assert.IsTrue (myform.MinimizeBox, "#25");
59 Assert.AreEqual (0, myform.MinimumSize.Height, "#26a");
60 Assert.AreEqual (0, myform.MinimumSize.Width, "#26b");
61 Assert.IsTrue (myform.MinimumSize.IsEmpty, "#26c");
62 Assert.IsFalse (myform.Modal, "#27");
63 Assert.AreEqual (1, myform.Opacity, "#28");
64 Assert.AreEqual (0, myform.OwnedForms.Length, "#29a");
65 Assert.AreEqual (1, myform.OwnedForms.Rank, "#29b");
66 Assert.IsNull (myform.Owner, "#30");
67 Assert.IsTrue (myform.ShowInTaskbar, "#31");
68 Assert.AreEqual (300, myform.Size.Height, "#32a");
69 Assert.AreEqual (300, myform.Size.Width, "#32b");
70 Assert.AreEqual (SizeGripStyle.Auto, myform.SizeGripStyle, "#33");
71 Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, myform.StartPosition, "#34");
72 Assert.IsTrue (myform.TopLevel, "#35");
73 Assert.IsFalse (myform.TopMost, "#36");
74 Assert.AreEqual (Color.Empty, myform.TransparencyKey, "#37");
75 Assert.AreEqual (FormWindowState.Normal, myform.WindowState, "#38");
80 public void ActivateTest ()
82 Form myform = new Form ();
83 myform.ShowInTaskbar = false;
84 myform.Visible = true;
85 myform.Text = "NewForm";
86 myform.Name = "FormTest";
88 Assert.AreEqual (true, myform.Focus (), "#40");
93 public void AddOwnedFormTest ()
95 Form parent = new Form ();
96 parent.ShowInTaskbar = false;
97 parent.Text = "NewParent";
98 Form ownedForm = new Form ();
99 ownedForm.ShowInTaskbar = false;
100 ownedForm.Text = "Owned Form";
101 parent.AddOwnedForm (ownedForm);
103 Assert.AreEqual ("NewParent", ownedForm.Owner.Text, "#41");
104 ownedForm.Dispose ();
109 public void RemoveOwnedFormTest ()
111 Form myform = new Form ();
112 myform.ShowInTaskbar = false;
113 myform.Text = "NewForm";
114 myform.Name = "FormTest";
115 myform.RemoveOwnedForm (myform);
117 Assert.AreEqual (null, myform.Owner, "#44");
122 public void SetDesktopBoundsTest ()
124 Form myform = new Form ();
125 myform.ShowInTaskbar = false;
126 myform.Visible = true;
127 myform.Text = "NewForm";
128 myform.Name = "FormTest";
129 myform.SetDesktopBounds (10, 10, 200 , 200);
130 Assert.AreEqual (200, myform.DesktopBounds.Height, "#45");
135 public void SetDesktopLocationTest ()
137 Form myform = new Form ();
138 myform.ShowInTaskbar = false;
139 myform.Visible = true;
140 myform.Text = "NewForm";
141 myform.Name = "FormTest";
142 myform.SetDesktopLocation (10, 10);
143 Assert.AreEqual (10, myform.DesktopLocation.X, "#46");
148 public void SetDialogResultOutOfRange ()
150 Form myform = new Form ();
151 myform.ShowInTaskbar = false;
153 myform.DialogResult = (DialogResult) (-1);
155 } catch (InvalidEnumArgumentException) {
159 myform.DialogResult = (DialogResult) ((int) DialogResult.No + 1);
161 } catch (InvalidEnumArgumentException) {
166 void myform_set_dialogresult (object sender, EventArgs e)
168 Form f = (Form)sender;
170 f.DialogResult = DialogResult.OK;
173 void myform_close (object sender, EventArgs e)
175 Form f = (Form)sender;
181 public void SetDialogResult ()
183 Form myform = new Form ();
184 myform.ShowInTaskbar = false;
185 myform.Visible = true;
187 myform.DialogResult = DialogResult.Cancel;
189 Assert.IsTrue (myform.Visible, "A1");
190 Assert.IsFalse (myform.IsDisposed, "A2");
194 Assert.IsFalse (myform.Visible, "A3");
195 Assert.IsTrue (myform.IsDisposed, "A4");
199 myform = new Form ();
200 myform.ShowInTaskbar = false;
201 myform.VisibleChanged += new EventHandler (myform_set_dialogresult);
202 result = myform.ShowDialog ();
204 Assert.AreEqual (result, DialogResult.OK, "A5");
205 Assert.IsFalse (myform.Visible, "A6");
206 Assert.IsFalse (myform.IsDisposed, "A7");
208 myform = new Form ();
209 myform.ShowInTaskbar = false;
210 myform.VisibleChanged += new EventHandler (myform_close);
211 result = myform.ShowDialog ();
213 Assert.AreEqual (result, DialogResult.Cancel, "A8");
214 Assert.IsFalse (myform.Visible, "A9");
215 Assert.IsFalse (myform.IsDisposed, "A10");
219 [ExpectedException (typeof (ObjectDisposedException))]
220 public void AccessDisposedForm ()
222 Form myform = new Form ();
223 myform.ShowInTaskbar = false;
226 myform.Close (); // this should result in the form being disposed
227 myform.Show (); // and this line should result in the ODE being thrown
231 public void FormClose ()
233 Form myform = new Form ();
234 myform.ShowInTaskbar = false;
236 Assert.IsFalse (myform.Visible, "A1");
237 Assert.IsFalse (myform.IsDisposed, "A2");
241 Assert.IsFalse (myform.Visible, "A3");
242 Assert.IsFalse (myform.IsDisposed, "A4");
246 Assert.IsTrue (myform.Visible, "A5");
247 Assert.IsFalse (myform.IsDisposed, "A6");
251 Assert.IsFalse (myform.Visible, "A7");
252 Assert.IsTrue (myform.IsDisposed, "A8");
256 public void FormClose2 ()
258 WMCloseWatcher f = new WMCloseWatcher ();
259 f.ShowInTaskbar = false;
262 Assert.IsFalse (f.Visible, "A1");
264 Assert.AreEqual (0, f.close_count, "A2");
269 Assert.AreEqual (1, f.close_count, "A3");
272 class WMCloseWatcher : Form {
273 public int close_count;
275 protected override void WndProc (ref Message msg) {
276 if (msg.Msg == 0x0010 /* WM_CLOSE */) {
280 base.WndProc (ref msg);