| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452 |
- //
- // PropertyGridTest.cs: Test cases for PropertyGrid.
- //
- // Author:
- // Gert Driesen ([email protected])
- //
- // (C) 2006 Novell, Inc. (http://www.novell.com)
- //
- using System;
- using System.ComponentModel;
- using System.Globalization;
- using System.Windows.Forms;
- using CategoryAttribute = NUnit.Framework.CategoryAttribute;
- using NUnit.Framework;
- namespace MonoTests.System.Windows.Forms
- {
- [TestFixture]
- public class PropertyGridTest : TestHelper
- {
- [Test]
- public void PropertySort_Valid ()
- {
- PropertyGrid pg;
- EventLogger eventLogger;
- pg = new PropertyGrid ();
- eventLogger = new EventLogger (pg);
- Assert.AreEqual (PropertySort.CategorizedAlphabetical, pg.PropertySort, "#A1");
- Assert.AreEqual (0, eventLogger.EventsRaised, "#A2");
- pg.PropertySort = PropertySort.Alphabetical;
- Assert.AreEqual (PropertySort.Alphabetical, pg.PropertySort, "#A3");
- #if NET_2_0
- Assert.AreEqual (1, eventLogger.EventsRaised, "#A4");
- Assert.AreEqual (1, eventLogger.CountEvents ("PropertySortChanged"), "#A5");
- #else
- Assert.AreEqual (0, eventLogger.EventsRaised, "#A4");
- #endif
- pg.PropertySort = PropertySort.NoSort;
- Assert.AreEqual (PropertySort.NoSort, pg.PropertySort, "#A6");
- #if NET_2_0
- Assert.AreEqual (2, eventLogger.EventsRaised, "#A7");
- Assert.AreEqual (2, eventLogger.CountEvents ("PropertySortChanged"), "#A8");
- #else
- Assert.AreEqual (0, eventLogger.EventsRaised, "#A7");
- #endif
- pg.PropertySort = PropertySort.NoSort;
- Assert.AreEqual (PropertySort.NoSort, pg.PropertySort, "#A9");
- #if NET_2_0
- Assert.AreEqual (2, eventLogger.EventsRaised, "#A10");
- Assert.AreEqual (2, eventLogger.CountEvents ("PropertySortChanged"), "#A11");
- #else
- Assert.AreEqual (0, eventLogger.EventsRaised, "#A10");
- #endif
- pg.PropertySort = PropertySort.CategorizedAlphabetical;
- Assert.AreEqual (PropertySort.CategorizedAlphabetical, pg.PropertySort, "#A12");
- #if NET_2_0
- Assert.AreEqual (3, eventLogger.EventsRaised, "#A13");
- Assert.AreEqual (3, eventLogger.CountEvents ("PropertySortChanged"), "#A14");
- #else
- Assert.AreEqual (0, eventLogger.EventsRaised, "#A13");
- #endif
- pg.PropertySort = PropertySort.Categorized;
- Assert.AreEqual (PropertySort.Categorized, pg.PropertySort, "#A14");
- #if NET_2_0
- Assert.AreEqual (3, eventLogger.EventsRaised, "#A15");
- Assert.AreEqual (3, eventLogger.CountEvents ("PropertySortChanged"), "#A16");
- #else
- Assert.AreEqual (0, eventLogger.EventsRaised, "#A17");
- #endif
- pg = new PropertyGrid ();
- eventLogger = new EventLogger (pg);
- pg.SelectedObject = new Button ();
- Assert.AreEqual (PropertySort.CategorizedAlphabetical, pg.PropertySort, "#B1");
- Assert.AreEqual (0, eventLogger.CountEvents ("PropertySortChanged"), "#B2");
- pg.PropertySort = PropertySort.Alphabetical;
- Assert.AreEqual (PropertySort.Alphabetical, pg.PropertySort, "#B3");
- #if NET_2_0
- Assert.AreEqual (1, eventLogger.CountEvents ("PropertySortChanged"), "#B4");
- #else
- Assert.AreEqual (0, eventLogger.CountEvents ("PropertySortChanged"), "#B4");
- #endif
- pg.PropertySort = PropertySort.NoSort;
- Assert.AreEqual (PropertySort.NoSort, pg.PropertySort, "#B5");
- #if NET_2_0
- Assert.AreEqual (2, eventLogger.CountEvents ("PropertySortChanged"), "#B6");
- #else
- Assert.AreEqual (0, eventLogger.CountEvents ("PropertySortChanged"), "#B6");
- #endif
- pg.PropertySort = PropertySort.CategorizedAlphabetical;
- Assert.AreEqual (PropertySort.CategorizedAlphabetical, pg.PropertySort, "#B7");
- #if NET_2_0
- Assert.AreEqual (3, eventLogger.CountEvents ("PropertySortChanged"), "#B8");
- #else
- Assert.AreEqual (0, eventLogger.CountEvents ("PropertySortChanged"), "#B8");
- #endif
- pg.PropertySort = PropertySort.CategorizedAlphabetical;
- Assert.AreEqual (PropertySort.CategorizedAlphabetical, pg.PropertySort, "#B9");
- #if NET_2_0
- Assert.AreEqual (3, eventLogger.CountEvents ("PropertySortChanged"), "#B10");
- #else
- Assert.AreEqual (0, eventLogger.CountEvents ("PropertySortChanged"), "#B10");
- #endif
- pg.SelectedObject = null;
- Assert.AreEqual (PropertySort.CategorizedAlphabetical, pg.PropertySort, "#C1");
- #if NET_2_0
- Assert.AreEqual (3, eventLogger.CountEvents ("PropertySortChanged"), "#C2");
- #else
- Assert.AreEqual (0, eventLogger.CountEvents ("PropertySortChanged"), "#C2");
- #endif
- pg.PropertySort = PropertySort.Alphabetical;
- Assert.AreEqual (PropertySort.Alphabetical, pg.PropertySort, "#C3");
- #if NET_2_0
- Assert.AreEqual (4, eventLogger.CountEvents ("PropertySortChanged"), "#C4");
- #else
- Assert.AreEqual (0, eventLogger.CountEvents ("PropertySortChanged"), "#C4");
- #endif
- pg.PropertySort = PropertySort.NoSort;
- Assert.AreEqual (PropertySort.NoSort, pg.PropertySort, "#C5");
- #if NET_2_0
- Assert.AreEqual (5, eventLogger.CountEvents ("PropertySortChanged"), "#C6");
- #else
- Assert.AreEqual (0, eventLogger.CountEvents ("PropertySortChanged"), "#C6");
- #endif
- pg.SelectedObject = new Button ();
- Form form = new Form ();
- form.ShowInTaskbar = false;
- form.Controls.Add (pg);
- form.Show ();
- Assert.AreEqual (PropertySort.NoSort, pg.PropertySort, "#D1");
- #if NET_2_0
- Assert.AreEqual (5, eventLogger.CountEvents ("PropertySortChanged"), "#D2");
- #else
- Assert.AreEqual (0, eventLogger.CountEvents ("PropertySortChanged"), "#D2");
- #endif
- pg.PropertySort = PropertySort.Alphabetical;
- Assert.AreEqual (PropertySort.Alphabetical, pg.PropertySort, "#D3");
- #if NET_2_0
- Assert.AreEqual (6, eventLogger.CountEvents ("PropertySortChanged"), "#D4");
- #else
- Assert.AreEqual (0, eventLogger.CountEvents ("PropertySortChanged"), "#D4");
- #endif
- pg.PropertySort = PropertySort.Categorized;
- Assert.AreEqual (PropertySort.Categorized, pg.PropertySort, "#D5");
- #if NET_2_0
- Assert.AreEqual (7, eventLogger.CountEvents ("PropertySortChanged"), "#D6");
- #else
- Assert.AreEqual (0, eventLogger.CountEvents ("PropertySortChanged"), "#D6");
- #endif
- pg.PropertySort = PropertySort.CategorizedAlphabetical;
- Assert.AreEqual (PropertySort.CategorizedAlphabetical, pg.PropertySort, "#D7");
- #if NET_2_0
- Assert.AreEqual (7, eventLogger.CountEvents ("PropertySortChanged"), "#D8");
- #else
- Assert.AreEqual (0, eventLogger.CountEvents ("PropertySortChanged"), "#D8");
- #endif
- form.Dispose ();
- }
- [Test]
- public void PropertySort_Invalid ()
- {
- PropertyGrid pg = new PropertyGrid ();
- #if NET_2_0
- EventLogger eventLogger = new EventLogger (pg);
- try {
- pg.PropertySort = (PropertySort) 666;
- Assert.Fail ("#1");
- } catch (InvalidEnumArgumentException ex) {
- // The value of argument 'value' (666) is invalid
- // for Enum type 'PropertySort'
- Assert.AreEqual (typeof (InvalidEnumArgumentException), ex.GetType (), "#2");
- Assert.IsNull (ex.InnerException, "#3");
- Assert.IsNotNull (ex.Message, "#4");
- Assert.IsTrue (ex.Message.IndexOf ("'value'") != -1, "#5");
- Assert.IsTrue (ex.Message.IndexOf ("(" + 666.ToString (CultureInfo.CurrentCulture) + ")") != -1, "#6");
- Assert.IsTrue (ex.Message.IndexOf ("'PropertySort'") != -1, "#7");
- Assert.IsNotNull (ex.ParamName, "#8");
- Assert.AreEqual ("value", ex.ParamName, "#9");
- Assert.AreEqual (0, eventLogger.EventsRaised, "#10");
- }
- #else
- pg.PropertySort = (PropertySort) 666;
- Assert.AreEqual ((PropertySort) 666, pg.PropertySort);
- #endif
- }
- [Test]
- public void SelectedObject ()
- {
- PropertyGrid pg = new PropertyGrid ();
- Button button1 = new Button ();
- Assert.IsNull (pg.SelectedObject, "#A1");
- Assert.IsNotNull (pg.SelectedObjects, "#A2");
- Assert.AreEqual (0, pg.SelectedObjects.Length, "#A3");
- pg.SelectedObject = button1;
- Assert.IsNotNull (pg.SelectedObject, "#B1");
- Assert.AreSame (button1, pg.SelectedObject, "#B2");
- Assert.IsNotNull (pg.SelectedObjects, "#B3");
- Assert.AreEqual (1, pg.SelectedObjects.Length, "#B4");
- Assert.AreSame (button1, pg.SelectedObjects [0], "#B5");
- Assert.IsNotNull (pg.SelectedGridItem, "#B6");
- }
- [Test] // bug #81796
- public void SelectedObject_NoProperties ()
- {
- PropertyGrid propertyGrid = new PropertyGrid ();
- propertyGrid.SelectedObject = new Button ();
- propertyGrid.SelectedObject = new object ();
- propertyGrid.SelectedObject = new Button ();
- }
- [Test]
- public void SelectedObject_Null ()
- {
- PropertyGrid pg = new PropertyGrid ();
- Assert.IsNull (pg.SelectedObject, "#A1");
- Assert.IsNotNull (pg.SelectedObjects, "#A2");
- Assert.AreEqual (0, pg.SelectedObjects.Length, "#A3");
- pg.SelectedObject = null;
- Assert.IsNull (pg.SelectedObject, "#B1");
- Assert.IsNotNull (pg.SelectedObjects, "#B2");
- Assert.AreEqual (0, pg.SelectedObjects.Length, "#B3");
- }
- [Test]
- public void SelectedObject_Null2 ()
- {
- PropertyGrid pg = new PropertyGrid ();
- EventLogger log = new EventLogger (pg);
-
- Assert.IsNull (pg.SelectedObject, "#A1");
- Assert.IsNotNull (pg.SelectedObjects, "#A2");
- Assert.AreEqual (0, pg.SelectedObjects.Length, "#A3");
- Assert.IsNull (pg.SelectedGridItem, "A4");
-
- pg.SelectedObject = new TextBox ();
- Assert.IsNotNull (pg.SelectedObject, "#B1");
- Assert.IsNotNull (pg.SelectedObjects, "#B2");
- Assert.AreEqual (1, pg.SelectedObjects.Length, "#B3");
- Assert.IsNotNull (pg.SelectedGridItem, "B4");
- Assert.AreEqual (1, log.EventsRaised, "B5");
- Assert.AreEqual ("SelectedObjectsChanged", log.EventsJoined (";"), "B6");
- pg.SelectedObject = null;
- Assert.IsNull (pg.SelectedObject, "#C1");
- Assert.IsNotNull (pg.SelectedObjects, "#C2");
- Assert.AreEqual (0, pg.SelectedObjects.Length, "#C3");
- Assert.IsNull (pg.SelectedGridItem, "C4");
- Assert.AreEqual (2, log.EventsRaised, "C5");
- Assert.AreEqual ("SelectedObjectsChanged;SelectedObjectsChanged", log.EventsJoined (";"), "C6");
- }
- [Test]
- public void SelectedGridItem_Null ()
- {
- PropertyGrid pg = new PropertyGrid ();
- pg.SelectedObject = new TextBox ();
- Assert.IsNotNull (pg.SelectedGridItem, "#1");
- try {
- pg.SelectedGridItem = null;
- Assert.Fail ("#2");
- } catch (ArgumentException ex) {
- // GridItem specified to PropertyGrid.SelectedGridItem must be
- // a valid GridItem
- Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#3");
- Assert.IsNull (ex.InnerException, "#4");
- Assert.IsNotNull (ex.Message, "#5");
- Assert.IsNull (ex.ParamName, "#6");
- }
- }
- [Test] // bug #79615
- public void SelectedObjects_Multiple ()
- {
- Button button1 = new Button ();
- Button button2 = new Button ();
- PropertyGrid pg = new PropertyGrid ();
- pg.SelectedObjects = new object [] { button1, button2 };
- Assert.IsNotNull (pg.SelectedObjects, "#1");
- Assert.AreEqual (2, pg.SelectedObjects.Length, "#2");
- Assert.AreSame (button1, pg.SelectedObjects [0], "#3");
- Assert.AreSame (button2, pg.SelectedObjects [1], "#4");
- Assert.IsNotNull (pg.SelectedObject, "#5");
- Assert.AreSame (button1, pg.SelectedObject, "#6");
- }
- [Test]
- public void SelectedObjects_Null ()
- {
- PropertyGrid pg = new PropertyGrid ();
- Button button1 = new Button ();
- pg.SelectedObjects = new object [] { button1 };
- Assert.IsNotNull (pg.SelectedObjects, "#A1");
- Assert.AreEqual (1, pg.SelectedObjects.Length, "#A2");
- Assert.AreSame (button1, pg.SelectedObjects [0], "#A3");
- Assert.AreSame (button1, pg.SelectedObject, "#A4");
- pg.SelectedObjects = null;
- Assert.IsNotNull (pg.SelectedObjects, "#B1");
- Assert.AreEqual (0, pg.SelectedObjects.Length, "#B2");
- Assert.IsNull (pg.SelectedObject, "#B3");
- }
- [Test]
- [ExpectedException (typeof (ArgumentException))]
- public void SelectedObjects_Null_Item ()
- {
- PropertyGrid pg = new PropertyGrid ();
- Button button1 = new Button ();
- pg.SelectedObjects = new object [] { button1, null };
- }
- [Test]
- [Category ("NotWorking")]
- public void PropertyGrid_MergedTest ()
- {
- PropertyGrid pg = new PropertyGrid ();
- pg.SelectedObjects = new object[] { new Button (), new Label () };
- Assert.IsNotNull (pg.SelectedGridItem, "1");
- Assert.AreEqual ("Accessibility", pg.SelectedGridItem.Label, "2");
- Assert.AreEqual (GridItemType.Category, pg.SelectedGridItem.GridItemType, "3");
- }
- [Test]
- [Category ("NotWorking")]
- public void PropertyGrid_MergedRootTest ()
- {
- object[] selected_objects = new object[] { new Button (), new Label () };
- PropertyGrid pg = new PropertyGrid ();
- pg.SelectedObjects = selected_objects;
- Assert.IsNotNull (pg.SelectedGridItem.Parent, "1");
- Assert.AreEqual ("System.Object[]", pg.SelectedGridItem.Parent.Label, "2");
- Assert.AreEqual (GridItemType.Root, pg.SelectedGridItem.Parent.GridItemType, "3");
- Assert.AreEqual (selected_objects, pg.SelectedGridItem.Parent.Value, "4");
- Assert.IsNull (pg.SelectedGridItem.Parent.Parent, "5");
- }
- class ArrayTest_object
- {
- int[] array;
- public ArrayTest_object ()
- {
- array = new int[10];
- for (int i = 0; i < array.Length; i ++)
- array[i] = array.Length - i;
- }
- public int[] Array {
- get { return array; }
- }
- }
- [Test]
- public void PropertyGrid_ArrayTest ()
- {
- PropertyGrid pg = new PropertyGrid ();
- pg.SelectedObject = new ArrayTest_object ();
- // selected object
- Assert.AreEqual ("Array", pg.SelectedGridItem.Label, "1");
- Assert.IsTrue (pg.SelectedGridItem.Value is Array, "2");
- Assert.AreEqual (10, pg.SelectedGridItem.GridItems.Count, "3");
- Assert.AreEqual (GridItemType.Property, pg.SelectedGridItem.GridItemType, "4");
- }
- [Test]
- public void PropertyGrid_ArrayParentTest ()
- {
- PropertyGrid pg = new PropertyGrid ();
- pg.SelectedObject = new ArrayTest_object ();
- // parent
- Assert.IsNotNull (pg.SelectedGridItem.Parent, "1");
- Assert.AreEqual ("Misc", pg.SelectedGridItem.Parent.Label, "2");
- Assert.AreEqual (GridItemType.Category, pg.SelectedGridItem.Parent.GridItemType, "3");
- Assert.AreEqual (1, pg.SelectedGridItem.Parent.GridItems.Count, "4");
- }
- [Test]
- public void PropertyGrid_ArrayRootTest ()
- {
- ArrayTest_object obj = new ArrayTest_object ();
- PropertyGrid pg = new PropertyGrid ();
- pg.SelectedObject = obj;
- // grandparent
- Assert.IsNotNull (pg.SelectedGridItem.Parent.Parent, "1");
- Assert.AreEqual (typeof(ArrayTest_object).ToString(), pg.SelectedGridItem.Parent.Parent.Label, "2");
- Assert.AreEqual (GridItemType.Root, pg.SelectedGridItem.Parent.Parent.GridItemType, "3");
- Assert.AreEqual (1, pg.SelectedGridItem.Parent.Parent.GridItems.Count, "4");
- Assert.AreEqual (obj, pg.SelectedGridItem.Parent.Parent.Value, "5");
- Assert.IsNull (pg.SelectedGridItem.Parent.Parent.Parent, "6");
- }
- [Test]
- public void PropertyGrid_ArrayChildrenTest ()
- {
- PropertyGrid pg = new PropertyGrid ();
- pg.SelectedObject = new ArrayTest_object ();
- // children
- Assert.AreEqual ("[0]", pg.SelectedGridItem.GridItems[0].Label, "1");
- Assert.AreEqual (GridItemType.Property, pg.SelectedGridItem.GridItems[0].GridItemType, "2");
- Assert.AreEqual (10, pg.SelectedGridItem.GridItems[0].Value, "3");
- Assert.AreEqual (0, pg.SelectedGridItem.GridItems[0].GridItems.Count, "4");
- }
- [Test]
- public void PropertyGrid_ItemSelectTest ()
- {
- PropertyGrid pg = new PropertyGrid ();
- pg.SelectedObject = new ArrayTest_object ();
- // the selected grid item is the "Array" property item.
- GridItem array_item = pg.SelectedGridItem;
- GridItem misc_item = array_item.Parent;
- GridItem root_item = misc_item.Parent;
- Assert.AreEqual (array_item, pg.SelectedGridItem, "1");
- Assert.IsTrue (misc_item.Select (), "2");
- Assert.AreEqual (misc_item, pg.SelectedGridItem, "3");
- Assert.IsTrue (array_item.Select (), "4");
- Assert.AreEqual (array_item, pg.SelectedGridItem, "5");
- Assert.IsFalse (root_item.Select (), "6");
- Assert.AreEqual (array_item, pg.SelectedGridItem, "7");
- }
- }
- }
|