namespace MonoTests.System.Windows.Forms
{
[TestFixture]
- public class FormTest
+ public class FormTest : TestHelper
{
[Test]
public void AcceptButton ()
f.ShowDialog ();
Assert.AreEqual ("VisibleChanged", f.Reason, "#B0");
- Assert.AreEqual (1, log.CountEvents ("Closing"), "#B1");
#if NET_2_0
+ Assert.AreEqual (1, log.CountEvents ("Closing"), "#B1");
Assert.AreEqual (1, log.CountEvents ("FormClosing"), "#B2");
#endif
Assert.AreEqual (1, log.CountEvents ("HandleDestroyed"), "#B3");
- Assert.AreEqual (1, log.CountEvents ("Closed"), "#B4");
#if NET_2_0
+ Assert.AreEqual (1, log.CountEvents ("Closed"), "#B4");
Assert.AreEqual (1, log.CountEvents ("FormClosed"), "#B5");
#endif
Assert.AreEqual (0, log.CountEvents ("Disposed"), "#B6");
}
}
+ [Test]
+ public void UnparentForm ()
+ {
+ Form f1 = new Form ();
+ f1.Show ();
+
+ Form f2 = new Form ();
+ f2.TopLevel = false;
+ f2.Parent = f1;
+ Assert.AreSame (f1, f2.Parent, "#1");
+ f2.Show ();
+ f2.Parent = null;
+ Assert.IsNull (f2.Parent, "#2");
+ }
+
[Test] // bug #80791
public void ClientSizeTest ()
{
Assert.IsFalse (myform.IsDisposed, "A2");
myform.Close ();
-
- Assert.IsFalse (myform.Visible, "A3");
- Assert.IsFalse (myform.IsDisposed, "A4");
+#if NET_2_0
+ Assert.IsTrue (myform.IsDisposed, "A3");
+#else
+ Assert.IsFalse (myform.Visible, "A4");
+ Assert.IsFalse (myform.IsDisposed, "A5");
myform.Show ();
- Assert.IsTrue (myform.Visible, "A5");
- Assert.IsFalse (myform.IsDisposed, "A6");
+ Assert.IsTrue (myform.Visible, "A6");
+ Assert.IsFalse (myform.IsDisposed, "A7");
myform.Close ();
- Assert.IsFalse (myform.Visible, "A7");
- Assert.IsTrue (myform.IsDisposed, "A8");
+ Assert.IsFalse (myform.Visible, "A8");
+ Assert.IsTrue (myform.IsDisposed, "A9");
+#endif
}
[Test]
Assert.IsFalse (f.Visible, "A1");
f.Close ();
Assert.AreEqual (0, f.close_count, "A2");
-
-
+#if NET_2_0
+ Assert.IsTrue (f.IsDisposed, "A3");
+#else
f.Show ();
f.Close ();
- Assert.AreEqual (1, f.close_count, "A3");
+ Assert.AreEqual (1, f.close_count, "A4");
+#endif
}
class WMCloseWatcher : Form {
[Test]
public void OnActivateEventHandlingTest1 ()
{
- if (TestHelper.RunningOnUnix) {
- Assert.Ignore ("Relies on form.Show() synchronously generating WM_ACTIVATE");
- }
+// if (TestHelper.RunningOnUnix) {
+// Assert.Ignore ("Relies on form.Show() synchronously generating WM_ACTIVATE");
+// }
SwallowOnActivated f = new SwallowOnActivated ();
Assert.AreEqual (new Size (292, 266), f.ClientSize, "A4");
}
#endif
+
+ [Test] // bug #438866
+ public void MinMaxSize ()
+ {
+ Form f = new Form ();
+
+ f.MinimumSize = new Size (200, 200);
+ f.MaximumSize = new Size (150, 150);
+
+ Assert.AreEqual (new Size (150, 150), f.MinimumSize, "A1");
+ Assert.AreEqual (new Size (150, 150), f.MaximumSize, "A2");
+
+ f.MinimumSize = new Size (200, 200);
+
+ Assert.AreEqual (new Size (200, 200), f.MinimumSize, "A3");
+ Assert.AreEqual (new Size (200, 200), f.MaximumSize, "A4");
+
+ f.Dispose ();
+ }
+
+ [Test]
+ public void MinSizeIssue ()
+ {
+ Form f = new Form ();
+
+ f.MinimumSize = new Size (100, 100);
+
+ f.Show ();
+
+ Assert.AreEqual (new Size (300, 300), f.Size, "A1");
+
+ f.Dispose ();
+ }
[Test] // Bug #81582
[Category ("NotWorking")]
}
}
- [Category ("NotWorking")]
- [Test]
+ [Test] // bug #339641
public void ChildFocused ()
{
+// if (TestHelper.RunningOnUnix) {
+// Assert.Ignore ("Relies on form.Show() synchronously generating WM_ACTIVATE");
+// }
using (Form f = new TimeBombedForm ()) {
TreeView tv = new TreeView ();
EventLogger log = new EventLogger (tv);
tv.GotFocus += new EventHandler (tv_GotFocus);
f.Activated += new EventHandler (f_Activated);
f.Controls.Add (tv);
- //Console.WriteLine ("****************** STARTING ************************");
f.Show ();
- //Console.WriteLine ("****************** ENDED ************************");
-
- //Console.WriteLine (log.EventsJoined ());
Assert.IsTrue (log.EventRaised ("GotFocus"), "#01");
}
}
//Console.WriteLine (Environment.StackTrace);
}
- [Test] // Bug #80773
+ [Test] // bug #80773
public void DontSetOwnerOnShowDialogException ()
{
Form f = new Form ();
}
}
#endif
+ [Test]
+ public void Bug325436 ()
+ {
+ Form f = new Form ();
+ f.ShowInTaskbar = false;
+ f.ClientSize = new Size (320, 40);
+ f.ControlBox = false;
+ f.FormBorderStyle = FormBorderStyle.None;
+ f.MaximizeBox = false;
+ f.MinimizeBox = false;
+
+ f.Show ();
+ Assert.AreEqual (new Size (320, 40), f.ClientSize, "A1");
+ f.Dispose ();
+ f = new Form ();
+ f.ShowInTaskbar = false;
+ f.ControlBox = false;
+ f.FormBorderStyle = FormBorderStyle.None;
+ f.MaximizeBox = false;
+ f.MinimizeBox = false;
+ f.ClientSize = new Size(320, 40);
+
+ f.Show ();
+ Assert.AreEqual (new Size (320, 40), f.ClientSize, "A2");
+ f.Dispose ();
+ }
+
+#if NET_2_0
+ #region PreferredSize
+ [Test]
+ public void PreferredSize ()
+ {
+ PreferredSizeForm form = new PreferredSizeForm ();
+ form.AutoSize = true;
+ Control control = new Control ();
+ form.Controls.Add (control);
+ control.Size = new Size (500, 500);
+ form.Test ();
+ form.Controls.Clear ();
+ form.Test2 ();
+
+ }
+
+ private class PreferredSizeForm : Form
+ {
+ public void Test ()
+ {
+ Assert.AreEqual (SizeFromClientSize (new Size (503, 503)), PreferredSize, "1");
+ }
+
+ public void Test2 ()
+ {
+ Assert.AreEqual (SizeFromClientSize (new Size (0, 0)), PreferredSize, "1");
+ }
+ }
+ #endregion
+#endif
private class MockForm : Form
{
public bool CloseOnLoad {
private bool _isDefault;
private DialogResult _dialogResult = DialogResult.None;
}
+
+#if NET_2_0
+ [Test]
+ public void RestoreBounds ()
+ {
+ Form f = new Form ();
+ f.Show ();
+
+ Assert.AreEqual (new Size (300, 300), f.RestoreBounds.Size, "A1");
+
+ // Move the form
+ f.Location = new Point (0, 0);
+ Assert.AreEqual (new Rectangle (0, 0, 300, 300), f.RestoreBounds, "A2");
+
+ // Resize the form
+ f.Size = new Size (250, 250);
+ Assert.AreEqual (new Rectangle (0, 0, 250, 250), f.RestoreBounds, "A3");
+
+ // Minimize the form
+ f.WindowState = FormWindowState.Minimized;
+ Assert.AreEqual (new Rectangle (0, 0, 250, 250), f.RestoreBounds, "A4");
+
+ // Move the form (while minimized)
+ f.Location = new Point (10, 10);
+ Assert.AreEqual (new Rectangle (10, 10, 250, 250), f.RestoreBounds, "A5");
+
+ // Resize the form (while minimized)
+ f.Size = new Size (275, 275);
+ Assert.AreEqual (new Rectangle (10, 10, 275, 275), f.RestoreBounds, "A6");
+
+ // Maximize the form
+ f.WindowState = FormWindowState.Maximized;
+ Assert.AreEqual (new Rectangle (10, 10, 275, 275), f.RestoreBounds, "A7");
+
+ // Move the form (while maximized)
+ f.Location = new Point (20, 20);
+ Assert.AreEqual (new Rectangle (20, 20, 275, 275), f.RestoreBounds, "A8");
+
+ // Resize the form (while maximized)
+ f.Size = new Size (285, 285);
+ Assert.AreEqual (new Rectangle (20, 20, 285, 285), f.RestoreBounds, "A9");
+
+ f.Dispose ();
+ }
+
+ [Test] // Bug 353827
+ public void AutoScaleModeTest ()
+ {
+ Form f = new Form ();
+
+ // AutoScale starts off true
+ Assert.AreEqual (true, f.AutoScale, "A1");
+
+ // Setting AutoScaleMode turns AutoScale off
+ f.AutoScaleMode = AutoScaleMode.Font;
+ Assert.AreEqual (false, f.AutoScale, "A2");
+ Assert.AreEqual (AutoScaleMode.Font, f.AutoScaleMode, "A3");
+
+ // Changing Font resets AutoScaleBaseSize..
+ f.Font = new Font ("Arial", 10);
+ Assert.AreEqual (RoundSizeF (Form.GetAutoScaleSize (f.Font)), f.AutoScaleBaseSize, "A4");
+
+ f.Font = new Font ("Arial", 12);
+ Assert.AreEqual (RoundSizeF (Form.GetAutoScaleSize (f.Font)), f.AutoScaleBaseSize, "A5");
+
+ // ..Until AutoScaleBaseSize is explicitly set
+ f.AutoScaleBaseSize = new Size (5, 13);
+ Assert.AreEqual (new Size (5, 13), f.AutoScaleBaseSize, "A6");
+
+ f.Font = new Font ("Arial", 14F);
+ Assert.IsTrue (RoundSizeF (Form.GetAutoScaleSize (f.Font)) != f.AutoScaleBaseSize, "A5");
+
+ f.Dispose ();
+ }
+
+ private Size RoundSizeF (SizeF sizef)
+ {
+ return new Size ((int)Math.Round (sizef.Width), (int)Math.Round (sizef.Height));
+ }
+
+ [Test] // Bug 354669
+ public void AutoScaleDetails ()
+ {
+ ProtectedForm f = new ProtectedForm ();
+ f.Show ();
+
+ f.SuspendLayout ();
+
+ // First AutoScaleMode shouldn't reset AutoScaleDimensions
+ f.AutoScaleDimensions = new SizeF (3F, 3F);
+ f.AutoScaleMode = AutoScaleMode.Font;
+ Assert.AreEqual (new SizeF (3F, 3F), f.AutoScaleDimensions, "A1");
+
+ // Subsequent calls will reset it to 0, 0
+ f.AutoScaleMode = AutoScaleMode.Dpi;
+ Assert.AreEqual (SizeF.Empty, f.AutoScaleDimensions, "A2");
+
+ f.ResumeLayout ();
+
+ // CurrentAutoScaleDimensions should be nonzero
+ Assert.IsFalse (f.CurrentAutoScaleDimensions == SizeF.Empty, "A3");
+
+ // AutoScaleDimensions and CurrentAutoScaleDimensions should match after ResumeLayout
+ Assert.AreEqual (f.AutoScaleDimensions, f.CurrentAutoScaleDimensions, "A4");
+
+ // CurrentAutoScaleDimensions should match AutoScaleDimensions for AutoScaleMode.None
+ f.SuspendLayout ();
+ f.AutoScaleMode = AutoScaleMode.None;
+ f.AutoScaleDimensions = new SizeF (5F, 5F);
+
+ Assert.AreEqual (new SizeF (5F, 5F), f.AutoScaleDimensions, "A5");
+ Assert.AreEqual (f.AutoScaleDimensions, f.CurrentAutoScaleDimensions, "A6");
+
+ // ResumeLayout changes nothing
+ f.ResumeLayout ();
+
+ Assert.AreEqual (new SizeF (5F, 5F), f.AutoScaleDimensions, "A7");
+ Assert.AreEqual (f.AutoScaleDimensions, f.CurrentAutoScaleDimensions, "A8");
+
+ // AutoScaleFactor should be ~2,2 if PerformAutoScale hasn't run
+ f.ClientSize = new Size (150, 150);
+ f.SuspendLayout ();
+ f.AutoScaleMode = AutoScaleMode.Dpi;
+ f.AutoScaleDimensions = new SizeF (f.CurrentAutoScaleDimensions.Width / 2F, f.CurrentAutoScaleDimensions.Height / 2F);
+ f.ClientSize = new Size (200, 200);
+
+ Assert.AreEqual (new Size (2, 2), RoundSizeF (f.GetPublicAutoScaleFactor ()), "A9");
+
+ // AutoScaleFactor should be 1 after ResumeLayout
+ f.ResumeLayout ();
+
+ Assert.AreEqual (new SizeF (1F, 1F), f.GetPublicAutoScaleFactor (), "A10");
+ Assert.AreEqual (new Size (400, 400), f.ClientSize, "A11");
+
+ // PerformAutoScale happens immediately when layout not suspended
+ f.ClientSize = new Size (125, 125);
+ f.AutoScaleDimensions = new SizeF (f.CurrentAutoScaleDimensions.Width / 2F, f.CurrentAutoScaleDimensions.Height / 2F);
+ Assert.AreEqual (new Size (250, 250), f.ClientSize, "A12");
+
+ f.Dispose ();
+ }
+
+ private class ProtectedForm : Form
+ {
+ public SizeF GetPublicAutoScaleFactor ()
+ {
+ return AutoScaleFactor;
+ }
+ }
+
+ [Test] // Bug #355703
+ public void AutoScaleSticks ()
+ {
+ Form f = new Form ();
+
+ f.AutoScale = false;
+ Assert.AreEqual (false, f.AutoScale, "A1");
+
+ f.AutoScale = true;
+ Assert.AreEqual (true, f.AutoScale, "A2");
+
+ f.AutoScaleMode = AutoScaleMode.None;
+ Assert.AreEqual (false, f.AutoScale, "A3");
+ }
+#endif
+
+ [Test] // Bug #359098
+ public void AutoScaleBounds ()
+ {
+ AutoScaleForm a = new AutoScaleForm (false);
+ a.Show ();
+ Assert.AreEqual (new Size (213, 121), a.ClientSize, "A0");
+ Assert.AreEqual (new Rectangle ( 5, 107, 132, 9), new Rectangle (a.hScrollBar1.Location, a.hScrollBar1.Size), "A1");
+ Assert.AreEqual (new Rectangle (151, 74, 60, 44), new Rectangle (a.treeView1.Location, a.treeView1.Size), "A2");
+ Assert.AreEqual (new Rectangle (197, 21, 9, 39), new Rectangle (a.vScrollBar1.Location, a.vScrollBar1.Size), "A3");
+ Assert.AreEqual (new Rectangle (139, 21, 54, 49), new Rectangle (a.listView1.Location, a.listView1.Size), "A4");
+ Assert.AreEqual (new Rectangle ( 70, 5, 65, 37), new Rectangle (a.textBox2.Location, a.textBox2.Size), "A5");
+ Assert.AreEqual (new Rectangle (139, 5, 70, 0), new Rectangle (a.comboBox1.Location, new Size (a.comboBox1.Width, 0)), "A6");
+ Assert.AreEqual (new Rectangle ( 5, 77, 43, 13), new Rectangle (a.button2.Location, a.button2.Size), "A7");
+ Assert.AreEqual (new Rectangle ( 70, 44, 65, 37), new Rectangle (a.richTextBox1.Location, a.richTextBox1.Size), "A8");
+ Assert.AreEqual (new Rectangle ( 53, 86, 21, 7), new Rectangle (a.label1.Location,a.label1.Size), "A9");
+ Assert.AreEqual (new Rectangle ( 65, 84, 58, 0), new Rectangle (a.textBox1.Location, new Size (a.textBox1.Width, 0)), "A10");
+ Assert.AreEqual (new Rectangle ( 5, 63, 43, 13), new Rectangle (a.button1.Location, a.button1.Size), "A11");
+ Assert.AreEqual (new Rectangle ( 5, 5, 60, 47), new Rectangle (a.listBox1.Location, a.listBox1.Size), "A12");
+ a.Dispose ();
+
+#if NET_2_0
+ a = new AutoScaleForm (true);
+ a.Show ();
+ Assert.AreEqual (new Size (184, 104), a.ClientSize, "B0");
+ Assert.AreEqual (new Rectangle ( 4, 92, 114, 16), new Rectangle (a.hScrollBar1.Location, a.hScrollBar1.ClientSize), "B1");
+ Assert.AreEqual (new Rectangle (130, 64, 50, 36), new Rectangle (a.treeView1.Location, a.treeView1.ClientSize), "B2");
+ Assert.AreEqual (new Rectangle (170, 18, 16, 34), new Rectangle (a.vScrollBar1.Location, a.vScrollBar1.ClientSize), "B3");
+ Assert.AreEqual (new Rectangle (120, 18, 44, 40), new Rectangle (a.listView1.Location, a.listView1.ClientSize), "B4");
+ Assert.AreEqual (new Rectangle ( 60, 4, 54, 30), new Rectangle (a.textBox2.Location, a.textBox2.ClientSize), "B5");
+ Assert.AreEqual (new Rectangle (120, 4, 62, 0), new Rectangle (a.comboBox1.Location, new Size (a.comboBox1.ClientSize.Width, 0)), "B6");
+ Assert.AreEqual (new Rectangle ( 4, 66, 38, 12), new Rectangle (a.button2.Location, a.button2.ClientSize), "B7");
+ Assert.AreEqual (new Rectangle ( 60, 38, 54, 30), new Rectangle (a.richTextBox1.Location, a.richTextBox1.ClientSize), "B8");
+ Assert.AreEqual (new Rectangle ( 46, 74, 18, 6), new Rectangle (a.label1.Location,a.label1.ClientSize), "B9");
+ Assert.AreEqual (new Rectangle ( 56, 72, 48, 0), new Rectangle (a.textBox1.Location, new Size (a.textBox1.ClientSize.Width, 0)), "B10");
+ Assert.AreEqual (new Rectangle ( 4, 54, 38, 12), new Rectangle (a.button1.Location, a.button1.ClientSize), "B11");
+ Assert.AreEqual (new Rectangle ( 4, 4, 50, 39), new Rectangle (a.listBox1.Location, a.listBox1.ClientSize), "B12");
+ a.Dispose ();
+#endif
+ }
+
+ [Test]
+ public void SettingIconToNull ()
+ {
+ Form form = new Form ();
+ Assert.IsNotNull (form.Icon, "1");
+ form.Icon = null;
+ Assert.IsNotNull (form.Icon, "2");
+ }
+
+ [Test]
+ [Category ("NotWorking")]
+ public void MinimizedWindowSize ()
+ {
+ Form form = new Form ();
+ form.WindowState = FormWindowState.Minimized;
+ form.Show ();
+ Assert.AreEqual (SystemInformation.MinimizedWindowSize, form.Size, "1");
+ form.Close ();
+ form = new Form ();
+ form.Show ();
+ form.WindowState = FormWindowState.Minimized;
+ Assert.AreEqual (SystemInformation.MinimizedWindowSize, form.Size, "2");
+ form.Close ();
+ }
}
public class TimeBombedForm : Form
}
}
}
+
+ public class AutoScaleForm : Form
+ {
+ public ListBox listBox1 = new ListBox ();
+ public ComboBox comboBox1 = new ComboBox ();
+ public Button button1 = new Button ();
+ public Button button2 = new Button ();
+ public Label label1 = new Label ();
+ public TextBox textBox1 = new TextBox ();
+ public TextBox textBox2 = new TextBox ();
+ public RichTextBox richTextBox1 = new RichTextBox ();
+ public ListView listView1 = new ListView ();
+ public TreeView treeView1 = new TreeView ();
+ public VScrollBar vScrollBar1 = new VScrollBar ();
+ public HScrollBar hScrollBar1 = new HScrollBar ();
+
+ public AutoScaleForm (bool use_new_auto_scale)
+ {
+ ShowInTaskbar = false;
+
+ SuspendLayout ();
+
+ listBox1.IntegralHeight = false;
+ listBox1.SetBounds (8, 8, 104, 82);
+ comboBox1.SetBounds (240, 8, 121, 21);
+ button1.SetBounds (8, 108, 75, 23);
+ button2.SetBounds (8, 132, 75, 23);
+ label1.SetBounds (92, 148, 35, 13);
+ textBox1.SetBounds (112, 144, 100, 20);
+ textBox2.Multiline = true;
+ textBox2.SetBounds (120, 8, 112, 64);
+ richTextBox1.SetBounds (120, 76, 112, 64);
+ listView1.SetBounds (240, 36, 92, 84);
+ treeView1.SetBounds (260, 128, 104, 76);
+ vScrollBar1.SetBounds (340, 36, 16, 68);
+ hScrollBar1.SetBounds (8, 184, 228, 16);
+
+ ClientSize = new Size (368, 209);
+
+ Controls.AddRange ( new Control [] { listBox1, comboBox1, button1, button2, label1, textBox1,
+ textBox2, richTextBox1, listView1, treeView1, vScrollBar1, hScrollBar1 } );
+
+ if (use_new_auto_scale) {
+#if NET_2_0
+ AutoScaleMode = AutoScaleMode.Dpi;
+ SizeF s = CurrentAutoScaleDimensions;
+ AutoScaleDimensions = new SizeF (s.Width * 2, s.Height * 2);
+#endif
+ }
+ else {
+ AutoScale = true;
+ SizeF s = Form.GetAutoScaleSize (Font);
+ AutoScaleBaseSize = new Size ((int)Math.Round (s.Width) * 2, (int)s.Height * 2);
+ }
+
+ ResumeLayout (false);
+ PerformLayout ();
+ }
+ }
}