2006-12-19 Daniel Nauck <dna@mono-project.de>
[mono.git] / mcs / class / Managed.Windows.Forms / Test / System.Windows.Forms / PropertyGridTest.cs
1 //
2 // PropertyGridTest.cs: Test cases for PropertyGrid.
3 //
4 // Author:
5 //   Gert Driesen (drieseng@users.sourceforge.net)
6 //
7 // (C) 2006 Novell, Inc. (http://www.novell.com)
8 //
9
10 using System;
11 using System.Windows.Forms;
12
13 using NUnit.Framework;
14
15 namespace MonoTests.System.Windows.Forms
16 {
17         [TestFixture]
18         public class PropertyGridTest
19         {
20                 [Test]
21                 public void SelectedObject ()
22                 {
23                         PropertyGrid pg = new PropertyGrid ();
24                         Button button1 = new Button ();
25                         Assert.IsNull (pg.SelectedObject, "#A1");
26                         Assert.IsNotNull (pg.SelectedObjects, "#A2");
27                         Assert.AreEqual (0, pg.SelectedObjects.Length, "#A3");
28                         pg.SelectedObject = button1;
29                         Assert.IsNotNull (pg.SelectedObject, "#B1");
30                         Assert.AreSame (button1, pg.SelectedObject, "#B2");
31                         Assert.IsNotNull (pg.SelectedObjects, "#B3");
32                         Assert.AreEqual (1, pg.SelectedObjects.Length, "#B4");
33                         Assert.AreSame (button1, pg.SelectedObjects [0], "#B5");
34                         Assert.IsNotNull (pg.SelectedGridItem, "#B6");
35                 }
36
37                 [Test]
38                 public void SelectedObject_Null ()
39                 {
40                         PropertyGrid pg = new PropertyGrid ();
41                         Assert.IsNull (pg.SelectedObject, "#A1");
42                         Assert.IsNotNull (pg.SelectedObjects, "#A2");
43                         Assert.AreEqual (0, pg.SelectedObjects.Length, "#A3");
44                         pg.SelectedObject = null;
45                         Assert.IsNull (pg.SelectedObject, "#B1");
46                         Assert.IsNotNull (pg.SelectedObjects, "#B2");
47                         Assert.AreEqual (0, pg.SelectedObjects.Length, "#B3");
48                 }
49
50                 [Test] // bug #79615
51                 public void SelectedObjects_Multiple ()
52                 {
53                         Button button1 = new Button ();
54                         Button button2 = new Button ();
55
56                         PropertyGrid pg = new PropertyGrid ();
57                         pg.SelectedObjects = new object [] { button1, button2 };
58                         Assert.IsNotNull (pg.SelectedObjects, "#1");
59                         Assert.AreEqual (2, pg.SelectedObjects.Length, "#2");
60                         Assert.AreSame (button1, pg.SelectedObjects [0], "#3");
61                         Assert.AreSame (button2, pg.SelectedObjects [1], "#4");
62                         Assert.IsNotNull (pg.SelectedObject, "#5");
63                         Assert.AreSame (button1, pg.SelectedObject, "#6");
64                 }
65
66                 [Test]
67                 public void SelectedObjects_Null ()
68                 {
69                         PropertyGrid pg = new PropertyGrid ();
70                         Button button1 = new Button ();
71                         pg.SelectedObjects = new object [] { button1 };
72                         Assert.IsNotNull (pg.SelectedObjects, "#A1");
73                         Assert.AreEqual (1, pg.SelectedObjects.Length, "#A2");
74                         Assert.AreSame (button1, pg.SelectedObjects [0], "#A3");
75                         Assert.AreSame (button1, pg.SelectedObject, "#A4");
76                         pg.SelectedObjects = null;
77                         Assert.IsNotNull (pg.SelectedObjects, "#B1");
78                         Assert.AreEqual (0, pg.SelectedObjects.Length, "#B2");
79                         Assert.IsNull (pg.SelectedObject, "#B3");
80                 }
81
82                 [Test]
83                 [ExpectedException (typeof (ArgumentException))]
84                 public void SelectedObjects_Null_Item ()
85                 {
86                         PropertyGrid pg = new PropertyGrid ();
87                         Button button1 = new Button ();
88                         pg.SelectedObjects = new object [] { button1, null };
89                 }
90
91                 [Test]
92                 [Category ("NotWorking")]
93                 public void PropertyGrid_MergedTest ()
94                 {
95                         PropertyGrid pg = new PropertyGrid ();
96                         pg.SelectedObjects = new object[] { new Button (), new Label () };
97
98                         Assert.IsNotNull (pg.SelectedGridItem, "1");
99                         Assert.AreEqual ("Accessibility", pg.SelectedGridItem.Label, "2");
100                         Assert.AreEqual (GridItemType.Category, pg.SelectedGridItem.GridItemType, "3");
101                 }
102
103                 [Test]
104                 [Category ("NotWorking")]
105                 public void PropertyGrid_MergedRootTest ()
106                 {
107                         object[] selected_objects = new object[] { new Button (), new Label () };
108                         PropertyGrid pg = new PropertyGrid ();
109
110                         pg.SelectedObjects = selected_objects;
111
112                         Assert.IsNotNull (pg.SelectedGridItem.Parent, "1");
113                         Assert.AreEqual ("System.Object[]", pg.SelectedGridItem.Parent.Label, "2");
114                         Assert.AreEqual (GridItemType.Root, pg.SelectedGridItem.Parent.GridItemType, "3");
115
116                         Assert.AreEqual (selected_objects, pg.SelectedGridItem.Parent.Value, "4");
117
118                         Assert.IsNull (pg.SelectedGridItem.Parent.Parent, "5");
119                 }               
120
121                 class ArrayTest_object
122                 {
123                         int[] array;
124                         public ArrayTest_object ()
125                         {
126                                 array = new int[10];
127                                 for (int i = 0; i < array.Length; i ++)
128                                         array[i] = array.Length - i;
129                         }
130                         public int[] Array {
131                                 get { return array; }
132                         }
133                 }
134
135                 [Test]
136                 public void PropertyGrid_ArrayTest ()
137                 {
138                         PropertyGrid pg = new PropertyGrid ();
139
140                         pg.SelectedObject = new ArrayTest_object ();
141
142                         // selected object
143                         Assert.AreEqual ("Array", pg.SelectedGridItem.Label, "1");
144                         Assert.IsTrue (pg.SelectedGridItem.Value is Array, "2");
145                         Assert.AreEqual (10, pg.SelectedGridItem.GridItems.Count, "3");
146                         Assert.AreEqual (GridItemType.Property, pg.SelectedGridItem.GridItemType, "4");
147                 }
148
149                 [Test]
150                 public void PropertyGrid_ArrayParentTest ()
151                 {
152                         PropertyGrid pg = new PropertyGrid ();
153
154                         pg.SelectedObject = new ArrayTest_object ();
155
156                         // parent
157                         Assert.IsNotNull (pg.SelectedGridItem.Parent, "1");
158                         Assert.AreEqual ("Misc", pg.SelectedGridItem.Parent.Label, "2");
159                         Assert.AreEqual (GridItemType.Category, pg.SelectedGridItem.Parent.GridItemType, "3");
160                         Assert.AreEqual (1, pg.SelectedGridItem.Parent.GridItems.Count, "4");
161                 }
162
163                 [Test]
164                 public void PropertyGrid_ArrayRootTest ()
165                 {
166                         ArrayTest_object obj = new ArrayTest_object ();
167                         PropertyGrid pg = new PropertyGrid ();
168
169                         pg.SelectedObject = obj;
170
171                         // grandparent
172                         Assert.IsNotNull (pg.SelectedGridItem.Parent.Parent, "1");
173                         Assert.AreEqual (typeof(ArrayTest_object).ToString(), pg.SelectedGridItem.Parent.Parent.Label, "2");
174                         Assert.AreEqual (GridItemType.Root, pg.SelectedGridItem.Parent.Parent.GridItemType, "3");
175                         Assert.AreEqual (1, pg.SelectedGridItem.Parent.Parent.GridItems.Count, "4");
176                         Assert.AreEqual (obj, pg.SelectedGridItem.Parent.Parent.Value, "5");
177
178                         Assert.IsNull (pg.SelectedGridItem.Parent.Parent.Parent, "6");
179                 }
180
181                 [Test]
182                 public void PropertyGrid_ArrayChildrenTest ()
183                 {
184                         PropertyGrid pg = new PropertyGrid ();
185
186                         pg.SelectedObject = new ArrayTest_object ();
187
188                         // children
189                         Assert.AreEqual ("[0]", pg.SelectedGridItem.GridItems[0].Label, "1");
190                         Assert.AreEqual (GridItemType.Property, pg.SelectedGridItem.GridItems[0].GridItemType, "2");
191                         Assert.AreEqual (10, pg.SelectedGridItem.GridItems[0].Value, "3");
192                         Assert.AreEqual (0, pg.SelectedGridItem.GridItems[0].GridItems.Count, "4");
193                 }
194
195                 [Test]
196                 public void PropertyGrid_ItemSelectTest ()
197                 {
198                         PropertyGrid pg = new PropertyGrid ();
199
200                         pg.SelectedObject = new ArrayTest_object ();
201
202                         // the selected grid item is the "Array" property item.
203                         GridItem array_item = pg.SelectedGridItem;
204                         GridItem misc_item = array_item.Parent;
205                         GridItem root_item = misc_item.Parent;
206
207                         Assert.AreEqual (array_item, pg.SelectedGridItem, "1");
208
209                         Assert.IsTrue (misc_item.Select (), "2");
210                         Assert.AreEqual (misc_item, pg.SelectedGridItem, "3");
211
212                         Assert.IsTrue (array_item.Select (), "4");
213                         Assert.AreEqual (array_item, pg.SelectedGridItem, "5");
214
215                         Assert.IsFalse (root_item.Select (), "6");
216                         Assert.AreEqual (array_item, pg.SelectedGridItem, "7");
217                 }
218         }
219 }