using System.Drawing;
using System.Reflection;
using System.Windows.Forms;
+using System.Collections;
using NUnit.Framework;
+using CategoryAttribute = NUnit.Framework.CategoryAttribute;
+
namespace MonoTests.System.Windows.Forms
{
[TestFixture]
- public class FormTest
+ public class FormTest : TestHelper
{
[Test]
- public void FormPropertyTest ()
+ public void AcceptButton ()
{
- Form myform = new Form ();
- myform.Visible = true;
- myform.Text = "NewForm";
- myform.Name = "FormTest";
- Assert.IsNull (myform.AcceptButton, "#1");
- Assert.IsNull (myform.ActiveMdiChild, "#2");
- Assert.IsFalse (myform.AutoScale, "#3");
- Assert.IsNull (myform.CancelButton, "#6");
- Assert.IsTrue (myform.ControlBox, "#9");
- Assert.IsTrue (myform.DesktopBounds.X > 0, "#10a");
- Assert.IsTrue (myform.DesktopBounds.Y > 0, "#10b");
- Assert.AreEqual (300, myform.DesktopBounds.Height, "#10c");
- Assert.AreEqual (300, myform.DesktopBounds.Width, "#10d");
- Assert.IsTrue (myform.DesktopLocation.X > 0, "#11a");
- Assert.IsTrue (myform.DesktopLocation.Y > 0, "#11b");
- Assert.AreEqual (DialogResult.None, myform.DialogResult, "#12");
- Assert.AreEqual (FormBorderStyle.Sizable, myform.FormBorderStyle, "#13");
- Assert.IsFalse (myform.HelpButton, "#14");
- Assert.AreEqual ("System.Drawing.Icon", myform.Icon.GetType ().ToString (), "#15");
- Assert.IsFalse (myform.IsMdiChild, "#16");
- Assert.IsFalse (myform.IsMdiContainer, "#17");
- Assert.IsFalse (myform.KeyPreview, "#18");
- Assert.IsTrue (myform.MaximizeBox, "#19");
- Assert.AreEqual (0, myform.MaximumSize.Height, "#20a");
- Assert.AreEqual (0, myform.MaximumSize.Width, "#20b");
- Assert.AreEqual (0, myform.MdiChildren.Length, "#21a");
- Assert.AreEqual (1, myform.MdiChildren.Rank, "#21b");
- Assert.IsFalse (myform.MdiChildren.IsSynchronized, "#21c");
- Assert.IsNull (myform.MdiParent, "#22");
- Assert.IsNull (myform.Menu, "#23");
- Assert.IsNull (myform.MergedMenu, "#24");
- Assert.IsTrue (myform.MinimizeBox, "#25");
- Assert.AreEqual (0, myform.MinimumSize.Height, "#26a");
- Assert.AreEqual (0, myform.MinimumSize.Width, "#26b");
- Assert.IsTrue (myform.MinimumSize.IsEmpty, "#26c");
- Assert.IsFalse (myform.Modal, "#27");
- Assert.AreEqual (1, myform.Opacity, "#28");
- Assert.AreEqual (0, myform.OwnedForms.Length, "#29a");
- Assert.AreEqual (1, myform.OwnedForms.Rank, "#29b");
- Assert.IsNull (myform.Owner, "#30");
- Assert.IsTrue (myform.ShowInTaskbar, "#31");
- Assert.AreEqual (300, myform.Size.Height, "#32a");
- Assert.AreEqual (300, myform.Size.Width, "#32b");
- Assert.AreEqual (SizeGripStyle.Auto, myform.SizeGripStyle, "#33");
- Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, myform.StartPosition, "#34");
- Assert.IsTrue (myform.TopLevel, "#35");
- Assert.IsFalse (myform.TopMost, "#36");
- Assert.AreEqual (Color.Empty, myform.TransparencyKey, "#37");
- Assert.AreEqual (FormWindowState.Normal, myform.WindowState, "#38");
- Assert.AreEqual (ImeMode.NoControl, myform.ImeMode, "#39");
- myform.Dispose ();
+ Form form = new Form ();
+ Assert.IsNull (form.AcceptButton, "#A");
+
+ MockButton buttonA = new MockButton (true);
+ Assert.IsFalse (buttonA.IsDefaultButton, "#B1");
+ form.AcceptButton = buttonA;
+ Assert.IsNotNull (form.AcceptButton, "#B2");
+ Assert.AreSame (buttonA, form.AcceptButton, "#B3");
+ Assert.IsTrue (buttonA.IsDefaultButton, "#B4");
+
+ form.AcceptButton = null;
+ Assert.IsNull (form.AcceptButton, "#C1");
+ Assert.IsFalse (buttonA.IsDefaultButton, "#C2");
+
+ ButtonControl buttonB = new ButtonControl ();
+ Assert.IsFalse (buttonB.IsDefaultButton, "#D1");
+ form.AcceptButton = buttonB;
+ Assert.IsNotNull (form.AcceptButton, "#D2");
+ Assert.AreSame (buttonB, form.AcceptButton, "#D3");
+ Assert.IsFalse (buttonA.IsDefaultButton, "#D4");
+ Assert.IsTrue (buttonB.IsDefaultButton, "#D5");
+
+ MockButton buttonC = new MockButton (false);
+ Assert.IsFalse (buttonC.IsDefaultButton, "#E1");
+ form.AcceptButton = buttonC;
+ Assert.IsNotNull (form.AcceptButton, "#E2");
+ Assert.AreSame (buttonC, form.AcceptButton, "#E3");
+ Assert.IsFalse (buttonC.IsDefaultButton, "#E4");
+ Assert.IsFalse (buttonA.IsDefaultButton, "#E5");
+ Assert.IsFalse (buttonB.IsDefaultButton, "#E6");
+ }
+
+ [Test]
+ public void bug_82358 ()
+ {
+ //Console.WriteLine ("Starting bug_82358");
+ int sizeable_factor;
+ int title_bar;
+ int tool_bar;
+ int tool_border;
+ int d3;
+ int d2;
+
+ // WinXP, default theme
+ sizeable_factor = 2;
+ title_bar = 26;
+ tool_bar = 18;
+ tool_border = 6;
+ d3 = 10;
+ d2 = 6;
+
+ // WinXP, Win32 theme:
+ sizeable_factor = 2;
+ title_bar = 19;
+ tool_bar = 16;
+ tool_border = 6;
+ d3 = 10;
+ d2 = 6;
+
+
+ Size size = new Size (200, 200);
+
+ // Universal theme??
+ using (Form f = new Form ()) {
+ f.FormBorderStyle = FormBorderStyle.FixedSingle;
+ f.Visible = true;
+ d2 = f.Size.Width - f.ClientSize.Width;
+ title_bar = f.Size.Height - f.ClientSize.Height - d2;
+ }
+ using (Form f = new Form ()) {
+ f.FormBorderStyle = FormBorderStyle.Sizable;
+ f.Visible = true;
+ sizeable_factor = f.Size.Width - f.ClientSize.Width - d2;
+ }
+ using (Form f = new Form ()) {
+ f.ClientSize = size;
+ f.FormBorderStyle = FormBorderStyle.FixedToolWindow;
+ //f.Visible = true;
+ tool_border = f.Size.Width - f.ClientSize.Width;
+ tool_bar = f.Size.Height - f.ClientSize.Height - tool_border;
+ }
+ using (Form f = new Form ()) {
+ f.FormBorderStyle = FormBorderStyle.Fixed3D;
+ f.Visible = true;
+ d3 = f.Size.Width - f.ClientSize.Width;
+ }
+
+ FormBorderStyle style;
+
+
+ //Console.WriteLine ("Universal theme says: d2={0}, d3={1}, title_bar={2}, sizeable_factor={3}, tool_border={4}, tool_bar={5}", d2, d3, title_bar, sizeable_factor, tool_border, tool_bar);
+
+ // Changing client size, then FormBorderStyle.
+ using (Form f = new Form ()) {
+ style = FormBorderStyle.FixedToolWindow;
+ //Console.WriteLine ("Created form, size: {0}, clientsize: {1}", f.Size, f.ClientSize);
+ f.ClientSize = size;
+ //Console.WriteLine ("Changed ClientSize, size: {0}, clientsize: {1}", f.Size, f.ClientSize);
+ f.FormBorderStyle = style;
+ //Console.WriteLine ("Changed FormBorderStyle, size: {0}, clientsize: {1}", f.Size, f.ClientSize);
+ Assert.AreEqual (size.ToString (), f.ClientSize.ToString (), style.ToString () + "-A1");
+ Assert.AreEqual (new Size (size.Width + tool_border, size.Height + tool_border + tool_bar).ToString (), f.Size.ToString (), style.ToString () + "-A2");
+ f.Visible = true;
+ //Console.WriteLine ("Made visible, size: {0}, clientsize: {1}", f.Size, f.ClientSize);
+ Assert.AreEqual (size.ToString (), f.ClientSize.ToString (), style.ToString () + "-A3");
+ Assert.AreEqual (new Size (size.Width + tool_border, size.Height + tool_border + tool_bar).ToString (), f.Size.ToString (), style.ToString () + "-A4");
+ }
+
+ using (Form f = new Form ()) {
+ style = FormBorderStyle.SizableToolWindow;
+ f.ClientSize = size;
+ f.FormBorderStyle = style;
+ Assert.AreEqual (size.ToString (), f.ClientSize.ToString (), style.ToString () + "-A1");
+ Assert.AreEqual (new Size (size.Width + tool_border + sizeable_factor, size.Height + tool_border + tool_bar + sizeable_factor).ToString (), f.Size.ToString (), style.ToString () + "-A2");
+ f.Visible = true;
+ Assert.AreEqual (size.ToString (), f.ClientSize.ToString (), style.ToString () + "-A3");
+ Assert.AreEqual (new Size (size.Width + tool_border + sizeable_factor, size.Height + tool_border + tool_bar + sizeable_factor).ToString (), f.Size.ToString (), style.ToString () + "-A4");
+ }
+
+ using (Form f = new Form ()) {
+ style = FormBorderStyle.Fixed3D;
+ f.ClientSize = size;
+ f.FormBorderStyle = style;
+ Assert.AreEqual (size.ToString (), f.ClientSize.ToString (), style.ToString () + "-A1");
+ Assert.AreEqual (new Size (size.Width + d3, size.Height + title_bar + d3).ToString () , f.Size.ToString (), style.ToString () + "-A2");
+ f.Visible = true;
+ Assert.AreEqual (size.ToString (), f.ClientSize.ToString (), style.ToString () + "-A3");
+ Assert.AreEqual (new Size (size.Width + d3, size.Height + title_bar + d3).ToString (), f.Size.ToString (), style.ToString () + "-A4");
+ }
+
+ using (Form f = new Form ()) {
+ style = FormBorderStyle.FixedDialog;
+ f.ClientSize = size;
+ f.FormBorderStyle = style;
+ Assert.AreEqual (size.ToString (), f.ClientSize.ToString (), style.ToString () + "-A1");
+ Assert.AreEqual (new Size (size.Width + d2, size.Height + title_bar + d2).ToString (), f.Size.ToString (), style.ToString () + "-A2");
+ f.Visible = true;
+ Assert.AreEqual (size.ToString (), f.ClientSize.ToString (), style.ToString () + "-A3");
+ Assert.AreEqual (new Size (size.Width + d2, size.Height + title_bar + d2).ToString (), f.Size.ToString (), style.ToString () + "-A4");
+
+ }
+
+ using (Form f = new Form ()) {
+ style = FormBorderStyle.FixedSingle;
+ f.ClientSize = size;
+ f.FormBorderStyle = style;
+ Assert.AreEqual (size.ToString (), f.ClientSize.ToString (), style.ToString () + "-A1");
+ Assert.AreEqual (new Size (size.Width + d2, size.Height + title_bar + d2).ToString (), f.Size.ToString (), style.ToString () + "-A2");
+ f.Visible = true;
+ Assert.AreEqual (size.ToString (), f.ClientSize.ToString (), style.ToString () + "-A3");
+ Assert.AreEqual (new Size (size.Width + d2, size.Height + title_bar + d2).ToString (), f.Size.ToString (), style.ToString () + "-A4");
+ }
+
+ using (Form f = new Form ()) {
+ style = FormBorderStyle.None;
+ f.ClientSize = size;
+ f.FormBorderStyle = style;
+ Assert.AreEqual (size.ToString (), f.ClientSize.ToString (), style.ToString () + "-A1");
+ Assert.AreEqual (size.ToString (), f.Size.ToString (), style.ToString () + "-A2");
+ f.Visible = true;
+ Assert.AreEqual (size.ToString (), f.ClientSize.ToString (), style.ToString () + "-A3");
+ Assert.AreEqual (size.ToString (), f.Size.ToString (), style.ToString () + "-A4");
+ }
+
+ using (Form f = new Form ()) {
+ style = FormBorderStyle.Sizable;
+ f.ClientSize = size;
+ f.FormBorderStyle = style;
+ Assert.AreEqual (size.ToString (), f.ClientSize.ToString (), style.ToString () + "-A1");
+ Assert.AreEqual (new Size (size.Width + d2 + sizeable_factor, size.Height + title_bar + d2 + sizeable_factor).ToString (), f.Size.ToString (), style.ToString () + "-A2");
+ f.Visible = true;
+ Assert.AreEqual (size.ToString (), f.ClientSize.ToString (), style.ToString () + "-A3");
+ Assert.AreEqual (new Size (size.Width + d2 + sizeable_factor, size.Height + title_bar + d2 + sizeable_factor).ToString (), f.Size.ToString (), style.ToString () + "-A4");
+ }
+
+
+ // Changing size, then FormBorderStyle.
+ using (Form f = new Form ()) {
+ style = FormBorderStyle.FixedToolWindow;
+ f.Size = size;
+ f.FormBorderStyle = style;
+ Assert.AreEqual (size.ToString (), f.Size.ToString (), style.ToString () + "-B1");
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor, size.Height - title_bar - d2 - sizeable_factor).ToString (), f.ClientSize.ToString (), style.ToString () + "-B2");
+ f.Visible = true;
+ Assert.AreEqual (size.ToString (), f.Size.ToString (), style.ToString () + "-B3");
+ Assert.AreEqual (new Size (size.Width - tool_border, size.Height - tool_border - tool_bar).ToString (), f.ClientSize.ToString (), style.ToString () + "-B4");
+ }
+
+ using (Form f = new Form ()) {
+ style = FormBorderStyle.SizableToolWindow;
+ f.Size = size;
+ f.FormBorderStyle = style;
+ Assert.AreEqual (size.ToString (), f.Size.ToString (), style.ToString () + "-B1");
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor, size.Height - title_bar - d2 - sizeable_factor).ToString (), f.ClientSize.ToString (), style.ToString () + "-B2");
+ f.Visible = true;
+ Assert.AreEqual (size.ToString (), f.Size.ToString (), style.ToString () + "-B3");
+ Assert.AreEqual (new Size (size.Width - tool_border - sizeable_factor, size.Height - tool_border - tool_bar - sizeable_factor).ToString (), f.ClientSize.ToString (), style.ToString () + "-B4");
+ }
+
+ using (Form f = new Form ()) {
+ style = FormBorderStyle.Fixed3D;
+ f.Size = size;
+ f.FormBorderStyle = style;
+ Assert.AreEqual (size.ToString (), f.Size.ToString (), style.ToString () + "-B1");
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor, size.Height - title_bar - d2 - sizeable_factor).ToString (), f.ClientSize.ToString (), style.ToString () + "-B2");
+ f.Visible = true;
+ Assert.AreEqual (size.ToString (), f.Size.ToString (), style.ToString () + "-B3");
+ Assert.AreEqual (new Size (size.Width - d3, size.Height - title_bar - d3).ToString (), f.ClientSize.ToString (), style.ToString () + "-B4");
+ }
+
+ using (Form f = new Form ()) {
+ style = FormBorderStyle.FixedDialog;
+ f.Size = size;
+ f.FormBorderStyle = style;
+ Assert.AreEqual (size.ToString (), f.Size.ToString (), style.ToString () + "-B1");
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor, size.Height - title_bar - d2 - sizeable_factor).ToString (), f.ClientSize.ToString (), style.ToString () + "-B2");
+ f.Visible = true;
+ Assert.AreEqual (size.ToString (), f.Size.ToString (), style.ToString () + "-B3");
+ Assert.AreEqual (new Size (size.Width - d2, size.Height - title_bar - d2).ToString (), f.ClientSize.ToString (), style.ToString () + "-B4");
+
+ }
+
+ using (Form f = new Form ()) {
+ style = FormBorderStyle.FixedSingle;
+ f.Size = size;
+ f.FormBorderStyle = style;
+ Assert.AreEqual (size.ToString (), f.Size.ToString (), style.ToString () + "-B1");
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor, size.Height - title_bar - d2 - sizeable_factor).ToString (), f.ClientSize.ToString (), style.ToString () + "-B2");
+ f.Visible = true;
+ Assert.AreEqual (size.ToString (), f.Size.ToString (), style.ToString () + "-B3");
+ Assert.AreEqual (new Size (size.Width - d2, size.Height - title_bar - d2).ToString (), f.ClientSize.ToString (), style.ToString () + "-B4");
+ }
+
+ using (Form f = new Form ()) {
+ style = FormBorderStyle.None;
+ f.Size = size;
+ f.FormBorderStyle = style;
+ Assert.AreEqual (size.ToString (), f.Size.ToString (), style.ToString () + "-B1");
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor, size.Height - title_bar - d2 - sizeable_factor).ToString (), f.ClientSize.ToString (), style.ToString () + "-B2");
+ f.Visible = true;
+ Assert.AreEqual (size.ToString (), f.Size.ToString (), style.ToString () + "-B3");
+ Assert.AreEqual (size.ToString (), f.ClientSize.ToString (), style.ToString () + "-B4");
+ }
+
+ using (Form f = new Form ()) {
+ style = FormBorderStyle.Sizable;
+ f.Size = size;
+ f.FormBorderStyle = style;
+ Assert.AreEqual (size.ToString (), f.Size.ToString (), style.ToString () + "-B1");
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor, size.Height - title_bar - d2 - sizeable_factor).ToString (), f.ClientSize.ToString (), style.ToString () + "-B2");
+ f.Visible = true;
+ Assert.AreEqual (size.ToString (), f.Size.ToString (), style.ToString () + "-B3");
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor, size.Height - title_bar - d2 - sizeable_factor).ToString (), f.ClientSize.ToString (), style.ToString () + "-B4");
+ }
+
+
+
+ // Changing FormBorderStyle, then client size
+ using (Form f = new Form ()) {
+ style = FormBorderStyle.FixedToolWindow;
+ f.FormBorderStyle = style;
+ f.ClientSize = size;
+ Assert.AreEqual (size.ToString (), f.ClientSize.ToString (), style.ToString () + "-C1");
+ Assert.AreEqual (new Size (size.Width + tool_border, size.Height + tool_border + tool_bar).ToString (), f.Size.ToString (), style.ToString () + "-C2");
+ f.Visible = true;
+ Assert.AreEqual (size.ToString (), f.ClientSize.ToString (), style.ToString () + "-C3");
+ Assert.AreEqual (new Size (size.Width + tool_border, size.Height + tool_border + tool_bar).ToString (), f.Size.ToString (), style.ToString () + "-C4");
+ }
+
+ using (Form f = new Form ()) {
+ style = FormBorderStyle.SizableToolWindow;
+ f.FormBorderStyle = style;
+ f.ClientSize = size;
+ Assert.AreEqual (size.ToString (), f.ClientSize.ToString (), style.ToString () + "-C1");
+ Assert.AreEqual (new Size (size.Width + tool_border + sizeable_factor, size.Height + tool_border + tool_bar + sizeable_factor).ToString (), f.Size.ToString (), style.ToString () + "-C2");
+ f.Visible = true;
+ Assert.AreEqual (size.ToString (), f.ClientSize.ToString (), style.ToString () + "-C3");
+ Assert.AreEqual (new Size (size.Width + tool_border + sizeable_factor, size.Height + tool_border + tool_bar + sizeable_factor).ToString (), f.Size.ToString (), style.ToString () + "-C4");
+ }
+
+ using (Form f = new Form ()) {
+ style = FormBorderStyle.Fixed3D;
+ f.FormBorderStyle = style;
+ f.ClientSize = size;
+ Assert.AreEqual (size.ToString (), f.ClientSize.ToString (), style.ToString () + "-C1");
+ Assert.AreEqual (new Size (size.Width + d3, size.Height + title_bar + d3).ToString (), f.Size.ToString (), style.ToString () + "-C2");
+ f.Visible = true;
+ Assert.AreEqual (size.ToString (), f.ClientSize.ToString (), style.ToString () + "-C3");
+ Assert.AreEqual (new Size (size.Width + d3, size.Height + title_bar + d3).ToString (), f.Size.ToString (), style.ToString () + "-C4");
+ }
+
+ using (Form f = new Form ()) {
+ style = FormBorderStyle.FixedDialog;
+ f.FormBorderStyle = style;
+ f.ClientSize = size;
+ Assert.AreEqual (size.ToString (), f.ClientSize.ToString (), style.ToString () + "-C1");
+ Assert.AreEqual (new Size (size.Width + d2, size.Height + title_bar + d2).ToString (), f.Size.ToString (), style.ToString () + "-C2");
+ f.Visible = true;
+ Assert.AreEqual (size.ToString (), f.ClientSize.ToString (), style.ToString () + "-C3");
+ Assert.AreEqual (new Size (size.Width + d2, size.Height + title_bar + d2).ToString (), f.Size.ToString (), style.ToString () + "-C4");
+
+ }
+
+ using (Form f = new Form ()) {
+ style = FormBorderStyle.FixedSingle;
+ f.FormBorderStyle = style;
+ f.ClientSize = size;
+ Assert.AreEqual (size.ToString (), f.ClientSize.ToString (), style.ToString () + "-C1");
+ Assert.AreEqual (new Size (size.Width + d2, size.Height + title_bar + d2).ToString (), f.Size.ToString (), style.ToString () + "-C2");
+ f.Visible = true;
+ Assert.AreEqual (size.ToString (), f.ClientSize.ToString (), style.ToString () + "-C3");
+ Assert.AreEqual (new Size (size.Width + d2, size.Height + title_bar + d2).ToString (), f.Size.ToString (), style.ToString () + "-C4");
+ }
+
+ using (Form f = new Form ()) {
+ style = FormBorderStyle.None;
+ f.FormBorderStyle = style;
+ f.ClientSize = size;
+ Assert.AreEqual (size.ToString (), f.ClientSize.ToString (), style.ToString () + "-C1");
+ Assert.AreEqual (size.ToString (), f.Size.ToString (), style.ToString () + "-C2");
+ f.Visible = true;
+ Assert.AreEqual (size.ToString (), f.ClientSize.ToString (), style.ToString () + "-C3");
+ Assert.AreEqual (size.ToString (), f.Size.ToString (), style.ToString () + "-C4");
+ }
+
+ using (Form f = new Form ()) {
+ style = FormBorderStyle.Sizable;
+ f.FormBorderStyle = style;
+ f.ClientSize = size;
+ Assert.AreEqual (size.ToString (), f.ClientSize.ToString (), style.ToString () + "-C1");
+ Assert.AreEqual (new Size (size.Width + d2 + sizeable_factor, size.Height + title_bar + d2 + sizeable_factor).ToString (), f.Size.ToString (), style.ToString () + "-C2");
+ f.Visible = true;
+ Assert.AreEqual (size.ToString (), f.ClientSize.ToString (), style.ToString () + "-C3");
+ Assert.AreEqual (new Size (size.Width + d2 + sizeable_factor, size.Height + title_bar + d2 + sizeable_factor).ToString (), f.Size.ToString (), style.ToString () + "-C4");
+ }
+
+
+ // Changing FormBorderStyle, then size
+ using (Form f = new Form ()) {
+ style = FormBorderStyle.FixedToolWindow;
+ f.FormBorderStyle = style;
+ f.Size = size;
+ Assert.AreEqual (size.ToString (), f.Size.ToString (), style.ToString () + "-D1");
+ Assert.AreEqual (new Size (size.Width - tool_border, size.Height - tool_border - tool_bar).ToString (), f.ClientSize.ToString (), style.ToString () + "-D2");
+ f.Visible = true;
+ Assert.AreEqual (size.ToString (), f.Size.ToString (), style.ToString () + "-D3");
+ Assert.AreEqual (new Size (size.Width - tool_border, size.Height - tool_border - tool_bar).ToString (), f.ClientSize.ToString (), style.ToString () + "-D4");
+ }
+
+ using (Form f = new Form ()) {
+ style = FormBorderStyle.SizableToolWindow;
+ f.FormBorderStyle = style;
+ f.Size = size;
+ Assert.AreEqual (size.ToString (), f.Size.ToString (), style.ToString () + "-D1");
+ Assert.AreEqual (new Size (size.Width - tool_border - sizeable_factor, size.Height - tool_border - tool_bar - sizeable_factor).ToString (), f.ClientSize.ToString (), style.ToString () + "-D2");
+ f.Visible = true;
+ Assert.AreEqual (size.ToString (), f.Size.ToString (), style.ToString () + "-D3");
+ Assert.AreEqual (new Size (size.Width - tool_border - sizeable_factor, size.Height - tool_border - tool_bar - sizeable_factor).ToString (), f.ClientSize.ToString (), style.ToString () + "-D4");
+ }
+
+ using (Form f = new Form ()) {
+ style = FormBorderStyle.Fixed3D;
+ f.FormBorderStyle = style;
+ f.Size = size;
+ Assert.AreEqual (size.ToString (), f.Size.ToString (), style.ToString () + "-D1");
+ Assert.AreEqual (new Size (size.Width - d3, size.Height - title_bar - d3).ToString (), f.ClientSize.ToString (), style.ToString () + "-D2");
+ f.Visible = true;
+ Assert.AreEqual (size.ToString (), f.Size.ToString (), style.ToString () + "-D3");
+ Assert.AreEqual (new Size (size.Width - d3, size.Height - title_bar - d3).ToString (), f.ClientSize.ToString (), style.ToString () + "-D4");
+ }
+
+ using (Form f = new Form ()) {
+ style = FormBorderStyle.FixedDialog;
+ f.FormBorderStyle = style;
+ f.Size = size;
+ Assert.AreEqual (size.ToString (), f.Size.ToString (), style.ToString () + "-D1");
+ Assert.AreEqual (new Size (size.Width - d2, size.Height - title_bar - d2).ToString (), f.ClientSize.ToString (), style.ToString () + "-D2");
+ f.Visible = true;
+ Assert.AreEqual (size.ToString (), f.Size.ToString (), style.ToString () + "-D3");
+ Assert.AreEqual (new Size (size.Width - d2, size.Height - title_bar - d2).ToString (), f.ClientSize.ToString (), style.ToString () + "-D4");
+
+ }
+
+ using (Form f = new Form ()) {
+ style = FormBorderStyle.FixedSingle;
+ f.FormBorderStyle = style;
+ f.Size = size;
+ Assert.AreEqual (size.ToString (), f.Size.ToString (), style.ToString () + "-D1");
+ Assert.AreEqual (new Size (size.Width - d2, size.Height - title_bar - d2).ToString (), f.ClientSize.ToString (), style.ToString () + "-D2");
+ f.Visible = true;
+ Assert.AreEqual (size.ToString (), f.Size.ToString (), style.ToString () + "-D3");
+ Assert.AreEqual (new Size (size.Width - d2, size.Height - title_bar - d2).ToString (), f.ClientSize.ToString (), style.ToString () + "-D4");
+ }
+
+ using (Form f = new Form ()) {
+ style = FormBorderStyle.None;
+ f.FormBorderStyle = style;
+ f.Size = size;
+ Assert.AreEqual (size.ToString (), f.ClientSize.ToString (), style.ToString () + "-D1");
+ Assert.AreEqual (size.ToString (), f.Size.ToString (), style.ToString () + "-D2");
+ f.Visible = true;
+ Assert.AreEqual (size.ToString (), f.ClientSize.ToString (), style.ToString () + "-D3");
+ Assert.AreEqual (size.ToString (), f.Size.ToString (), style.ToString () + "-D4");
+ }
+
+ using (Form f = new Form ()) {
+ style = FormBorderStyle.Sizable;
+ f.FormBorderStyle = style;
+ f.Size = size;
+ Assert.AreEqual (size.ToString (), f.Size.ToString (), style.ToString () + "-D1");
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor, size.Height - title_bar - d2 - sizeable_factor).ToString (), f.ClientSize.ToString (), style.ToString () + "-D2");
+ f.Visible = true;
+ Assert.AreEqual (size.ToString (), f.Size.ToString (), style.ToString () + "-D3");
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor, size.Height - title_bar - d2 - sizeable_factor).ToString (), f.ClientSize.ToString (), style.ToString () + "-D4");
+ }
+
+
+
+ // Set clientsize, then change size, then FormBorderStyle.
+ using (Form f = new Form ()) {
+ style = FormBorderStyle.FixedToolWindow;
+ f.ClientSize = f.ClientSize;
+ f.Size = size;
+ f.FormBorderStyle = style;
+ // Here we subtract the Sizable borders (default) then add FixedToolWindow's border.
+ // Note how now the sizes doesn't change when creating the handle.
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor + tool_border, size.Height - title_bar - d2 - sizeable_factor + tool_border + tool_bar).ToString (), f.Size.ToString (), style.ToString () + "-E1");
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor, size.Height - title_bar - d2 - sizeable_factor).ToString (), f.ClientSize.ToString (), style.ToString () + "-E2");
+ f.Visible = true;
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor + tool_border, size.Height - title_bar - d2 - sizeable_factor + tool_border + tool_bar).ToString (), f.Size.ToString (), style.ToString () + "-E3");
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor, size.Height - title_bar - d2 - sizeable_factor).ToString (), f.ClientSize.ToString (), style.ToString () + "-E4");
+ }
+
+ using (Form f = new Form ()) {
+ style = FormBorderStyle.SizableToolWindow;
+ f.ClientSize = f.ClientSize;
+ f.Size = size;
+ f.FormBorderStyle = style;
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor + tool_border + sizeable_factor, size.Height - title_bar - d2 - sizeable_factor + tool_border + tool_bar + sizeable_factor).ToString (), f.Size.ToString (), style.ToString () + "-E1");
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor, size.Height - title_bar - d2 - sizeable_factor).ToString (), f.ClientSize.ToString (), style.ToString () + "-E2");
+ f.Visible = true;
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor + tool_border + sizeable_factor, size.Height - title_bar - d2 - sizeable_factor + tool_border + tool_bar + sizeable_factor).ToString (), f.Size.ToString (), style.ToString () + "-E3");
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor, size.Height - title_bar - d2 - sizeable_factor).ToString (), f.ClientSize.ToString (), style.ToString () + "-E4");
+ }
+
+ using (Form f = new Form ()) {
+ style = FormBorderStyle.Fixed3D;
+ f.ClientSize = f.ClientSize;
+ f.Size = size;
+ f.FormBorderStyle = style;
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor + d3, size.Height - title_bar - d2 - sizeable_factor + title_bar + d3).ToString (), f.Size.ToString (), style.ToString () + "-E1");
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor, size.Height - title_bar - d2 - sizeable_factor).ToString (), f.ClientSize.ToString (), style.ToString () + "-E2");
+ f.Visible = true;
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor + d3, size.Height - title_bar - d2 - sizeable_factor + title_bar + d3).ToString (), f.Size.ToString (), style.ToString () + "-E3");
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor, size.Height - title_bar - d2 - sizeable_factor).ToString (), f.ClientSize.ToString (), style.ToString () + "-E4");
+ }
+
+ using (Form f = new Form ()) {
+ style = FormBorderStyle.FixedDialog;
+ f.ClientSize = f.ClientSize;
+ f.Size = size;
+ f.FormBorderStyle = style;
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor + d2, size.Height - title_bar - d2 - sizeable_factor + title_bar + d2).ToString (), f.Size.ToString (), style.ToString () + "-E1");
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor, size.Height - title_bar - d2 - sizeable_factor).ToString (), f.ClientSize.ToString (), style.ToString () + "-E2");
+ f.Visible = true;
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor + d2, size.Height - title_bar - d2 - sizeable_factor + title_bar + d2).ToString (), f.Size.ToString (), style.ToString () + "-E3");
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor, size.Height - title_bar - d2 - sizeable_factor).ToString (), f.ClientSize.ToString (), style.ToString () + "-E4");
+
+ }
+
+ using (Form f = new Form ()) {
+ style = FormBorderStyle.FixedSingle;
+ f.ClientSize = f.ClientSize;
+ f.Size = size;
+ f.FormBorderStyle = style;
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor + d2, size.Height - title_bar - d2 - sizeable_factor + title_bar + d2).ToString (), f.Size.ToString (), style.ToString () + "-E1");
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor, size.Height - title_bar - d2 - sizeable_factor).ToString (), f.ClientSize.ToString (), style.ToString () + "-E2");
+ f.Visible = true;
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor + d2, size.Height - title_bar - d2 - sizeable_factor + title_bar + d2).ToString (), f.Size.ToString (), style.ToString () + "-E3");
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor, size.Height - title_bar - d2 - sizeable_factor).ToString (), f.ClientSize.ToString (), style.ToString () + "-E4");
+ }
+
+ using (Form f = new Form ()) {
+ style = FormBorderStyle.None;
+ f.ClientSize = f.ClientSize;
+ f.Size = size;
+ f.FormBorderStyle = style;
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor, size.Height - title_bar - d2 - sizeable_factor).ToString (), f.Size.ToString (), style.ToString () + "-E1");
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor, size.Height - title_bar - d2 - sizeable_factor).ToString (), f.ClientSize.ToString (), style.ToString () + "-E2");
+ f.Visible = true;
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor, size.Height - title_bar - d2 - sizeable_factor).ToString (), f.Size.ToString (), style.ToString () + "-E3");
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor, size.Height - title_bar - d2 - sizeable_factor).ToString (), f.ClientSize.ToString (), style.ToString () + "-E4");
+ }
+
+ using (Form f = new Form ()) {
+ style = FormBorderStyle.Sizable;
+ f.ClientSize = f.ClientSize;
+ f.Size = size;
+ f.FormBorderStyle = style;
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor + d2 + sizeable_factor, size.Height - title_bar - d2 - sizeable_factor + d2 + sizeable_factor + title_bar).ToString (), f.Size.ToString (), style.ToString () + "-E1");
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor, size.Height - title_bar - d2 - sizeable_factor).ToString (), f.ClientSize.ToString (), style.ToString () + "-E2");
+ f.Visible = true;
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor + d2 + sizeable_factor, size.Height - title_bar - d2 - sizeable_factor + d2 + sizeable_factor + title_bar).ToString (), f.Size.ToString (), style.ToString () + "-E3");
+ Assert.AreEqual (new Size (size.Width - d2 - sizeable_factor, size.Height - title_bar - d2 - sizeable_factor).ToString (), f.ClientSize.ToString (), style.ToString () + "-E4");
+ }
+
+
+
+
+ }
+
+ [Test] // bug 81969
+ public void StartPositionClosedForm ()
+ {
+ using (Form form = new Form ()) {
+ form.StartPosition = FormStartPosition.CenterParent;
+ form.Load += new EventHandler (CenterDisposedForm_Load);
+ form.Show ();
+ }
+
+ using (Form form = new Form ()) {
+ form.StartPosition = FormStartPosition.CenterScreen;
+ form.Load += new EventHandler (CenterDisposedForm_Load);
+ form.Show ();
+ }
+
+
+ using (Form form = new Form ()) {
+ form.StartPosition = FormStartPosition.Manual;
+ form.Load += new EventHandler (CenterDisposedForm_Load);
+ form.Show ();
+ }
+
+
+ using (Form form = new Form ()) {
+ form.StartPosition = FormStartPosition.WindowsDefaultBounds;
+ form.Load += new EventHandler (CenterDisposedForm_Load);
+ form.Show ();
+ }
+
+ using (Form form = new Form ()) {
+ form.StartPosition = FormStartPosition.WindowsDefaultLocation;
+ form.Load += new EventHandler (CenterDisposedForm_Load);
+ form.Show ();
+ }
+ }
+
+
+ [Test]
+ [ExpectedException (typeof (ObjectDisposedException))]
+ public void CenterToParentDisposedForm ()
+ {
+ using (FormHandleTest.ProtectedMethodsForm form = new FormHandleTest.ProtectedMethodsForm ()) {
+ form.Dispose ();
+ form.PublicCenterToParent ();
+ }
+ }
+
+ [Test]
+ [ExpectedException (typeof (ObjectDisposedException))]
+ public void CenterToScreenDisposedForm ()
+ {
+ using (FormHandleTest.ProtectedMethodsForm form = new FormHandleTest.ProtectedMethodsForm ()) {
+ form.Dispose ();
+ form.PublicCenterToScreen ();
+ }
+ }
+
+ [Test]
+ public void SetStartPositionDisposedForm ()
+ {
+ using (FormHandleTest.ProtectedMethodsForm form = new FormHandleTest.ProtectedMethodsForm ()) {
+ form.Dispose ();
+ form.StartPosition = FormStartPosition.WindowsDefaultLocation;
+ }
+ }
+
+ private void CenterDisposedForm_Load (object sender, EventArgs e)
+ {
+ ((Form) sender).Close ();
+ }
+
+ [Test]
+ public void ShowDialogCloseTest ()
+ {
+ using (TimeBombedForm f = new TimeBombedForm ()) {
+ EventLogger log = new EventLogger (f);
+ f.timer.Interval = 1000;
+ f.VisibleChanged += new EventHandler (Form_VisibleChanged1);
+ f.ShowDialog ();
+
+ Assert.AreEqual ("VisibleChanged", f.Reason, "#00");
+ Assert.AreEqual (1, log.CountEvents ("Closing"), "#01");
+#if NET_2_0
+ Assert.AreEqual (1, log.CountEvents ("FormClosing"), "#02");
+#endif
+ Assert.AreEqual (1, log.CountEvents ("HandleDestroyed"), "#03");
+
+ Assert.AreEqual (0, log.CountEvents ("Closed"), "#04");
+#if NET_2_0
+ Assert.AreEqual (0, log.CountEvents ("FormClosed"), "#05");
+#endif
+ Assert.AreEqual (0, log.CountEvents ("Disposed"), "#06");
+ }
+
+ using (TimeBombedForm f = new TimeBombedForm ()) {
+ EventLogger log = new EventLogger (f);
+ f.ShowDialog ();
+
+ Assert.AreEqual ("Bombed", f.Reason, "#A0");
+ Assert.AreEqual (1, log.CountEvents ("Closing"), "#A1");
+#if NET_2_0
+ Assert.AreEqual (1, log.CountEvents ("FormClosing"), "#A2");
+#endif
+ Assert.AreEqual (1, log.CountEvents ("HandleDestroyed"), "#A3");
+
+ Assert.AreEqual (1, log.CountEvents ("Closed"), "#A4");
+#if NET_2_0
+ Assert.AreEqual (1, log.CountEvents ("FormClosed"), "#A5");
+#endif
+ Assert.AreEqual (0, log.CountEvents ("Disposed"), "#A6");
+ }
+
+
+ using (TimeBombedForm f = new TimeBombedForm ()) {
+ EventLogger log = new EventLogger (f);
+ f.VisibleChanged += new EventHandler (Form_VisibleChanged2);
+ f.ShowDialog ();
+
+ Assert.AreEqual ("VisibleChanged", f.Reason, "#B0");
+#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");
+
+#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");
+ }
+
+
+ using (TimeBombedForm f = new TimeBombedForm ()) {
+ EventLogger log = new EventLogger (f);
+ f.DialogResult = DialogResult.None;
+ f.ShowDialog ();
+
+ Assert.AreEqual ("Bombed", f.Reason, "#C0");
+ Assert.AreEqual (1, log.CountEvents ("Closing"), "#C1");
+#if NET_2_0
+ Assert.AreEqual (1, log.CountEvents ("FormClosing"), "#C2");
+#endif
+ Assert.AreEqual (1, log.CountEvents ("HandleDestroyed"), "#C3");
+
+ Assert.AreEqual (1, log.CountEvents ("Closed"), "#C4");
+#if NET_2_0
+ Assert.AreEqual (1, log.CountEvents ("FormClosed"), "#C5");
+#endif
+ Assert.AreEqual (0, log.CountEvents ("Disposed"), "#C6");
+
+ Assert.AreEqual (DialogResult.Cancel, f.DialogResult, "#C7");
+ }
+ }
+
+ void Form_VisibleChanged1 (object sender, EventArgs e)
+ {
+ TimeBombedForm f = (TimeBombedForm) sender;
+ f.Reason = "VisibleChanged";
+ f.Visible = false;
+ }
+
+ void Form_VisibleChanged2 (object sender, EventArgs e)
+ {
+ TimeBombedForm f = (TimeBombedForm) sender;
+ f.Reason = "VisibleChanged";
+ f.Visible = false;
+ f.DialogResult = DialogResult.OK;
+ Assert.IsFalse (f.Visible);
+ }
+
+ [Test]
+ public void DialogOwnerTest ()
+ {
+ using (Form first = new Form ()) {
+ using (TimeBombedForm second = new TimeBombedForm ()) {
+ first.Show ();
+ second.Load += new EventHandler (second_Load);
+ second.ShowDialog ();
+ }
+ }
+ }
+
+ void second_Load (object sender, EventArgs e)
+ {
+ Form second = (Form) sender;
+ Assert.IsNull (second.Owner, "#1");
+ }
+
+ [Test]
+ [Category ("NotWorking")]
+ public void FormStartupPositionChangeTest ()
+ {
+ using (Form frm = new Form ())
+ {
+ frm.ShowInTaskbar = false;
+ frm.StartPosition = FormStartPosition.Manual;
+ frm.Location = new Point (0, 0);
+ frm.Show ();
+
+ // On X there seem to be pending messages in the queue aren't processed
+ // before Show returns, so process them. Otherwise the Location returns
+ // something like (5,23)
+ Application.DoEvents ();
+
+ Assert.AreEqual ("{X=0,Y=0}", frm.Location.ToString (), "#01");
+
+ frm.StartPosition = FormStartPosition.CenterParent;
+ Assert.AreEqual ("{X=0,Y=0}", frm.Location.ToString (), "#02");
+
+ frm.StartPosition = FormStartPosition.CenterScreen;
+ Assert.AreEqual ("{X=0,Y=0}", frm.Location.ToString (), "#03");
+
+ frm.StartPosition = FormStartPosition.Manual;
+ Assert.AreEqual ("{X=0,Y=0}", frm.Location.ToString (), "#04");
+
+ frm.StartPosition = FormStartPosition.WindowsDefaultBounds;
+ Assert.AreEqual ("{X=0,Y=0}", frm.Location.ToString (), "#05");
+
+ frm.StartPosition = FormStartPosition.WindowsDefaultLocation;
+ Assert.AreEqual ("{X=0,Y=0}", frm.Location.ToString (), "#06");
+ }
+ }
+
+ [Test]
+ public void FormStartupPositionTest ()
+ {
+ CreateParams cp;
+
+ using (Form frm = new Form ())
+ {
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$01");
+ Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#01");
+
+ frm.StartPosition = FormStartPosition.CenterParent;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.CenterParent, frm.StartPosition, "$01");
+ Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#02");
+
+ frm.StartPosition = FormStartPosition.CenterScreen;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.CenterScreen, frm.StartPosition, "$01");
+ Assert.AreEqual (new Point (Screen.PrimaryScreen.WorkingArea.Width / 2 - frm.Width / 2, Screen.PrimaryScreen.WorkingArea.Height / 2 - frm.Height / 2).ToString (), new Point (cp.X, cp.Y).ToString (), "#03");
+
+ frm.StartPosition = FormStartPosition.Manual;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.Manual, frm.StartPosition, "$01");
+ Assert.AreEqual (new Point (0, 0).ToString (), new Point (cp.X, cp.Y).ToString (), "#04");
+
+ frm.StartPosition = FormStartPosition.WindowsDefaultBounds;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, frm.StartPosition, "$01");
+ Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#05");
+
+ frm.StartPosition = FormStartPosition.WindowsDefaultLocation;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$01");
+ Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#06");
+
+ }
+
+
+ using (Form frm = new Form ()) {
+ frm.Location = new Point (23, 45);
+
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$A1");
+ Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#A1");
+
+ frm.StartPosition = FormStartPosition.CenterParent;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.CenterParent, frm.StartPosition, "$A2");
+ Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#A2");
+
+ frm.StartPosition = FormStartPosition.CenterScreen;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.CenterScreen, frm.StartPosition, "$A3");
+ Assert.AreEqual (new Point (Screen.PrimaryScreen.WorkingArea.Width / 2 - frm.Width / 2, Screen.PrimaryScreen.WorkingArea.Height / 2 - frm.Height / 2).ToString (), new Point (cp.X, cp.Y).ToString (), "#A3");
+
+ frm.StartPosition = FormStartPosition.Manual;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.Manual, frm.StartPosition, "$A4");
+ Assert.AreEqual (new Point (23, 45).ToString (), new Point (cp.X, cp.Y).ToString (), "#A4");
+
+ frm.StartPosition = FormStartPosition.WindowsDefaultBounds;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, frm.StartPosition, "$A5");
+ Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#A5");
+
+ frm.StartPosition = FormStartPosition.WindowsDefaultLocation;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$A6");
+ Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#A6");
+ }
+ }
+
+ [Test]
+ public void MdiFormStartupPositionTest ()
+ {
+ CreateParams cp;
+ using (Form Main = new Form ()) {
+ Main.IsMdiContainer = true;
+ Main.ShowInTaskbar = false;
+ Main.Show ();
+
+ using (Form frm = new Form ()) {
+ frm.MdiParent = Main;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$01");
+ Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#01");
+
+ frm.StartPosition = FormStartPosition.CenterParent;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.CenterParent, frm.StartPosition, "$01");
+ Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#02");
+
+ frm.StartPosition = FormStartPosition.CenterScreen;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.CenterScreen, frm.StartPosition, "$01");
+ Assert.AreEqual (new Point (0, 0).ToString (), new Point (cp.X, cp.Y).ToString (), "#03");
+
+ frm.StartPosition = FormStartPosition.Manual;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.Manual, frm.StartPosition, "$01");
+ Assert.AreEqual (new Point (0, 0).ToString (), new Point (cp.X, cp.Y).ToString (), "#04");
+
+ frm.StartPosition = FormStartPosition.WindowsDefaultBounds;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, frm.StartPosition, "$01");
+ Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#05");
+
+ frm.StartPosition = FormStartPosition.WindowsDefaultLocation;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$01");
+ Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#06");
+ frm.Show ();
+ }
+
+ using (Form frm = new Form ()) {
+ frm.MdiParent = Main;
+ frm.Location = new Point (23, 45);
+
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$A1");
+ Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#A1");
+
+ frm.StartPosition = FormStartPosition.CenterParent;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.CenterParent, frm.StartPosition, "$A2");
+ Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#A2");
+
+ frm.StartPosition = FormStartPosition.CenterScreen;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.CenterScreen, frm.StartPosition, "$A3");
+ Assert.AreEqual (new Point (0, 0).ToString (), new Point (cp.X, cp.Y).ToString (), "#A3");
+
+ frm.StartPosition = FormStartPosition.Manual;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.Manual, frm.StartPosition, "$A4");
+ Assert.AreEqual (new Point (23, 45).ToString (), new Point (cp.X, cp.Y).ToString (), "#A4");
+
+ frm.StartPosition = FormStartPosition.WindowsDefaultBounds;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, frm.StartPosition, "$A5");
+ Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#A5");
+
+ frm.StartPosition = FormStartPosition.WindowsDefaultLocation;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$A6");
+ Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#A6");
+
+ frm.Show ();
+ }
+
+ using (Form frm = new Form ()) {
+ frm.MdiParent = Main;
+ frm.Location = new Point (34, 56);
+
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$B1");
+ Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#B1");
+
+ frm.StartPosition = FormStartPosition.CenterParent;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.CenterParent, frm.StartPosition, "$B2");
+ Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#B2");
+
+ frm.StartPosition = FormStartPosition.CenterScreen;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.CenterScreen, frm.StartPosition, "$B3");
+ Assert.AreEqual (new Point (0, 0).ToString (), new Point (cp.X, cp.Y).ToString (), "#B3");
+
+ frm.StartPosition = FormStartPosition.Manual;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.Manual, frm.StartPosition, "$B4");
+ Assert.AreEqual (new Point (34, 56).ToString (), new Point (cp.X, cp.Y).ToString (), "#B4");
+
+ frm.StartPosition = FormStartPosition.WindowsDefaultBounds;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, frm.StartPosition, "$B5");
+ Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#B5");
+
+ frm.StartPosition = FormStartPosition.WindowsDefaultLocation;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$B6");
+ Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#B6");
+
+ frm.Show ();
+ }
+
+ Main.Size = new Size (600, 600);
+ using (Form frm = new Form ()) {
+ frm.MdiParent = Main;
+ frm.Location = new Point (34, 56);
+
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$C1");
+ Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#C1");
+
+ frm.StartPosition = FormStartPosition.CenterParent;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.CenterParent, frm.StartPosition, "$C2");
+ Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#C2");
+
+ frm.StartPosition = FormStartPosition.CenterScreen;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.CenterScreen, frm.StartPosition, "$C3");
+ Assert.AreEqual (new Point (Main.Controls [0].ClientSize.Width / 2 - frm.Width / 2, Main.Controls [0].ClientSize.Height / 2 - frm.Height / 2).ToString (), new Point (cp.X, cp.Y).ToString (), "#C3");
+
+ frm.StartPosition = FormStartPosition.Manual;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.Manual, frm.StartPosition, "$C4");
+ Assert.AreEqual (new Point (34, 56).ToString (), new Point (cp.X, cp.Y).ToString (), "#C4");
+
+ frm.StartPosition = FormStartPosition.WindowsDefaultBounds;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, frm.StartPosition, "$C5");
+ Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#C5");
+
+ frm.StartPosition = FormStartPosition.WindowsDefaultLocation;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$C6");
+ Assert.AreEqual (new Point (int.MinValue, int.MinValue).ToString (), new Point (cp.X, cp.Y).ToString (), "#C6");
+
+ frm.Show ();
+ }
+ }
+ }
+
+ [Test]
+ public void ParentedFormStartupPositionTest ()
+ {
+ CreateParams cp;
+ using (Form Main = new Form ()) {
+ Main.ShowInTaskbar = false;
+ Main.Show ();
+
+ using (Form frm = new Form ()) {
+ frm.TopLevel = false;
+ Main.Controls.Add (frm);
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$01");
+ Assert.AreEqual (new Point (0, 0).ToString (), new Point (cp.X, cp.Y).ToString (), "#01");
+
+ frm.StartPosition = FormStartPosition.CenterParent;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.CenterParent, frm.StartPosition, "$02");
+ Assert.AreEqual (new Point (0, 0).ToString (), new Point (cp.X, cp.Y).ToString (), "#02");
+
+ frm.StartPosition = FormStartPosition.CenterScreen;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.CenterScreen, frm.StartPosition, "$03");
+ Assert.AreEqual (new Point (0, 0).ToString (), new Point (cp.X, cp.Y).ToString (), "#03");
+
+ frm.StartPosition = FormStartPosition.Manual;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.Manual, frm.StartPosition, "$04");
+ Assert.AreEqual (new Point (0, 0).ToString (), new Point (cp.X, cp.Y).ToString (), "#04");
+
+ frm.StartPosition = FormStartPosition.WindowsDefaultBounds;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, frm.StartPosition, "$05");
+ Assert.AreEqual (new Point (0, 0).ToString (), new Point (cp.X, cp.Y).ToString (), "#05");
+
+ frm.StartPosition = FormStartPosition.WindowsDefaultLocation;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$06");
+ Assert.AreEqual (new Point (0, 0).ToString (), new Point (cp.X, cp.Y).ToString (), "#06");
+ frm.Show ();
+ }
+
+ using (Form frm = new Form ()) {
+ frm.TopLevel = false;
+ Main.Controls.Add (frm);
+ frm.Location = new Point (23, 45);
+
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$A1");
+ Assert.AreEqual (new Point (23, 45).ToString (), new Point (cp.X, cp.Y).ToString (), "#A1");
+
+ frm.StartPosition = FormStartPosition.CenterParent;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.CenterParent, frm.StartPosition, "$A2");
+ Assert.AreEqual (new Point (23, 45).ToString (), new Point (cp.X, cp.Y).ToString (), "#A2");
+
+ frm.StartPosition = FormStartPosition.CenterScreen;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.CenterScreen, frm.StartPosition, "$A3");
+ Assert.AreEqual (new Point (23, 45).ToString (), new Point (cp.X, cp.Y).ToString (), "#A3");
+
+ frm.StartPosition = FormStartPosition.Manual;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.Manual, frm.StartPosition, "$A4");
+ Assert.AreEqual (new Point (23, 45).ToString (), new Point (cp.X, cp.Y).ToString (), "#A4");
+
+ frm.StartPosition = FormStartPosition.WindowsDefaultBounds;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, frm.StartPosition, "$A5");
+ Assert.AreEqual (new Point (23, 45).ToString (), new Point (cp.X, cp.Y).ToString (), "#A5");
+
+ frm.StartPosition = FormStartPosition.WindowsDefaultLocation;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$A6");
+ Assert.AreEqual (new Point (23, 45).ToString (), new Point (cp.X, cp.Y).ToString (), "#A6");
+
+ frm.Show ();
+ }
+
+ using (Form frm = new Form ()) {
+ frm.TopLevel = false;
+ Main.Controls.Add (frm);
+ frm.Location = new Point (34, 56);
+
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$B1");
+ Assert.AreEqual (new Point (34, 56).ToString (), new Point (cp.X, cp.Y).ToString (), "#B1");
+
+ frm.StartPosition = FormStartPosition.CenterParent;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.CenterParent, frm.StartPosition, "$B2");
+ Assert.AreEqual (new Point (34, 56).ToString (), new Point (cp.X, cp.Y).ToString (), "#B2");
+
+ frm.StartPosition = FormStartPosition.CenterScreen;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.CenterScreen, frm.StartPosition, "$B3");
+ Assert.AreEqual (new Point (34, 56).ToString (), new Point (cp.X, cp.Y).ToString (), "#B3");
+
+ frm.StartPosition = FormStartPosition.Manual;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.Manual, frm.StartPosition, "$B4");
+ Assert.AreEqual (new Point (34, 56).ToString (), new Point (cp.X, cp.Y).ToString (), "#B4");
+
+ frm.StartPosition = FormStartPosition.WindowsDefaultBounds;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, frm.StartPosition, "$B5");
+ Assert.AreEqual (new Point (34, 56).ToString (), new Point (cp.X, cp.Y).ToString (), "#B5");
+
+ frm.StartPosition = FormStartPosition.WindowsDefaultLocation;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$B6");
+ Assert.AreEqual (new Point (34, 56).ToString (), new Point (cp.X, cp.Y).ToString (), "#B6");
+
+ frm.Show ();
+ }
+
+ Main.Size = new Size (600, 600);
+ using (Form frm = new Form ()) {
+ frm.TopLevel = false;
+ Main.Controls.Add (frm);
+ frm.Location = new Point (34, 56);
+
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$C1");
+ Assert.AreEqual (new Point (34, 56).ToString (), new Point (cp.X, cp.Y).ToString (), "#C1");
+
+ frm.StartPosition = FormStartPosition.CenterParent;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.CenterParent, frm.StartPosition, "$C2");
+ Assert.AreEqual (new Point (34, 56).ToString (), new Point (cp.X, cp.Y).ToString (), "#C2");
+
+ frm.StartPosition = FormStartPosition.CenterScreen;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.CenterScreen, frm.StartPosition, "$C3");
+ Assert.AreEqual (new Point (34, 56).ToString (), new Point (cp.X, cp.Y).ToString (), "#C3");
+
+ frm.StartPosition = FormStartPosition.Manual;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.Manual, frm.StartPosition, "$C4");
+ Assert.AreEqual (new Point (34, 56).ToString (), new Point (cp.X, cp.Y).ToString (), "#C4");
+
+ frm.StartPosition = FormStartPosition.WindowsDefaultBounds;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, frm.StartPosition, "$C5");
+ Assert.AreEqual (new Point (34, 56).ToString (), new Point (cp.X, cp.Y).ToString (), "#C5");
+
+ frm.StartPosition = FormStartPosition.WindowsDefaultLocation;
+ cp = TestHelper.GetCreateParams (frm);
+ Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, frm.StartPosition, "$C6");
+ Assert.AreEqual (new Point (34, 56).ToString (), new Point (cp.X, cp.Y).ToString (), "#C6");
+
+ frm.Show ();
+ }
+ }
+ }
+
+ [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 ()
+ {
+ Form form = new Form ();
+ Assert.IsFalse (form.ClientSize == form.Size);
+ }
+
+ [Test] // bug #80574
+ [Category ("NotWorking")]
+ public void FormBorderStyleTest ()
+ {
+ Form form = new Form ();
+ Rectangle boundsBeforeBorderStyleChange = form.Bounds;
+ Rectangle clientRectangleBeforeBorderStyleChange = form.ClientRectangle;
+ form.FormBorderStyle = FormBorderStyle.None;
+ Assert.AreEqual (form.Bounds, boundsBeforeBorderStyleChange, "#A1");
+ Assert.AreEqual (form.ClientRectangle, clientRectangleBeforeBorderStyleChange, "#A2");
+
+ form.Visible = true;
+ form.FormBorderStyle = FormBorderStyle.Sizable;
+ boundsBeforeBorderStyleChange = form.Bounds;
+ clientRectangleBeforeBorderStyleChange = form.ClientRectangle;
+ form.FormBorderStyle = FormBorderStyle.None;
+ Assert.IsFalse (form.Bounds == boundsBeforeBorderStyleChange, "#B1");
+ Assert.AreEqual (form.ClientRectangle, clientRectangleBeforeBorderStyleChange, "#B2");
+
+ form.Visible = false;
+ form.FormBorderStyle = FormBorderStyle.Sizable;
+ boundsBeforeBorderStyleChange = form.Bounds;
+ clientRectangleBeforeBorderStyleChange = form.ClientRectangle;
+ form.FormBorderStyle = FormBorderStyle.None;
+ Assert.IsFalse (form.Bounds == boundsBeforeBorderStyleChange, "#C1");
+ Assert.AreEqual (form.ClientRectangle, clientRectangleBeforeBorderStyleChange, "#C2");
+ }
+
+ [Test]
+ [Category ("NotWorking")]
+ public void MaximizedParentedFormTest ()
+ {
+ using (Form Main = new Form ()) {
+ Form Child = new Form ();
+ Child.TopLevel = false;
+ Main.Controls.Add (Child);
+ Main.ShowInTaskbar = false;
+ Main.Show ();
+
+ Child.WindowState = FormWindowState.Maximized;
+ Child.Visible = true;
+ // The exact negative value depends on the border with, but it should always be < 0.
+ Assert.IsTrue (Child.Location.X < 0 && Child.Location.Y < 0, "#A1");
+ }
+ }
+ [Test]
+ [Category ("NotWorking")]
+ public void ParentedFormEventTest ()
+ {
+
+ using (Form Main = new Form ()) {
+ Form Child = new Form ();
+ Child.TopLevel = false;
+ Child.Visible = true;
+ Main.ShowInTaskbar = false;
+ Main.Show ();
+
+ EventLogger log = new EventLogger (Child);
+ Assert.AreEqual (true, Child.Visible, "#A0");
+ Main.Controls.Add (Child);
+ Assert.AreEqual (true, Child.Visible, "#B0");
+ Assert.AreEqual ("ParentChanged;BindingContextChanged;Layout;VisibleChanged;BindingContextChanged;BindingContextChanged", log.EventsJoined (), "#B1");
+ }
+ }
+ [Test]
+ [NUnit.Framework.Category ("NotWorking")]
+ public void FormCreateParamsStyleTest ()
+ {
+ Form frm;
+
+ using (frm = new Form ()) {
+ Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles) TestHelper.GetCreateParams (frm).Style), "#01-Style");
+ 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");
+ }
+
+ using (frm = new Form ()) {
+ frm.AllowDrop = !frm.AllowDrop;
+ Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#02-Style");
+ 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");
+ }
+
+ using (frm = new Form ()) {
+ frm.AllowTransparency = !frm.AllowTransparency;
+ Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#03-Style");
+ 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");
+ }
+
+ using (frm = new Form ()) {
+ frm.Opacity = 0.50;
+ Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#04-Style");
+ 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");
+ }
+
+ using (frm = new Form ()) {
+ frm.TransparencyKey = Color.Cyan;
+ Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#05-Style");
+ 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");
+ }
+
+ using (frm = new Form ()) {
+ frm.CausesValidation = !frm.CausesValidation;
+ Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#06-Style");
+ 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");
+ }
+
+ using (frm = new Form ()) {
+ frm.ControlBox = !frm.ControlBox;
+ 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");
+ 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");
+ }
+
+ using (frm = new Form ()) {
+ frm.Enabled = true;
+ Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#08-Style");
+ 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");
+ }
+
+ using (frm = new Form ()) {
+ frm.FormBorderStyle = FormBorderStyle.Fixed3D;
+ 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");
+ 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");
+ }
+
+ using (frm = new Form ()) {
+ frm.FormBorderStyle = FormBorderStyle.FixedDialog;
+ 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");
+ 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");
+ }
+
+ using (frm = new Form ()) {
+ frm.FormBorderStyle = FormBorderStyle.FixedSingle;
+ 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");
+ 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");
+ }
+
+ using (frm = new Form ()) {
+ frm.FormBorderStyle = FormBorderStyle.FixedToolWindow;
+ 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");
+ 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");
+ }
+
+ using (frm = new Form ()) {
+ frm.FormBorderStyle = FormBorderStyle.None;
+ Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TABSTOP | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#14-Style");
+ 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");
+ }
+
+ using (frm = new Form ()) {
+ frm.FormBorderStyle = FormBorderStyle.Sizable;
+ Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#15-Style");
+ 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");
+ }
+
+ using (frm = new Form ()) {
+ frm.FormBorderStyle = FormBorderStyle.SizableToolWindow;
+ Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#16-Style");
+ 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");
+ }
+
+ using (frm = new Form ()) {
+ frm.HelpButton = !frm.HelpButton;
+ Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#17-Style");
+ 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");
+ }
+
+ using (frm = new Form ()) {
+ frm.Icon = null;
+ Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#18-Style");
+ 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");
+ }
+
+ using (frm = new Form ()) {
+ frm.Icon = SystemIcons.Asterisk;
+ Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#19-Style");
+ 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");
+ }
+
+ using (frm = new Form ()) {
+ frm.IsMdiContainer = !frm.IsMdiContainer;
+ Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#20-Style");
+ 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");
+ }
+
+ using (frm = new Form ()) {
+ frm.MaximizeBox = !frm.MaximizeBox;
+ 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");
+ 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");
+ }
+
+ using (frm = new Form ()) {
+ frm.MinimizeBox = !frm.MinimizeBox;
+ 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");
+ 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");
+ }
+#if NET_2_0
+ using (frm = new Form ()) {
+ frm.ShowIcon = !frm.ShowIcon;
+ Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#23-Style");
+ 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");
+ }
+#endif
+ using (frm = new Form ()) {
+ frm.ShowInTaskbar = !frm.ShowInTaskbar;
+ Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#24-Style");
+ Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#24-ExStyle");
+ }
+
+
+ using (frm = new Form ()) {
+ frm.TabStop = !frm.TabStop;
+ Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#25-Style");
+ 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");
+ }
+
+ using (frm = new Form ()) {
+ frm.TopLevel = !frm.TopLevel;
+ Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN | WindowStyles.WS_CLIPSIBLINGS | WindowStyles.WS_CHILD, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#26-Style");
+ 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");
+ }
+
+ using (frm = new Form ()) {
+ frm.Visible = !frm.Visible;
+ Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#27-Style");
+ 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");
+ }
+
+ using (frm = new Form ()) {
+ frm.ControlBox = false;
+ frm.Text = "";
+ 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), "#28-Style");
+ Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#28-ExStyle");
+ }
+ }
+
+ [Test]
+ public void FormParentedTest ()
+ {
+ using (Form frm = new Form ()) {
+ using (Form frm2 = new Form ()) {
+ frm2.TopLevel = false;
+ frm.ShowInTaskbar = false;
+ frm2.ShowInTaskbar = false;
+ frm2.Visible = true;
+ frm.Visible = true;
+
+ EventLogger log = new EventLogger (frm);
+ EventLogger log2 = new EventLogger (frm2);
+
+ frm.Controls.Add (frm2);
+
+ Assert.IsTrue (log2.EventRaised ("ParentChanged"), "#C1");
+ Assert.IsTrue (log.EventRaised ("ControlAdded"), "#P1");
+ Assert.AreSame (frm, frm2.Parent, "#02");
+ }
+ }
+ }
+
+ [Test]
+ public void FormPropertyTest ()
+ {
+ Form myform = new Form ();
+ myform.Visible = true;
+ myform.Text = "NewForm";
+ myform.Name = "FormTest";
+ Assert.IsNull (myform.ActiveMdiChild, "#2");
+ Assert.IsFalse (myform.AutoScale, "#3");
+ Assert.IsNull (myform.CancelButton, "#6");
+ Assert.IsTrue (myform.ControlBox, "#9");
+ Assert.IsTrue (myform.DesktopBounds.X > 0, "#10a");
+ Assert.IsTrue (myform.DesktopBounds.Y > 0, "#10b");
+ Assert.AreEqual (300, myform.DesktopBounds.Height, "#10c");
+ Assert.AreEqual (300, myform.DesktopBounds.Width, "#10d");
+ Assert.IsTrue (myform.DesktopLocation.X > 0, "#11a");
+ Assert.IsTrue (myform.DesktopLocation.Y > 0, "#11b");
+ Assert.AreEqual (DialogResult.None, myform.DialogResult, "#12");
+ Assert.AreEqual (FormBorderStyle.Sizable, myform.FormBorderStyle, "#13");
+ Assert.IsFalse (myform.HelpButton, "#14");
+ Assert.AreEqual ("System.Drawing.Icon", myform.Icon.GetType ().ToString (), "#15");
+ Assert.IsFalse (myform.IsMdiChild, "#16");
+ Assert.IsFalse (myform.IsMdiContainer, "#17");
+ Assert.IsFalse (myform.KeyPreview, "#18");
+ Assert.IsTrue (myform.MaximizeBox, "#19");
+ Assert.AreEqual (0, myform.MaximumSize.Height, "#20a");
+ Assert.AreEqual (0, myform.MaximumSize.Width, "#20b");
+ Assert.AreEqual (0, myform.MdiChildren.Length, "#21a");
+ Assert.AreEqual (1, myform.MdiChildren.Rank, "#21b");
+ Assert.IsFalse (myform.MdiChildren.IsSynchronized, "#21c");
+ Assert.IsNull (myform.MdiParent, "#22");
+ Assert.IsNull (myform.Menu, "#23");
+ Assert.IsNull (myform.MergedMenu, "#24");
+ Assert.IsTrue (myform.MinimizeBox, "#25");
+ Assert.AreEqual (0, myform.MinimumSize.Height, "#26a");
+ Assert.AreEqual (0, myform.MinimumSize.Width, "#26b");
+ Assert.IsTrue (myform.MinimumSize.IsEmpty, "#26c");
+ Assert.IsFalse (myform.Modal, "#27");
+ Assert.AreEqual (1, myform.Opacity, "#28");
+ Assert.AreEqual (0, myform.OwnedForms.Length, "#29a");
+ Assert.AreEqual (1, myform.OwnedForms.Rank, "#29b");
+ Assert.IsNull (myform.Owner, "#30");
+ Assert.IsTrue (myform.ShowInTaskbar, "#31");
+ Assert.AreEqual (300, myform.Size.Height, "#32a");
+ Assert.AreEqual (300, myform.Size.Width, "#32b");
+ Assert.AreEqual (SizeGripStyle.Auto, myform.SizeGripStyle, "#33");
+ Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, myform.StartPosition, "#34");
+ Assert.IsTrue (myform.TopLevel, "#35");
+ Assert.IsFalse (myform.TopMost, "#36");
+ Assert.AreEqual (Color.Empty, myform.TransparencyKey, "#37");
+ Assert.AreEqual (FormWindowState.Normal, myform.WindowState, "#38");
+ Assert.AreEqual (ImeMode.NoControl, myform.ImeMode, "#39");
+ myform.Dispose ();
+ }
+
+ [Test]
+ [Category ("NotWorking")]
+ public void ActivateTest ()
+ {
+ Form myform = new Form ();
+ myform.ShowInTaskbar = false;
+ myform.Visible = true;
+ myform.Text = "NewForm";
+ myform.Name = "FormTest";
+ myform.Activate ();
+ Assert.AreEqual (true, myform.Focus (), "#40");
+ myform.Dispose ();
+ }
+
+ [Test]
+ public void AddOwnedFormTest ()
+ {
+ Form parent = new Form ();
+ parent.ShowInTaskbar = false;
+ parent.Text = "NewParent";
+ Form ownedForm = new Form ();
+ ownedForm.ShowInTaskbar = false;
+ ownedForm.Text = "Owned Form";
+ parent.AddOwnedForm (ownedForm);
+ ownedForm.Show ();
+ Assert.AreEqual ("NewParent", ownedForm.Owner.Text, "#41");
+ ownedForm.Dispose ();
+ parent.Dispose ();
+ }
+
+ [Test] // bug #80020
+ public void IsHandleCreated ()
+ {
+ Form main = new Form ();
+ main.Name = "main";
+ main.IsMdiContainer = true;
+ main.ShowInTaskbar = false;
+ Assert.IsFalse (main.IsHandleCreated, "#1");
+
+ Form child = new Form ();
+ child.MdiParent = main;
+ child.WindowState = FormWindowState.Maximized;
+ Assert.IsFalse (main.IsHandleCreated, "#2");
+
+ child.Show ();
+ Assert.IsFalse (child.IsHandleCreated, "#3");
+ Assert.IsFalse (main.IsHandleCreated, "#4");
+
+ main.Show ();
+ Assert.IsTrue (child.IsHandleCreated, "#5");
+ Assert.IsTrue (main.IsHandleCreated, "#6");
+
+ child.Dispose ();
+ main.Dispose ();
+ }
+
+ [Test]
+ public void RemoveOwnedFormTest ()
+ {
+ Form myform = new Form ();
+ myform.ShowInTaskbar = false;
+ myform.Text = "NewForm";
+ myform.Name = "FormTest";
+ myform.RemoveOwnedForm (myform);
+ myform.Show ();
+ Assert.AreEqual (null, myform.Owner, "#44");
+ myform.Dispose ();
+ }
+
+ [Test]
+ public void SetDesktopBoundsTest ()
+ {
+ Form myform = new Form ();
+ myform.ShowInTaskbar = false;
+ myform.Visible = true;
+ myform.Text = "NewForm";
+ myform.Name = "FormTest";
+ myform.SetDesktopBounds (10, 10, 200 , 200);
+ Assert.AreEqual (200, myform.DesktopBounds.Height, "#45");
+ myform.Dispose ();
+ }
+
+ [Test]
+ public void SetDesktopLocationTest ()
+ {
+ Form myform = new Form ();
+ myform.ShowInTaskbar = false;
+ myform.Visible = true;
+ myform.Text = "NewForm";
+ myform.Name = "FormTest";
+ myform.SetDesktopLocation (10, 10);
+ Assert.AreEqual (10, myform.DesktopLocation.X, "#46");
+ myform.Dispose ();
+ }
+
+ [Test]
+ public void SetDialogResultOutOfRange ()
+ {
+ Form myform = new Form ();
+ myform.ShowInTaskbar = false;
+ try {
+ myform.DialogResult = (DialogResult) (-1);
+ Assert.Fail ("#48");
+ } catch (InvalidEnumArgumentException) {
+ }
+
+ try {
+ myform.DialogResult = (DialogResult) ((int) DialogResult.No + 1);
+ Assert.Fail ("#49");
+ } catch (InvalidEnumArgumentException) {
+ }
+ myform.Dispose ();
+ }
+
+ void myform_set_dialogresult (object sender, EventArgs e)
+ {
+ Form f = (Form)sender;
+
+ f.DialogResult = DialogResult.OK;
+ }
+
+ void myform_close (object sender, EventArgs e)
+ {
+ Form f = (Form)sender;
+
+ f.Close();
+ }
+
+ [Test]
+ public void SetDialogResult ()
+ {
+ Form myform = new Form ();
+ myform.ShowInTaskbar = false;
+ myform.Visible = true;
+
+ myform.DialogResult = DialogResult.Cancel;
+
+ Assert.IsTrue (myform.Visible, "A1");
+ Assert.IsFalse (myform.IsDisposed, "A2");
+
+ myform.Close ();
+
+ Assert.IsFalse (myform.Visible, "A3");
+ Assert.IsTrue (myform.IsDisposed, "A4");
+
+ DialogResult result;
+
+ myform = new Form ();
+ myform.ShowInTaskbar = false;
+ myform.VisibleChanged += new EventHandler (myform_set_dialogresult);
+ result = myform.ShowDialog ();
+
+ Assert.AreEqual (result, DialogResult.OK, "A5");
+ Assert.IsFalse (myform.Visible, "A6");
+ Assert.IsFalse (myform.IsDisposed, "A7");
+ myform.Dispose ();
+
+ myform = new Form ();
+ myform.ShowInTaskbar = false;
+ myform.VisibleChanged += new EventHandler (myform_close);
+ result = myform.ShowDialog ();
+
+ Assert.AreEqual (result, DialogResult.Cancel, "A8");
+ Assert.IsFalse (myform.Visible, "A9");
+ Assert.IsFalse (myform.IsDisposed, "A10");
+
+ myform.Dispose ();
+ }
+
+ [Test]
+ public void ShowDialog_Child ()
+ {
+ Form main = new Form ();
+ main.IsMdiContainer = true;
+ Form child = new Form ();
+ child.MdiParent = main;
+ try {
+ child.ShowDialog ();
+ Assert.Fail ("#1");
+ } catch (InvalidOperationException ex) {
+ // Forms that are not top level forms cannot be displayed as a
+ // modal dialog. Remove the form from any parent form before
+ // calling ShowDialog.
+ Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
+ Assert.IsNull (ex.InnerException, "#3");
+ Assert.IsNotNull (ex.Message, "#4");
+ }
+ Assert.IsNull (child.Owner, "#5");
+ child.Dispose ();
+ main.Dispose ();
+ }
+
+ [Test]
+ public void ShowDialog_Disabled ()
+ {
+ Form form = new Form ();
+ form.Enabled = false;
+ try {
+ form.ShowDialog ();
+ Assert.Fail ("#A1");
+ } catch (InvalidOperationException ex) {
+ // Forms that are not enabled cannot be displayed as a modal
+ // dialog. Set the form's enabled property to true before
+ // calling ShowDialog.
+ Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
+ Assert.IsNull (ex.InnerException, "#A3");
+ Assert.IsNotNull (ex.Message, "#A4");
+ }
+ Assert.IsNull (form.Owner, "#A5");
+ form.Dispose ();
+
+ Form main = new Form ();
+ form = new Form ();
+ form.Owner = main;
+ form.Enabled = false;
+ try {
+ form.ShowDialog ();
+ Assert.Fail ("#B1");
+ } catch (InvalidOperationException) {
+ }
+ Assert.IsNotNull (form.Owner, "#B2");
+ Assert.AreSame (main, form.Owner, "#B3");
+ form.Dispose ();
+ main.Dispose ();
+ }
+
+ [Test]
+ [Category ("NotWorking")]
+ public void ShowDialog_Owner_Circular ()
+ {
+ Form main = new Form ();
+ Form child = new Form ();
+ child.Owner = main;
+ try {
+ main.ShowDialog (child);
+ Assert.Fail ("#1");
+ } catch (ArgumentException ex) {
+ // A circular control reference has been made. A control cannot
+ // be owned or parented to itself
+ Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
+ Assert.IsNull (ex.InnerException, "#3");
+ Assert.IsNotNull (ex.Message, "#4");
+ Assert.IsNull (ex.ParamName, "#5");
+ }
+ Assert.IsNull (main.Owner, "#6");
+ main.Dispose ();
+ child.Dispose ();
+ }
+
+ [Test] // bug #80773
+ public void ShowDialog_Owner_Self ()
+ {
+ Form form = new Form ();
+ try {
+ form.ShowDialog (form);
+ Assert.Fail ("#A1");
+ } catch (ArgumentException ex) {
+ // Forms cannot own themselves or their owners
+ Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
+ Assert.IsNull (ex.InnerException, "#A3");
+ Assert.IsNotNull (ex.Message, "#A4");
+ Assert.IsNotNull (ex.ParamName, "#A5");
+ Assert.AreEqual ("owner", ex.ParamName, "#A6");
+ }
+ Assert.IsNull (form.Owner, "#A7");
+ form.Dispose ();
+
+ Form main = new Form ();
+ form = new Form ();
+ form.Owner = main;
+ try {
+ form.ShowDialog (form);
+ Assert.Fail ("#B1");
+ } catch (ArgumentException) {
+ }
+ Assert.IsNotNull (form.Owner);
+ Assert.AreSame (main, form.Owner, "#B2");
+ form.Dispose ();
+ main.Dispose ();
+ }
+
+ [Test]
+ public void ShowDialog_Visible ()
+ {
+ Form form = new Form ();
+ form.ShowInTaskbar = false;
+ form.Visible = true;
+ try {
+ form.ShowDialog ();
+ Assert.Fail ("#A1");
+ } catch (InvalidOperationException ex) {
+ // Forms that are already visible cannot be displayed as a modal
+ // dialog. Set the form's visible property to false before
+ // calling ShowDialog.
+ Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
+ Assert.IsNull (ex.InnerException, "#A3");
+ Assert.IsNotNull (ex.Message, "#A4");
+ }
+ Assert.IsNull (form.Owner, "#A5");
+ form.Dispose ();
+
+ Form main = new Form ();
+ form = new Form ();
+ form.Owner = main;
+ form.Visible = true;
+ try {
+ form.ShowDialog ();
+ Assert.Fail ("#B1");
+ } catch (InvalidOperationException) {
+ }
+ Assert.IsNotNull (form.Owner, "#B2");
+ Assert.AreSame (main, form.Owner, "#B3");
+ form.Dispose ();
+ main.Dispose ();
+ }
+
+ [Test] // bug #80604
+ public void VisibleOnLoad ()
+ {
+ MockForm form = new MockForm ();
+ form.CloseOnLoad = true;
+ Application.Run (form);
+ Assert.IsTrue (form.VisibleOnLoad, "#1");
+ form.Dispose ();
+
+ form = new MockForm ();
+ form.ShowInTaskbar = false;
+ form.Show ();
+ Assert.IsTrue (form.VisibleOnLoad, "#2");
+ form.Dispose ();
+ }
+
+ [Test] // bug #80052
+ [Category ("NotWorking")]
+ public void Location ()
+ {
+ //
+ // CenterParent
+ //
+
+ Form formA = new Form ();
+ formA.ShowInTaskbar = false;
+ formA.StartPosition = FormStartPosition.CenterParent;
+ formA.Location = new Point (151, 251);
+ formA.Show ();
+
+ Assert.AreEqual (FormStartPosition.CenterParent, formA.StartPosition, "#A1");
+ Assert.IsFalse (formA.Location.X == 151, "#A2");
+ Assert.IsFalse (formA.Location.Y == 251, "#A3");
+
+ formA.Location = new Point (311, 221);
+
+ Assert.AreEqual (FormStartPosition.CenterParent, formA.StartPosition, "#A4");
+ Assert.AreEqual (311, formA.Location.X, "#A5");
+ Assert.AreEqual (221, formA.Location.Y, "#A6");
+
+ formA.Dispose ();
+
+ //
+ // CenterScreen
+ //
+
+ Form formB = new Form ();
+ formB.ShowInTaskbar = false;
+ formB.StartPosition = FormStartPosition.CenterScreen;
+ formB.Location = new Point (151, 251);
+ formB.Show ();
+
+ Assert.AreEqual (FormStartPosition.CenterScreen, formB.StartPosition, "#B1");
+ Assert.IsFalse (formB.Location.X == 151, "#B2");
+ Assert.IsFalse (formB.Location.Y == 251, "#B3");
+
+ formB.Location = new Point (311, 221);
+
+ Assert.AreEqual (FormStartPosition.CenterScreen, formB.StartPosition, "#B4");
+ Assert.AreEqual (311, formB.Location.X, "#B5");
+ Assert.AreEqual (221, formB.Location.Y, "#B6");
+
+ formB.Dispose ();
+
+ //
+ // Manual
+ //
+
+ Form formC = new Form ();
+ formC.ShowInTaskbar = false;
+ formC.StartPosition = FormStartPosition.Manual;
+ formC.Location = new Point (151, 251);
+ formC.Show ();
+
+ Assert.AreEqual (FormStartPosition.Manual, formC.StartPosition, "#C1");
+ Assert.AreEqual (151, formC.Location.X, "#C2");
+ Assert.AreEqual (251, formC.Location.Y, "#C3");
+
+ formC.Location = new Point (311, 221);
+
+ Assert.AreEqual (FormStartPosition.Manual, formC.StartPosition, "#C4");
+ Assert.AreEqual (311, formC.Location.X, "#C5");
+ Assert.AreEqual (221, formC.Location.Y, "#C6");
+
+ formC.Dispose ();
+
+ //
+ // WindowsDefaultBounds
+ //
+
+ Form formD = new Form ();
+ formD.ShowInTaskbar = false;
+ formD.StartPosition = FormStartPosition.WindowsDefaultBounds;
+ formD.Location = new Point (151, 251);
+ formD.Show ();
+
+ Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, formD.StartPosition, "#D1");
+ Assert.IsFalse (formD.Location.X == 151, "#D2");
+ Assert.IsFalse (formD.Location.Y == 251, "#D3");
+
+ formD.Location = new Point (311, 221);
+
+ Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, formD.StartPosition, "#D4");
+ Assert.AreEqual (311, formD.Location.X, "#D5");
+ Assert.AreEqual (221, formD.Location.Y, "#D6");
+
+ formD.Dispose ();
+
+ //
+ // WindowsDefaultLocation
+ //
+
+ Form formE = new Form ();
+ formE.ShowInTaskbar = false;
+ formE.Location = new Point (151, 251);
+ formE.Show ();
+
+ Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, formE.StartPosition, "#E1");
+ Assert.IsFalse (formE.Location.X == 151, "#E2");
+ Assert.IsFalse (formE.Location.Y == 251, "#E3");
+
+ formE.Location = new Point (311, 221);
+
+ Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, formE.StartPosition, "#E4");
+ Assert.AreEqual (311, formE.Location.X, "#E5");
+ Assert.AreEqual (221, formE.Location.Y, "#E6");
+
+ formE.Dispose ();
+ }
+
+ [Test]
+ public void Opacity ()
+ {
+ Form frm;
+ using (frm = new Form ()) {
+ Assert.AreEqual (1.0f, frm.Opacity, "#01-opacity");
+ frm.Opacity = 0.50;
+ Assert.AreEqual (0.50f, frm.Opacity, "#02-opacity");
+ frm.Opacity = -0.1f;
+ Assert.AreEqual (0, frm.Opacity, "#03-opacity");
+ frm.Opacity = 1.1f;
+ Assert.AreEqual (1, frm.Opacity, "#04-opacity");
+ }
+ }
+
+ [Test]
+ public void DisposeOwnerTest ()
+ {
+ Form f1 = new Form ();
+ Form f2 = new Form ();
+
+ f2.Owner = f1;
+
+ f1.Dispose ();
+
+ Assert.IsNull (f2.Owner, "1");
+ Assert.AreEqual (0, f1.OwnedForms.Length, "2");
+ }
+
+ [Test]
+ [ExpectedException (typeof (ObjectDisposedException))]
+ public void AccessDisposedForm ()
+ {
+ Form myform = new Form ();
+ myform.ShowInTaskbar = false;
+
+ myform.Show ();
+ myform.Close (); // this should result in the form being disposed
+ myform.Show (); // and this line should result in the ODE being thrown
+ }
+
+ class MyForm : Form
+ {
+ public void DoDestroyHandle ()
+ {
+ DestroyHandle();
+ }
+ public void DoRecreateHandle ()
+ {
+ RecreateHandle();
+ }
+ }
+
+ int handle_destroyed_count;
+ void handle_destroyed (object sender, EventArgs e)
+ {
+ handle_destroyed_count++;
}
[Test]
- [NUnit.Framework.Category ("NotWorking")]
- public void ActivateTest ()
+ public void DestroyHandleTest ()
+ {
+ handle_destroyed_count = 0;
+
+ MyForm f1 = new MyForm ();
+ f1.HandleDestroyed += new EventHandler (handle_destroyed);
+ f1.Show ();
+ f1.DoDestroyHandle ();
+ Assert.AreEqual (1, handle_destroyed_count, "1");
+
+ MyForm f2 = new MyForm ();
+ f2.HandleDestroyed += new EventHandler (handle_destroyed);
+ f2.Show ();
+ f2.DoRecreateHandle ();
+ Assert.AreEqual (2, handle_destroyed_count, "2");
+
+ f1.Dispose ();
+ f2.Dispose ();
+ }
+
+ [Test]
+ public void FormClose ()
{
Form myform = new Form ();
myform.ShowInTaskbar = false;
- myform.Visible = true;
- myform.Text = "NewForm";
- myform.Name = "FormTest";
- myform.Activate ();
- Assert.AreEqual (true, myform.Focus (), "#40");
- myform.Dispose ();
+
+ Assert.IsFalse (myform.Visible, "A1");
+ Assert.IsFalse (myform.IsDisposed, "A2");
+
+ myform.Close ();
+#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, "A6");
+ Assert.IsFalse (myform.IsDisposed, "A7");
+
+ myform.Close ();
+
+ Assert.IsFalse (myform.Visible, "A8");
+ Assert.IsTrue (myform.IsDisposed, "A9");
+#endif
}
[Test]
- public void AddOwnedFormTest ()
+ public void FormClose2 ()
{
- Form parent = new Form ();
- parent.ShowInTaskbar = false;
- parent.Text = "NewParent";
- Form ownedForm = new Form ();
- ownedForm.ShowInTaskbar = false;
- ownedForm.Text = "Owned Form";
- parent.AddOwnedForm (ownedForm);
- ownedForm.Show ();
- Assert.AreEqual ("NewParent", ownedForm.Owner.Text, "#41");
- ownedForm.Dispose ();
- parent.Dispose ();
+ WMCloseWatcher f = new WMCloseWatcher ();
+ f.ShowInTaskbar = false;
+
+ f.close_count = 0;
+ 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, "A4");
+#endif
}
- [Test] // bug #80020
- [NUnit.Framework.Category ("NotWorking")]
- public void IsHandleCreated ()
+ class WMCloseWatcher : Form {
+ public int close_count;
+
+ protected override void WndProc (ref Message msg) {
+ if (msg.Msg == 0x0010 /* WM_CLOSE */) {
+ close_count ++;
+ }
+
+ base.WndProc (ref msg);
+ }
+ }
+
+ class SwallowOnActivated : Form {
+ protected override void OnActivated (EventArgs e)
+ {
+ // do nothing
+ }
+
+ protected override void OnCreateControl () {
+ base.OnCreateControl ();
+ }
+ }
+
+ class EnterTest : Button {
+ protected override void OnEnter (EventArgs e)
+ {
+ on_enter = true;
+ base.OnEnter (e);
+ }
+
+ public bool on_enter;
+ }
+
+ [Test]
+ public void OnActivateEventHandlingTest1 ()
{
- Form main = new Form ();
- main.Name = "main";
- main.IsMdiContainer = true;
- main.ShowInTaskbar = false;
- Assert.IsFalse (main.IsHandleCreated, "#1");
+// if (TestHelper.RunningOnUnix) {
+// Assert.Ignore ("Relies on form.Show() synchronously generating WM_ACTIVATE");
+// }
- Form child = new Form ();
- child.MdiParent = main;
- child.WindowState = FormWindowState.Maximized;
- Assert.IsFalse (main.IsHandleCreated, "#2");
+ SwallowOnActivated f = new SwallowOnActivated ();
- child.Show ();
- Assert.IsFalse (child.IsHandleCreated, "#3");
- Assert.IsFalse (main.IsHandleCreated, "#4");
+ f.ShowInTaskbar = false;
- main.Show ();
- Assert.IsTrue (child.IsHandleCreated, "#5");
- Assert.IsTrue (main.IsHandleCreated, "#6");
+ EnterTest c = new EnterTest ();
+ f.Controls.Add (c);
- child.Dispose ();
- main.Dispose ();
+ f.Show ();
+
+ Assert.IsTrue (c.on_enter, "1");
+
+ f.Dispose ();
+ }
+
+#if NET_2_0
+ [Test]
+ public void FormClosingEvents ()
+ {
+ // Standard Close
+ Form f = new Form ();
+ string events = string.Empty;
+
+ f.Closing += new CancelEventHandler (delegate (Object obj, CancelEventArgs e) { events += ("Closing;"); });
+ f.FormClosing += new FormClosingEventHandler (delegate (Object obj, FormClosingEventArgs e) { events += string.Format ("FormClosing [Reason:{0} - Cancel:{1}]", e.CloseReason, e.Cancel); });
+
+ f.Show ();
+ f.Close ();
+
+ Assert.AreEqual ("Closing;FormClosing [Reason:UserClosing - Cancel:False]", events, "A1");
}
[Test]
- public void RemoveOwnedFormTest ()
+ public void FormClosingEventsCancel ()
{
- Form myform = new Form ();
- myform.ShowInTaskbar = false;
- myform.Text = "NewForm";
- myform.Name = "FormTest";
- myform.RemoveOwnedForm (myform);
- myform.Show ();
- Assert.AreEqual (null, myform.Owner, "#44");
- myform.Dispose ();
+ // Shows that setting Cancel in Closing flows through to FormClosing
+ Form f = new Form ();
+ string events = string.Empty;
+
+ f.Closing += new CancelEventHandler (delegate (Object obj, CancelEventArgs e) { events += ("Closing;"); e.Cancel = true; });
+ f.FormClosing += new FormClosingEventHandler (delegate (Object obj, FormClosingEventArgs e) { events += string.Format("FormClosing [Reason:{0} - Cancel:{1}]", e.CloseReason, e.Cancel); e.Cancel = false; });
+
+ f.Show ();
+ f.Close ();
+
+ Assert.AreEqual ("Closing;FormClosing [Reason:UserClosing - Cancel:True]", events, "A1");
}
[Test]
- public void SetDesktopBoundsTest ()
+ public void FormClosedEvents ()
{
- Form myform = new Form ();
- myform.ShowInTaskbar = false;
- myform.Visible = true;
- myform.Text = "NewForm";
- myform.Name = "FormTest";
- myform.SetDesktopBounds (10, 10, 200 , 200);
- Assert.AreEqual (200, myform.DesktopBounds.Height, "#45");
- myform.Dispose ();
+ // Standard Closed
+ Form f = new Form ();
+ string events = string.Empty;
+
+ f.Closed += new EventHandler (delegate (Object obj, EventArgs e) { events += ("Closed;"); });
+ f.FormClosed += new FormClosedEventHandler (delegate (Object obj, FormClosedEventArgs e) { events += string.Format ("FormClosed [Reason:{0}]", e.CloseReason); });
+
+ f.Show ();
+ f.Close ();
+
+ Assert.AreEqual ("Closed;FormClosed [Reason:UserClosing]", events, "A1");
}
[Test]
- public void SetDesktopLocationTest ()
+ public void ShowWithOwner ()
{
- Form myform = new Form ();
- myform.ShowInTaskbar = false;
- myform.Visible = true;
- myform.Text = "NewForm";
- myform.Name = "FormTest";
- myform.SetDesktopLocation (10, 10);
- Assert.AreEqual (10, myform.DesktopLocation.X, "#46");
- myform.Dispose ();
+ Form f = new Form ();
+ Button b = new Button ();
+ f.Controls.Add (b);
+
+ Form f2 = new Form ();
+
+ f2.Show (f);
+
+ Assert.AreSame (f, f2.Owner, "A1");
+ f2.Close ();
+
+ f2 = new Form ();
+
+ f2.Show (b);
+ Assert.AreSame (f, f2.Owner, "A2");
+ f2.Close ();
+
+ Button b2 = new Button ();
+ f2 = new Form ();
+
+ f2.Show (b2);
+ Assert.AreEqual (null, f2.Owner, "A3");
+ f2.Close ();
+
+ f2 = new Form ();
+ f2.Show (null);
+ Assert.AreEqual (null, f2.Owner, "A4");
+ f2.Close ();
+
+ f.Dispose ();
}
[Test]
- public void SetDialogResultOutOfRange ()
+ [ExpectedException (typeof (InvalidOperationException))]
+ public void ShowWithOwnerIOE ()
{
- Form myform = new Form ();
- myform.ShowInTaskbar = false;
- try {
- myform.DialogResult = (DialogResult) (-1);
- Assert.Fail ("#48");
- } catch (InvalidEnumArgumentException) {
+ using (Form f = new Form ()) {
+ f.Show (f);
}
+ }
+
+ [Test] // Bug #79959, #80574, #80791
+ [Category ("NotWorking")]
+ public void BehaviorResizeOnBorderStyleChanged ()
+ {
+ // Marked NotWorking because the ClientSize is dependent on the WM.
+ // The values below match XP Luna to make sure our behavior is the same.
+ Form f = new Form ();
+ f.ShowInTaskbar = false;
+ f.Show ();
- try {
- myform.DialogResult = (DialogResult) ((int) DialogResult.No + 1);
- Assert.Fail ("#49");
- } catch (InvalidEnumArgumentException) {
- }
- myform.Dispose ();
+ Assert.AreEqual (true, f.IsHandleCreated, "A0");
+
+ Assert.AreEqual (new Size (300, 300), f.Size, "A1");
+ Assert.AreEqual (new Size (292, 266), f.ClientSize, "A2");
+
+ f.FormBorderStyle = FormBorderStyle.Fixed3D;
+ Assert.AreEqual (new Size (302, 302), f.Size, "A3");
+ Assert.AreEqual (new Size (292, 266), f.ClientSize, "A4");
+
+ f.FormBorderStyle = FormBorderStyle.FixedDialog;
+ Assert.AreEqual (new Size (298, 298), f.Size, "A5");
+ Assert.AreEqual (new Size (292, 266), f.ClientSize, "A6");
+
+ f.FormBorderStyle = FormBorderStyle.FixedSingle;
+ Assert.AreEqual (new Size (298, 298), f.Size, "A7");
+ Assert.AreEqual (new Size (292, 266), f.ClientSize, "A8");
+
+ f.FormBorderStyle = FormBorderStyle.FixedToolWindow;
+ Assert.AreEqual (new Size (298, 290), f.Size, "A9");
+ Assert.AreEqual (new Size (292, 266), f.ClientSize, "A0");
+
+ f.FormBorderStyle = FormBorderStyle.None;
+ Assert.AreEqual (new Size (292, 266), f.Size, "A11");
+ Assert.AreEqual (new Size (292, 266), f.ClientSize, "A12");
+
+ f.FormBorderStyle = FormBorderStyle.SizableToolWindow;
+ Assert.AreEqual (new Size (300, 292), f.Size, "A13");
+ Assert.AreEqual (new Size (292, 266), f.ClientSize, "A14");
+
+ f.FormBorderStyle = FormBorderStyle.Sizable;
+ Assert.AreEqual (new Size (300, 300), f.Size, "A15");
+ Assert.AreEqual (new Size (292, 266), f.ClientSize, "A16");
+
+ f.Close ();
}
- void myform_set_dialogresult (object sender, EventArgs e)
+ [Test] // Bug #80574, #80791
+ [Category ("NotWorking")]
+ public void BehaviorResizeOnBorderStyleChangedNotVisible ()
{
- Form f = (Form)sender;
+ // Marked NotWorking because the ClientSize is dependent on the WM.
+ // The values below match XP Luna to make sure our behavior is the same.
+ Form f = new Form ();
+ f.ShowInTaskbar = false;
- f.DialogResult = DialogResult.OK;
+ Assert.AreEqual (false, f.IsHandleCreated, "A0");
+
+ Assert.AreEqual (new Size (300, 300), f.Size, "A1");
+ Assert.AreEqual (new Size (292, 266), f.ClientSize, "A2");
+
+ f.FormBorderStyle = FormBorderStyle.Fixed3D;
+ Assert.AreEqual (new Size (300, 300), f.Size, "A3");
+ Assert.AreEqual (new Size (292, 266), f.ClientSize, "A4");
+
+ f.FormBorderStyle = FormBorderStyle.FixedDialog;
+ Assert.AreEqual (new Size (300, 300), f.Size, "A5");
+ Assert.AreEqual (new Size (292, 266), f.ClientSize, "A6");
+
+ f.FormBorderStyle = FormBorderStyle.FixedSingle;
+ Assert.AreEqual (new Size (300, 300), f.Size, "A7");
+ Assert.AreEqual (new Size (292, 266), f.ClientSize, "A8");
+
+ f.FormBorderStyle = FormBorderStyle.FixedToolWindow;
+ Assert.AreEqual (new Size (300, 300), f.Size, "A9");
+ Assert.AreEqual (new Size (292, 266), f.ClientSize, "A0");
+
+ f.FormBorderStyle = FormBorderStyle.None;
+ Assert.AreEqual (new Size (300, 300), f.Size, "A11");
+ Assert.AreEqual (new Size (292, 266), f.ClientSize, "A12");
+
+ f.FormBorderStyle = FormBorderStyle.SizableToolWindow;
+ Assert.AreEqual (new Size (300, 300), f.Size, "A13");
+ Assert.AreEqual (new Size (292, 266), f.ClientSize, "A14");
+
+ f.FormBorderStyle = FormBorderStyle.Sizable;
+ Assert.AreEqual (new Size (300, 300), f.Size, "A15");
+ Assert.AreEqual (new Size (292, 266), f.ClientSize, "A16");
}
- void myform_close (object sender, EventArgs e)
+ [Test] // Bug #80574, #80791
+ [Category ("NotWorking")]
+ public void MoreBehaviorResizeOnBorderStyleChangedNotVisible ()
{
- Form f = (Form)sender;
+ // Marked NotWorking because the ClientSize is dependent on the WM.
+ // The values below match XP Luna to make sure our behavior is the same.
+ Form f = new Form ();
+ f.ShowInTaskbar = false;
- f.Close();
+ f.Show ();
+ f.Hide ();
+
+ Assert.AreEqual (true, f.IsHandleCreated, "A0");
+
+ f.FormBorderStyle = FormBorderStyle.Sizable;
+ Assert.AreEqual (new Size (300, 300), f.Size, "A1");
+ Assert.AreEqual (new Size (292, 266), f.ClientSize, "A2");
+ f.FormBorderStyle = FormBorderStyle.None;
+ Assert.AreEqual (new Size (292, 266), f.Size, "A3");
+ 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 SetDialogResult ()
+ public void MinSizeIssue ()
{
- Form myform = new Form ();
- myform.ShowInTaskbar = false;
- myform.Visible = true;
+ Form f = new Form ();
- myform.DialogResult = DialogResult.Cancel;
+ f.MinimumSize = new Size (100, 100);
- Assert.IsTrue (myform.Visible, "A1");
- Assert.IsFalse (myform.IsDisposed, "A2");
+ f.Show ();
- myform.Close ();
+ Assert.AreEqual (new Size (300, 300), f.Size, "A1");
- Assert.IsFalse (myform.Visible, "A3");
- Assert.IsTrue (myform.IsDisposed, "A4");
+ f.Dispose ();
+ }
+
+ [Test] // Bug #81582
+ [Category ("NotWorking")]
+ public void GotFocusWithoutCallingOnLoadBase ()
+ {
+ NoOnLoadBaseForm f = new NoOnLoadBaseForm ();
+ f.Show ();
+ Assert.AreEqual (true, f.got_focus_called, "H1");
+ f.Dispose ();
+ }
- DialogResult result;
+ private class NoOnLoadBaseForm : Form
+ {
+ public bool got_focus_called = false;
- myform = new Form ();
- myform.ShowInTaskbar = false;
- myform.VisibleChanged += new EventHandler (myform_set_dialogresult);
- result = myform.ShowDialog ();
+ public NoOnLoadBaseForm ()
+ {
+ TreeView tv = new TreeView ();
+ tv.GotFocus += new EventHandler (tv_GotFocus);
+ Controls.Add (tv);
+ }
- Assert.AreEqual (result, DialogResult.OK, "A5");
- Assert.IsFalse (myform.Visible, "A6");
- Assert.IsFalse (myform.IsDisposed, "A7");
+ void tv_GotFocus (object sender, EventArgs e)
+ {
+ got_focus_called = true;
+ }
+
+ protected override void OnLoad (EventArgs e)
+ {
+ }
+ }
+
+ [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);
+ f.Show ();
+ Assert.IsTrue (log.EventRaised ("GotFocus"), "#01");
+ }
+ }
+
+ void f_Activated (object sender, EventArgs e)
+ {
+ //Console.WriteLine (" ACTIVATED");
+ //Console.WriteLine (Environment.StackTrace);
+ }
+
+ void tv_GotFocus (object sender, EventArgs e)
+ {
+ //Console.WriteLine (Environment.StackTrace);
+ }
- myform = new Form ();
- myform.ShowInTaskbar = false;
- myform.VisibleChanged += new EventHandler (myform_close);
- result = myform.ShowDialog ();
+ [Test] // bug #80773
+ public void DontSetOwnerOnShowDialogException ()
+ {
+ Form f = new Form ();
+ f.ShowInTaskbar = false;
+
+ try { f.ShowDialog (f); }
+ catch { }
+
+ Assert.AreEqual (null, f.Owner, "H1");
- Assert.AreEqual (result, DialogResult.Cancel, "A8");
- Assert.IsFalse (myform.Visible, "A9");
- Assert.IsFalse (myform.IsDisposed, "A10");
+ f.Dispose ();
}
- [Test] // bug #80052
- [NUnit.Framework.Category ("NotWorking")]
- public void Location ()
+ [Test]
+ public void MinimumWindowSize ()
{
- //
- // CenterParent
- //
+ Form f = new Form ();
+ f.ShowInTaskbar = false;
+ f.Show ();
+
+ f.Size = new Size (0, 0);
+ Assert.AreEqual (SystemInformation.MinimumWindowSize, f.Size);
- Form formA = new Form ();
- formA.ShowInTaskbar = false;
- formA.StartPosition = FormStartPosition.CenterParent;
- formA.Location = new Point (151, 251);
- formA.Show ();
+ f.Dispose ();
+ }
- Assert.AreEqual (FormStartPosition.CenterParent, formA.StartPosition, "#A1");
- Assert.IsFalse (formA.Location.X == 151, "#A2");
- Assert.IsFalse (formA.Location.Y == 251, "#A3");
+ [Test]
+ public void Bug82470 ()
+ {
+ Form f = new Form ();
+ f.Load += new EventHandler (Form_LoadAndHide);
+ f.Show ();
+
+ Assert.AreEqual (true, f.Visible, "A1");
+
+ f.Dispose ();
+ }
- formA.Location = new Point (311, 221);
+ private void Form_LoadAndHide (object sender, EventArgs e)
+ {
+ ((Form)sender).Visible = false;
+ }
+
+#if NET_2_0
+ [Test]
+ public void AutoSizeGrowOnly ()
+ {
+ Form f = new Form ();
+ f.ShowInTaskbar = false;
+ f.AutoSize = true;
- Assert.AreEqual (FormStartPosition.CenterParent, formA.StartPosition, "#A4");
- Assert.AreEqual (311, formA.Location.X, "#A5");
- Assert.AreEqual (221, formA.Location.Y, "#A6");
+ Button b = new Button ();
+ b.Size = new Size (200, 200);
+ b.Location = new Point (200, 200);
+ f.Controls.Add (b);
- formA.Dispose ();
+ f.Show ();
- //
- // CenterScreen
- //
+ Assert.AreEqual (new Size (403, 403), f.ClientSize, "A1");
+
+ f.Controls.Remove (b);
+ Assert.AreEqual (new Size (403, 403), f.ClientSize, "A2");
+
+ f.Dispose ();
+ }
- Form formB = new Form ();
- formB.ShowInTaskbar = false;
- formB.StartPosition = FormStartPosition.CenterScreen;
- formB.Location = new Point (151, 251);
- formB.Show ();
+ [Test]
+ public void AutoSizeReset ()
+ {
+ Form f = new Form ();
+ f.ShowInTaskbar = false;
- Assert.AreEqual (FormStartPosition.CenterScreen, formB.StartPosition, "#B1");
- Assert.IsFalse (formB.Location.X == 151, "#B2");
- Assert.IsFalse (formB.Location.Y == 251, "#B3");
+ Button b = new Button ();
+ b.Size = new Size (200, 200);
+ b.Location = new Point (200, 200);
+ f.Controls.Add (b);
- formB.Location = new Point (311, 221);
+ f.Show ();
- Assert.AreEqual (FormStartPosition.CenterScreen, formB.StartPosition, "#B4");
- Assert.AreEqual (311, formB.Location.X, "#B5");
- Assert.AreEqual (221, formB.Location.Y, "#B6");
+ Size start_size = f.ClientSize;
- formB.Dispose ();
+ f.AutoSize = true;
+ Assert.AreEqual (new Size (403, 403), f.ClientSize, "A1");
- //
- // Manual
- //
+ f.AutoSize = false;
+ Assert.AreEqual (start_size, f.ClientSize, "A2");
+ f.Close ();
+ }
- Form formC = new Form ();
- formC.ShowInTaskbar = false;
- formC.StartPosition = FormStartPosition.Manual;
- formC.Location = new Point (151, 251);
- formC.Show ();
+ [Test]
+ public void AutoSizeGrowAndShrink ()
+ {
+ Form f = new Form ();
+ f.ShowInTaskbar = false;
+ f.AutoSize = true;
+ f.AutoSizeMode = AutoSizeMode.GrowAndShrink;
- Assert.AreEqual (FormStartPosition.Manual, formC.StartPosition, "#C1");
- Assert.AreEqual (151, formC.Location.X, "#C2");
- Assert.AreEqual (251, formC.Location.Y, "#C3");
+ f.Show ();
- formC.Location = new Point (311, 221);
+ // Make sure form shrunk
+ Assert.IsTrue (f.ClientSize.Width < 150, "A1");
+ Assert.IsTrue (f.ClientSize.Height < 150, "A1-2");
- Assert.AreEqual (FormStartPosition.Manual, formC.StartPosition, "#C4");
- Assert.AreEqual (311, formC.Location.X, "#C5");
- Assert.AreEqual (221, formC.Location.Y, "#C6");
+ Button b = new Button ();
+ b.Size = new Size (200, 200);
+ b.Location = new Point (0, 0);
+ f.Controls.Add (b);
- formC.Dispose ();
+ Assert.AreEqual (new Size (203, 203), f.ClientSize, "A2");
+ f.Dispose ();
+ }
- //
- // WindowsDefaultBounds
- //
+ [Test]
+ public void GetScaledBoundsTest ()
+ {
+ if (TestHelper.RunningOnUnix)
+ Assert.Ignore ("Depends on WM decoration sizes, values correspond to windows");
- Form formD = new Form ();
- formD.ShowInTaskbar = false;
- formD.StartPosition = FormStartPosition.WindowsDefaultBounds;
- formD.Location = new Point (151, 251);
- formD.Show ();
+ ScaleForm c = new ScaleForm ();
- Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, formD.StartPosition, "#D1");
- Assert.IsFalse (formD.Location.X == 151, "#D2");
- Assert.IsFalse (formD.Location.Y == 251, "#D3");
+ Rectangle r = new Rectangle (100, 200, 300, 400);
- formD.Location = new Point (311, 221);
+ Assert.AreEqual (new Rectangle (100, 200, 584, 218), c.PublicGetScaledBounds (r, new SizeF (2f, .5f), BoundsSpecified.All), "A1");
+ Assert.AreEqual (new Rectangle (100, 200, 300, 400), c.PublicGetScaledBounds (r, new SizeF (2f, .5f), BoundsSpecified.Location), "A2");
+ Assert.AreEqual (new Rectangle (100, 200, 584, 218), c.PublicGetScaledBounds (r, new SizeF (2f, .5f), BoundsSpecified.Size), "A3");
+ Assert.AreEqual (new Rectangle (100, 200, 300, 218), c.PublicGetScaledBounds (r, new SizeF (2f, .5f), BoundsSpecified.Height), "A4");
+ Assert.AreEqual (new Rectangle (100, 200, 300, 400), c.PublicGetScaledBounds (r, new SizeF (2f, .5f), BoundsSpecified.X), "A5");
+ Assert.AreEqual (new Rectangle (100, 200, 300, 400), c.PublicGetScaledBounds (r, new SizeF (2f, .5f), BoundsSpecified.None), "A6");
- Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, formD.StartPosition, "#D4");
- Assert.AreEqual (311, formD.Location.X, "#D5");
- Assert.AreEqual (221, formD.Location.Y, "#D6");
+ Assert.AreEqual (new Rectangle (100, 200, 300, 400), c.PublicGetScaledBounds (r, new SizeF (1f, 1f), BoundsSpecified.All), "A6-2");
+ Assert.AreEqual (new Rectangle (100, 200, 584, 764), c.PublicGetScaledBounds (r, new SizeF (2f, 2f), BoundsSpecified.All), "A7");
+ Assert.AreEqual (new Rectangle (100, 200, 868, 1128), c.PublicGetScaledBounds (r, new SizeF (3f, 3f), BoundsSpecified.All), "A8");
+ Assert.AreEqual (new Rectangle (100, 200, 1152, 1492), c.PublicGetScaledBounds (r, new SizeF (4f, 4f), BoundsSpecified.All), "A9");
+ Assert.AreEqual (new Rectangle (100, 200, 158, 218), c.PublicGetScaledBounds (r, new SizeF (.5f, .5f), BoundsSpecified.All), "A10");
+ }
- formD.Dispose ();
+ [Test]
+ public void MethodScaleControl ()
+ {
+ if (TestHelper.RunningOnUnix)
+ Assert.Ignore ("Depends on WM decoration sizes, values correspond to windows");
+
+ ScaleForm f = new ScaleForm ();
+ f.Location = new Point (5, 10);
- //
- // WindowsDefaultLocation
- //
+ Assert.AreEqual (new Rectangle (5, 10, 300, 300), f.Bounds, "A1");
- Form formE = new Form ();
- formE.ShowInTaskbar = false;
- formE.Location = new Point (151, 251);
- formE.Show ();
+ f.PublicScaleControl (new SizeF (2.0f, 2.0f), BoundsSpecified.All);
+ Assert.AreEqual (new Rectangle (5, 10, 584, 564), f.Bounds, "A2");
- Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, formE.StartPosition, "#E1");
- Assert.IsFalse (formE.Location.X == 151, "#E2");
- Assert.IsFalse (formE.Location.Y == 251, "#E3");
+ f.PublicScaleControl (new SizeF (.5f, .5f), BoundsSpecified.Location);
+ Assert.AreEqual (new Rectangle (5, 10, 584, 564), f.Bounds, "A3");
- formE.Location = new Point (311, 221);
+ f.PublicScaleControl (new SizeF (.5f, .5f), BoundsSpecified.Size);
+ Assert.AreEqual (new Rectangle (5, 10, 300, 300), f.Bounds, "A4");
- Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, formE.StartPosition, "#E4");
- Assert.AreEqual (311, formE.Location.X, "#E5");
- Assert.AreEqual (221, formE.Location.Y, "#E6");
+ f.PublicScaleControl (new SizeF (2.5f, 2.5f), BoundsSpecified.Size);
+ Assert.AreEqual (new Rectangle (5, 10, 726, 696), f.Bounds, "A5");
- formE.Dispose ();
+ f.PublicScaleControl (new SizeF (.3f, .3f), BoundsSpecified.Size);
+ Assert.AreEqual (new Rectangle (5, 10, 229, 234), f.Bounds, "A6");
+
+ f.Dispose ();
}
- [Test]
- public void DisposeOwnerTest ()
+ private class ScaleForm : Form
{
- Form f1 = new Form ();
- Form f2 = new Form ();
-
- f2.Owner = f1;
+ public Rectangle PublicGetScaledBounds (Rectangle bounds, SizeF factor, BoundsSpecified specified)
+ {
+ return base.GetScaledBounds (bounds, factor, specified);
+ }
- f1.Dispose ();
+ public void PublicScaleControl (SizeF factor, BoundsSpecified specified)
+ {
+ base.ScaleControl (factor, specified);
+ }
+ }
+#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 ();
- Assert.IsNull (f2.Owner, "1");
- Assert.AreEqual (0, f1.OwnedForms.Length, "2");
+ 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]
- [ExpectedException (typeof (ObjectDisposedException))]
- public void AccessDisposedForm ()
+ public void PreferredSize ()
{
- Form myform = new Form ();
- myform.ShowInTaskbar = false;
+ 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 ();
- myform.Show ();
- myform.Close (); // this should result in the form being disposed
- myform.Show (); // and this line should result in the ODE being thrown
}
- class MyForm : Form
+ private class PreferredSizeForm : Form
{
- public void DoDestroyHandle ()
+ public void Test ()
{
- DestroyHandle();
+ Assert.AreEqual (SizeFromClientSize (new Size (503, 503)), PreferredSize, "1");
}
- public void DoRecreateHandle ()
+
+ public void Test2 ()
{
- RecreateHandle();
+ Assert.AreEqual (SizeFromClientSize (new Size (0, 0)), PreferredSize, "1");
}
}
-
- int handle_destroyed_count;
- void handle_destroyed (object sender, EventArgs e)
+ #endregion
+#endif
+ private class MockForm : Form
{
- handle_destroyed_count++;
+ public bool CloseOnLoad {
+ get { return _closeOnLoad; }
+ set { _closeOnLoad = value; }
+ }
+
+ public bool VisibleOnLoad {
+ get { return _visibleOnLoad; }
+ }
+
+ protected override void OnLoad(EventArgs e) {
+ base.OnLoad(e);
+ _visibleOnLoad = Visible;
+ if (CloseOnLoad)
+ Close ();
+ }
+
+ private bool _closeOnLoad;
+ private bool _visibleOnLoad;
}
- [Test]
- public void DestroyHandleTest ()
+ private class MockButton : Button
{
- handle_destroyed_count = 0;
+ public MockButton (bool notify)
+ {
+ _notify = notify;
+ }
- MyForm f1 = new MyForm ();
- f1.HandleDestroyed += new EventHandler (handle_destroyed);
- f1.Show ();
- f1.DoDestroyHandle ();
- Assert.AreEqual (1, handle_destroyed_count, "1");
+ public bool Notify {
+ get { return _notify; }
+ set { _notify = value; }
+ }
- f1 = new MyForm ();
- f1.HandleDestroyed += new EventHandler (handle_destroyed);
- f1.Show ();
- f1.DoRecreateHandle ();
- Assert.AreEqual (2, handle_destroyed_count, "2");
+ public bool IsDefaultButton
+ {
+ get { return base.IsDefault; }
+ set { base.IsDefault = value; }
+ }
+
+ public override void NotifyDefault (bool value)
+ {
+ if (Notify)
+ base.NotifyDefault (value);
+ }
+
+ private bool _notify;
}
- [Test]
- public void FormClose ()
+ private class ButtonControl : IButtonControl
{
- Form myform = new Form ();
- myform.ShowInTaskbar = false;
+ public DialogResult DialogResult {
+ get { return _dialogResult; }
+ set { _dialogResult = value; }
+ }
- Assert.IsFalse (myform.Visible, "A1");
- Assert.IsFalse (myform.IsDisposed, "A2");
+ public bool IsDefaultButton {
+ get { return _isDefault; }
+ }
- myform.Close ();
+ public void NotifyDefault (bool value)
+ {
+ _isDefault = value;
+ }
- Assert.IsFalse (myform.Visible, "A3");
- Assert.IsFalse (myform.IsDisposed, "A4");
+ public void PerformClick ()
+ {
+ }
- myform.Show ();
+ 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 ();
- Assert.IsTrue (myform.Visible, "A5");
- Assert.IsFalse (myform.IsDisposed, "A6");
+ f.AutoScale = false;
+ Assert.AreEqual (false, f.AutoScale, "A1");
- myform.Close ();
+ f.AutoScale = true;
+ Assert.AreEqual (true, f.AutoScale, "A2");
+
+ f.AutoScaleMode = AutoScaleMode.None;
+ Assert.AreEqual (false, f.AutoScale, "A3");
+ }
+#endif
- Assert.IsFalse (myform.Visible, "A7");
- Assert.IsTrue (myform.IsDisposed, "A8");
+ [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 FormClose2 ()
+ public void SettingIconToNull ()
{
- WMCloseWatcher f = new WMCloseWatcher ();
- f.ShowInTaskbar = false;
-
- f.close_count = 0;
- Assert.IsFalse (f.Visible, "A1");
- f.Close ();
- Assert.AreEqual (0, f.close_count, "A2");
+ 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 ();
+ }
+ }
- f.Show ();
- f.Close ();
- Assert.AreEqual (1, f.close_count, "A3");
+ public class TimeBombedForm : Form
+ {
+ public Timer timer;
+ public bool CloseOnPaint;
+ public string Reason;
+ public TimeBombedForm ()
+ {
+ timer = new Timer ();
+ timer.Interval = 500;
+ timer.Tick += new EventHandler (timer_Tick);
+ timer.Start ();
}
- class WMCloseWatcher : Form {
- public int close_count;
+ void timer_Tick (object sender, EventArgs e)
+ {
+ Reason = "Bombed";
+ Close ();
+ }
- protected override void WndProc (ref Message msg) {
- if (msg.Msg == 0x0010 /* WM_CLOSE */) {
- close_count ++;
- }
+ protected override void OnPaint (PaintEventArgs pevent)
+ {
+ base.OnPaint (pevent);
+ if (CloseOnPaint) {
+ Reason = "OnPaint";
+ Close ();
+ }
+ }
+ }
- base.WndProc (ref msg);
+ 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 ();
}
}
}