1 // 2 // MenuTest.cs: Test cases for Menu, MainMenu 3 // 4 // Author: 5 // Ritvik Mayank (mritvik@novell.com) 6 // 7 // (C) 2005 Novell, Inc. (http://www.novell.com) 8 // 9 10 using System; 11 using System.Windows.Forms; 12 using System.Drawing; 13 using System.Reflection; 14 using NUnit.Framework; 15 16 namespace MonoTests.System.Windows.Forms 17 { 18 [TestFixture] 19 public class MenuTest : TestHelper 20 { 21 [Test] MenuPropertyTest()22 public void MenuPropertyTest () 23 { 24 Menu mymenu = new MainMenu (); 25 Assert.AreEqual ("System.IntPtr", mymenu.Handle.GetType().FullName, "#1"); 26 Assert.AreEqual (false, mymenu.IsParent, "#2"); 27 // TODO: MDI is not completed yet 28 //Assert.AreEqual (null, mymenu.MdiListItem, "#3"); 29 Assert.AreEqual (0, mymenu.MenuItems.Count,"#4"); 30 mymenu.MenuItems.Add ("newmenu1"); 31 mymenu.MenuItems.Add ("newmenu2"); 32 Assert.AreEqual (2, mymenu.MenuItems.Count,"#5"); 33 MainMenu mymainmenu = new MainMenu (); 34 Assert.AreEqual (RightToLeft.Inherit, mymainmenu.RightToLeft,"#6"); 35 36 Assert.IsNull (mymenu.Tag); 37 } 38 39 [Test] GetMainMenuTest()40 public void GetMainMenuTest () 41 { 42 MainMenu mymainmenu = new MainMenu (); 43 MenuItem mymenuitem = new MenuItem (); 44 mymenuitem.Text = "menu 1"; 45 mymainmenu.MenuItems.Add (mymenuitem); 46 Assert.AreEqual (mymainmenu, mymenuitem.GetMainMenu (), "#7"); 47 } 48 49 [Test] CloneMenuTest()50 public void CloneMenuTest () 51 { 52 MainMenu mymainmenu1 = new MainMenu (); 53 MenuItem menuitem1 = new MenuItem (); 54 MenuItem menuitem2 = new MenuItem (); 55 menuitem1.Text = "item1"; 56 menuitem2.Text = "item2"; 57 mymainmenu1.MenuItems.Add (menuitem1); 58 mymainmenu1.MenuItems.Add (menuitem2); 59 MainMenu mymainmenu2 = mymainmenu1.CloneMenu (); 60 Assert.AreEqual ("item1", mymainmenu2.MenuItems[0].Text, "#9"); 61 } 62 63 [Test] CloneWindowMenuTest()64 public void CloneWindowMenuTest () 65 { 66 MenuItem menuitem1 = new MenuItem (); 67 menuitem1.MdiList = true; 68 MenuItem menuitem2 = menuitem1.CloneMenu (); 69 Assert.IsTrue (menuitem2.MdiList, "#1"); 70 } 71 72 [Test] GetFormTest()73 public void GetFormTest () 74 { 75 Form myform = new Form (); 76 myform.ShowInTaskbar = false; 77 myform.Name = "New Form"; 78 MainMenu mymainmenu1 = new MainMenu (); 79 MenuItem menuitem1 = new MenuItem (); 80 menuitem1.Text = "item1"; 81 mymainmenu1.MenuItems.Add (menuitem1); 82 myform.Menu = mymainmenu1; 83 Assert.AreEqual ("New Form", mymainmenu1.GetForm().Name, "#10"); 84 myform.Dispose (); 85 } 86 87 [Test] MenuItemMerge()88 public void MenuItemMerge () 89 { 90 MenuItem itemA2 = new MenuItem ("Exit"); 91 itemA2.MergeType = MenuMerge.MergeItems; 92 itemA2.MergeOrder = 3; 93 94 MenuItem itemA1 = new MenuItem ("File"); 95 itemA1.MenuItems.Add (itemA2); 96 itemA1.MergeType = MenuMerge.MergeItems; 97 98 MenuItem itemB2 = new MenuItem ("Open"); 99 itemB2.MergeOrder = 1; 100 itemB2.MergeType = MenuMerge.Add; 101 102 MenuItem itemB3 = new MenuItem ("Close"); 103 itemB3.MergeOrder = 2; 104 itemB3.MergeType = MenuMerge.Add; 105 106 MenuItem itemB1 = new MenuItem ("File"); 107 itemB1.MenuItems.Add (itemB2); 108 itemB1.MenuItems.Add (itemB3); 109 itemB1.MergeType = MenuMerge.MergeItems; 110 111 MainMenu mainMenu1 = new MainMenu(); 112 mainMenu1.MenuItems.Add (itemA1); 113 114 MainMenu mainMenu2 = new MainMenu(); 115 mainMenu2.MenuItems.Add (itemB1); 116 117 mainMenu1.MergeMenu (mainMenu2); 118 119 Assert.AreEqual ("File", mainMenu1.MenuItems[0].Text, "ItemMerge#1"); 120 Assert.AreEqual ("Open", mainMenu1.MenuItems[0].MenuItems[0].Text, "ItemMerge#2"); 121 Assert.AreEqual ("Close", mainMenu1.MenuItems[0].MenuItems[1].Text, "ItemMerge#3"); 122 Assert.AreEqual ("Exit", mainMenu1.MenuItems[0].MenuItems[2].Text, "ItemMerge#4"); 123 } 124 125 [Test] // Xamarin bug 3418 TestMenuItemsDispose()126 public void TestMenuItemsDispose () 127 { 128 Menu menu = new MainMenu (); 129 menu.MenuItems.Add (new MenuItem ()); 130 menu.Dispose (); 131 try { 132 MenuItem item = menu.MenuItems[0]; 133 Assert.Fail (); 134 } catch (ArgumentOutOfRangeException) { 135 } 136 } 137 } 138 } 139