//
//
-
using System;
-using System.Windows.Forms;
using System.Drawing;
using System.Reflection;
+using System.Windows.Forms;
+
using NUnit.Framework;
namespace MonoTests.System.Windows.Forms
{
[TestFixture]
- public class MenuItemTest
+ public class MenuItemTest : TestHelper
{
[Test]
public void MenuItemDefaultValues ()
{
MenuItem mi = new MenuItem ();
- Assert.AreEqual (false, mi.BarBreak, "DefaultValues#1");
- Assert.AreEqual (false, mi.Break, "DefaultValues#2");
- Assert.AreEqual (false, mi.Checked, "DefaultValues#3");
- Assert.AreEqual (false, mi.DefaultItem, "DefaultValues#4");
- Assert.AreEqual (true, mi.Enabled, "DefaultValues#5");
+ Assert.IsFalse (mi.BarBreak, "DefaultValues#1");
+ Assert.IsFalse (mi.Break, "DefaultValues#2");
+ Assert.IsFalse (mi.Checked, "DefaultValues#3");
+ Assert.IsFalse (mi.DefaultItem, "DefaultValues#4");
+ Assert.IsTrue (mi.Enabled, "DefaultValues#5");
Assert.AreEqual (-1, mi.Index, "DefaultValues#6");
- Assert.AreEqual (false, mi.IsParent, "DefaultValues#7");
-
- // TODO: MDI is not completed yet
- //Assert.AreEqual (, mi.MdiList, "DefaultValues#8");
+ Assert.IsFalse (mi.IsParent, "DefaultValues#7");
+ Assert.IsFalse (mi.MdiList, "DefaultValues#8");
Assert.AreEqual (0, mi.MergeOrder, "DefaultValues#9");
Assert.AreEqual (MenuMerge.Add, mi.MergeType, "DefaultValues#10");
Assert.AreEqual ('\0', mi.Mnemonic, "DefaultValues#11");
- Assert.AreEqual (false, mi.OwnerDraw, "DefaultValues#12");
- Assert.AreEqual (null, mi.Parent, "DefaultValues#13");
- Assert.AreEqual (false, mi.RadioCheck, "DefaultValues#14");
+ Assert.IsFalse (mi.OwnerDraw, "DefaultValues#12");
+ Assert.IsNull (mi.Parent, "DefaultValues#13");
+ Assert.IsFalse (mi.RadioCheck, "DefaultValues#14");
Assert.AreEqual (Shortcut.None, mi.Shortcut, "DefaultValues#15");
- Assert.AreEqual (true, mi.ShowShortcut, "DefaultValues#16");
+ Assert.IsTrue (mi.ShowShortcut, "DefaultValues#16");
Assert.AreEqual (string.Empty, mi.Text, "DefaultValues#17");
- Assert.AreEqual (true, mi.Visible, "DefaultValues#18");
+ Assert.IsTrue (mi.Visible, "DefaultValues#18");
}
[Test]
MenuItem subitem2 = new MenuItem ("SubItem2");
MenuItem subitem3 = new MenuItem ("SubItem3");
- {
- mi = new MenuItem ("Item1");
- Assert.AreEqual ("Item1", mi.Text, "Constructor#1");
- }
+ mi = new MenuItem ("Item1");
+ Assert.AreEqual ("Item1", mi.Text, "Constructor#1");
- {
- mi = new MenuItem ("Item2", new MenuItem [] {subitem1,
- subitem2, subitem3});
+ mi = new MenuItem ("Item2", new MenuItem [] {subitem1,
+ subitem2, subitem3});
- Assert.AreEqual ("Item2", mi.Text, "Constructor#2");
- Assert.AreEqual (3, mi.MenuItems.Count, "Constructor#3");
+ Assert.AreEqual ("Item2", mi.Text, "Constructor#2");
+ Assert.AreEqual (3, mi.MenuItems.Count, "Constructor#3");
- Assert.AreEqual ("SubItem1", mi.MenuItems[0].Text, "Constructor#4");
- Assert.AreEqual (mi, mi.MenuItems[0].Parent, "Constructor#5");
+ Assert.AreEqual ("SubItem1", mi.MenuItems[0].Text, "Constructor#4");
+ Assert.AreEqual (mi, mi.MenuItems[0].Parent, "Constructor#5");
- Assert.AreEqual ("SubItem2", mi.MenuItems[1].Text, "Constructor#6");
- Assert.AreEqual (mi, mi.MenuItems[1].Parent, "Constructor#7");
-
- Assert.AreEqual ("SubItem3", mi.MenuItems[2].Text, "Constructor#8");
- Assert.AreEqual (mi, mi.MenuItems[2].Parent, "Constructor#9");
- }
+ Assert.AreEqual ("SubItem2", mi.MenuItems[1].Text, "Constructor#6");
+ Assert.AreEqual (mi, mi.MenuItems[1].Parent, "Constructor#7");
+ Assert.AreEqual ("SubItem3", mi.MenuItems[2].Text, "Constructor#8");
+ Assert.AreEqual (mi, mi.MenuItems[2].Parent, "Constructor#9");
}
[Test]
Assert.AreEqual ("Compare... (6)", first_menu.MenuItems[12].Text, "ItemMerge#11");
}
+ [Test]
+ public void Text ()
+ {
+ MenuItem mi1 = new MenuItem ();
+ mi1.Text = "A1";
+ Assert.AreEqual ("A1", mi1.Text, "#1");
+
+ MenuItem mi2 = new MenuItem ();
+ mi2.Text = "A2a";
+ Assert.AreEqual ("A2a", mi2.Text, "#2");
+
+ mi1.MenuItems.Add (mi2);
+ mi2.Text = "A2b";
+ Assert.AreEqual ("A2b", mi2.Text, "#3");
+
+ MainMenu mainMenu = new MainMenu ();
+ mainMenu.MenuItems.Add (mi1);
+
+ mi1.Text = "B1";
+ Assert.AreEqual ("B1", mi1.Text, "#4");
+ mi2.Text = "B2";
+ Assert.AreEqual ("B2", mi2.Text, "#5");
+
+ Form form = new Form ();
+ form.ShowInTaskbar = false;
+ form.Menu = mainMenu;
+ form.Show ();
+
+ Assert.AreEqual ("B1", mi1.Text, "#6");
+ Assert.AreEqual ("B2", mi2.Text, "#7");
+ mi1.Text = "C1";
+ Assert.AreEqual ("C1", mi1.Text, "#8");
+ mi2.Text = "C2";
+ Assert.AreEqual ("C2", mi2.Text, "#9");
+
+ form.Close ();
+ }
+
+ bool event_reached;
+ void event_test (object sender, EventArgs e)
+ {
+ event_reached = true;
+ }
+
+#if false
+ void test_drawevent (object sender, DrawItemEventArgs e)
+ {
+ event_reached = true;
+ }
+
+ void test_measureevent (object sender, MeasureItemEventArgs e)
+ {
+ event_reached = true;
+ }
+#endif
+
+ [Test]
+ public void CloneTest ()
+ {
+ MenuItem mi1, mi2;
+
+ mi1 = new MenuItem();
+ mi1.BarBreak = true;
+ mi1.Break = true;
+ mi1.Checked = true;
+ mi1.DefaultItem = true;
+ mi1.Enabled = true;
+ mi1.MergeOrder = 1;
+ mi1.MergeType = MenuMerge.Replace;
+ mi1.OwnerDraw = true;
+ mi1.RadioCheck = true;
+ mi1.Shortcut = Shortcut.Alt0;
+ mi1.ShowShortcut = true;
+ mi1.Text = "text1";
+ mi1.Visible = true;
+#if NET_2_0
+ mi1.Name = "name1";
+ mi1.Tag = "tag1";
+#endif
+
+ mi2 = mi1.CloneMenu();
+
+ Assert.AreEqual(mi1.BarBreak, mi2.BarBreak, "BarBreak #1");
+ Assert.AreEqual(mi1.Break, mi2.Break, "Break #1");
+ Assert.AreEqual(mi1.Checked, mi2.Checked, "Checked #1");
+ Assert.AreEqual(mi1.DefaultItem, mi2.DefaultItem, "DefaultItem #1");
+ Assert.AreEqual(mi1.Enabled, mi2.Enabled, "Enabled #1");
+ Assert.AreEqual(mi1.MergeOrder, mi2.MergeOrder, "MergeOrder #1");
+ Assert.AreEqual(mi1.MergeType, mi2.MergeType, "MergeType #1");
+ Assert.AreEqual(mi1.OwnerDraw, mi2.OwnerDraw, "OwnerDraw #1");
+ Assert.AreEqual(mi1.RadioCheck, mi2.RadioCheck, "RadioCheck #1");
+ Assert.AreEqual(mi1.Shortcut, mi2.Shortcut, "Shortcut #1");
+ Assert.AreEqual(mi1.ShowShortcut, mi2.ShowShortcut, "ShowShortcut #1");
+ Assert.AreEqual(mi1.Text, mi2.Text, "Text #1");
+ Assert.AreEqual(mi1.Visible, mi2.Visible, "Visible #1");
+
+#if NET_2_0
+ Assert.AreEqual(mi1.Name, mi2.Name, "Name #1");
+ Assert.AreEqual(mi1.Tag, mi2.Tag, "Tag #1");
+#endif
+
+ mi1.BarBreak = false;
+ mi1.Break = false;
+ mi1.Checked = false;
+ mi1.DefaultItem = false;
+ mi1.Enabled = false;
+ mi1.MergeOrder = 0;
+ mi1.MergeType = MenuMerge.Remove;
+ mi1.OwnerDraw = false;
+ mi1.RadioCheck = false;
+ mi1.Shortcut = Shortcut.Alt1;
+ mi1.ShowShortcut = false;
+ mi1.Text = "text2";
+ mi1.Visible = false;
+
+#if NET_2_0
+ mi1.Name = "name2";
+ mi1.Tag = "tag2";
+#endif
+
+ mi2 = mi1.CloneMenu();
+
+ Assert.AreEqual(mi1.BarBreak, mi2.BarBreak, "BarBreak #2");
+ Assert.AreEqual(mi1.Break, mi2.Break, "Break #2");
+ Assert.AreEqual(mi1.Checked, mi2.Checked, "Checked #2");
+ Assert.AreEqual(mi1.DefaultItem, mi2.DefaultItem, "DefaultItem #2");
+ Assert.AreEqual(mi1.Enabled, mi2.Enabled, "Enabled #2");
+ Assert.AreEqual(mi1.MergeOrder, mi2.MergeOrder, "MergeOrder #2");
+ Assert.AreEqual(mi1.MergeType, mi2.MergeType, "MergeType #2");
+ Assert.AreEqual(mi1.OwnerDraw, mi2.OwnerDraw, "OwnerDraw #2");
+ Assert.AreEqual(mi1.RadioCheck, mi2.RadioCheck, "RadioCheck #2");
+ Assert.AreEqual(mi1.Shortcut, mi2.Shortcut, "Shortcut #2");
+ Assert.AreEqual(mi1.ShowShortcut, mi2.ShowShortcut, "ShowShortcut #2");
+ Assert.AreEqual(mi1.Text, mi2.Text, "Text #2");
+ Assert.AreEqual(mi1.Visible, mi2.Visible, "Visible #2");
+#if NET_2_0
+ Assert.AreEqual(mi1.Name, mi2.Name, "Name #2");
+ Assert.AreEqual(mi1.Tag, mi2.Tag, "Tag #2");
+#endif
+ }
+
+ [Test]
+ public void CloneEventTest ()
+ {
+ MenuItem mi1, mi2;
+
+ event_reached = false;
+ mi1 = new MenuItem ();
+ mi1.Click += new EventHandler (event_test);
+ mi2 = mi1.CloneMenu ();
+ mi2.PerformClick ();
+ Assert.IsTrue (event_reached);
+
+ event_reached = false;
+ mi1 = new MenuItem ();
+ mi1.Select += new EventHandler (event_test);
+ mi2 = mi1.CloneMenu ();
+ mi2.PerformSelect ();
+ Assert.IsTrue (event_reached);
+
+#if no
+ // these three can't be tested because of the broken MenuItem.CloneMenu
+
+ event_reached = false;
+ mi1 = new MenuItem ();
+ mi1.Popup += new EventHandler (test_event);
+ mi2 = mi1.CloneMenu ();
+ mi2.PerformPopup ();
+ Assert.IsTrue (event_reached);
+
+ event_reached = false;
+ mi1 = new MenuItem ();
+ mi1.DrawItem += new DrawItemEventHandler (test_drawevent);
+ mi2 = mi1.CloneMenu ();
+ mi2.PerformDrawItem (new DrawItemEventArgs (null, null, Rectangle.Empty, 1, DrawItemState.None));
+ Assert.IsTrue (event_reached);
+
+ event_reached = false;
+ mi1 = new MenuItem ();
+ mi1.MeasureItem += new MeasureItemEventHandler (test_measureevent);
+ mi2 = mi1.CloneMenu ();
+ mi2.PerformMeasureItem (new MeasureItemEventArgs (null, 1));
+ Assert.IsTrue (event_reached);
+#endif
+ }
+
+ [Test]
+ public void OwnerDraw()
+ {
+ Form form = new Form();
+ form.Menu = new MainMenu();
+ form.Menu.MenuItems.Add(new NotOwnerDrawnMenuItem());
+ form.Show();
+ form.Close();
+ }
+
+ class NotOwnerDrawnMenuItem : MenuItem
+ {
+ public NotOwnerDrawnMenuItem()
+ {
+ Assert.IsFalse(OwnerDraw, "OwnerDraw");
+ }
+
+ protected override void OnMeasureItem(MeasureItemEventArgs e)
+ {
+ Assert.Fail("OnMeasureItem");
+ }
+
+ protected override void OnDrawItem(DrawItemEventArgs e)
+ {
+ Assert.Fail("OnDrawItem");
+ }
+ }
+
+ [Test]
+ public void RemoveOnDispose ()
+ {
+ MainMenu m = new MainMenu ();
+ MenuItem mi = new MenuItem ("yo");
+
+ m.MenuItems.Add (mi);
+
+ Assert.AreEqual (1, m.MenuItems.Count, "A1");
+
+ mi.Dispose ();
+
+ Assert.AreEqual (0, m.MenuItems.Count, "A2");
+ }
}
}