BindingFlags.Public needed here as Exception.HResult is now public in .NET 4.5. This...
[mono.git] / mcs / class / Managed.Windows.Forms / Test / System.Windows.Forms / MenuTest.cs
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]
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 #if NET_2_0
37                         Assert.IsNull (mymenu.Tag);
38 #endif
39                 }
40
41                 [Test]
42                 public void GetMainMenuTest ()
43                 {
44                         MainMenu mymainmenu = new MainMenu ();
45                         MenuItem mymenuitem = new MenuItem ();
46                         mymenuitem.Text = "menu 1";
47                         mymainmenu.MenuItems.Add (mymenuitem);
48                         Assert.AreEqual (mymainmenu, mymenuitem.GetMainMenu (), "#7");
49                 }       
50                 
51                 [Test]
52                 public void CloneMenuTest ()
53                 {
54                         MainMenu mymainmenu1 = new MainMenu ();
55                         MenuItem menuitem1 = new MenuItem ();
56                         MenuItem menuitem2 = new MenuItem ();
57                         menuitem1.Text = "item1";
58                         menuitem2.Text = "item2";
59                         mymainmenu1.MenuItems.Add (menuitem1);
60                         mymainmenu1.MenuItems.Add (menuitem2);
61                         MainMenu mymainmenu2 = mymainmenu1.CloneMenu ();
62                         Assert.AreEqual ("item1", mymainmenu2.MenuItems[0].Text, "#9");
63                 }
64
65                 [Test]
66                 public void CloneWindowMenuTest ()
67                 {
68                                 MenuItem menuitem1 = new MenuItem ();
69                                 menuitem1.MdiList = true;
70                                 MenuItem menuitem2 = menuitem1.CloneMenu ();
71                                 Assert.IsTrue (menuitem2.MdiList, "#1");
72                 }
73
74                 [Test]
75                 public void GetFormTest ()
76                 {
77                         Form myform = new Form ();
78                         myform.ShowInTaskbar = false;
79                         myform.Name = "New Form";
80                         MainMenu mymainmenu1 = new MainMenu ();
81                         MenuItem menuitem1 = new MenuItem ();
82                         menuitem1.Text = "item1";
83                         mymainmenu1.MenuItems.Add (menuitem1);
84                         myform.Menu = mymainmenu1;
85                         Assert.AreEqual ("New Form", mymainmenu1.GetForm().Name, "#10");
86                         myform.Dispose ();
87                 }
88                 
89                 [Test]
90                 public void MenuItemMerge ()
91                 {
92                         MenuItem itemA2 = new MenuItem ("Exit");
93                         itemA2.MergeType = MenuMerge.MergeItems;
94                         itemA2.MergeOrder = 3;
95
96                         MenuItem itemA1 = new MenuItem ("File");
97                         itemA1.MenuItems.Add (itemA2);
98                         itemA1.MergeType = MenuMerge.MergeItems;
99
100                         MenuItem itemB2 = new MenuItem ("Open");
101                         itemB2.MergeOrder = 1;
102                         itemB2.MergeType = MenuMerge.Add;
103
104                         MenuItem itemB3 = new MenuItem ("Close");
105                         itemB3.MergeOrder = 2;
106                         itemB3.MergeType = MenuMerge.Add;
107
108                         MenuItem itemB1 = new MenuItem ("File");
109                         itemB1.MenuItems.Add (itemB2);
110                         itemB1.MenuItems.Add (itemB3);
111                         itemB1.MergeType = MenuMerge.MergeItems;
112
113                         MainMenu mainMenu1 = new MainMenu();
114                         mainMenu1.MenuItems.Add (itemA1);
115                         
116                         MainMenu mainMenu2 = new MainMenu();
117                         mainMenu2.MenuItems.Add (itemB1);
118                         
119                         mainMenu1.MergeMenu (mainMenu2);
120
121                         Assert.AreEqual ("File",  mainMenu1.MenuItems[0].Text,              "ItemMerge#1");
122                         Assert.AreEqual ("Open",  mainMenu1.MenuItems[0].MenuItems[0].Text, "ItemMerge#2");
123                         Assert.AreEqual ("Close", mainMenu1.MenuItems[0].MenuItems[1].Text, "ItemMerge#3");
124                         Assert.AreEqual ("Exit",  mainMenu1.MenuItems[0].MenuItems[2].Text, "ItemMerge#4");
125                 }
126         }
127 }