From 0359e75de7f02ed862e4741a62fa86f5d12eadd5 Mon Sep 17 00:00:00 2001 From: David Sparer Date: Mon, 1 Apr 2019 13:15:20 -0500 Subject: [PATCH] added tests of the filtered property grid --- .../UI/Controls/FilteredPropertyGridTests.cs | 134 ++++++++++++++++++ mRemoteNGTests/mRemoteNGTests.csproj | 1 + 2 files changed, 135 insertions(+) create mode 100644 mRemoteNGTests/UI/Controls/FilteredPropertyGridTests.cs diff --git a/mRemoteNGTests/UI/Controls/FilteredPropertyGridTests.cs b/mRemoteNGTests/UI/Controls/FilteredPropertyGridTests.cs new file mode 100644 index 000000000..2df92f453 --- /dev/null +++ b/mRemoteNGTests/UI/Controls/FilteredPropertyGridTests.cs @@ -0,0 +1,134 @@ +using System; +using System.Linq; +using mRemoteNG.UI.Controls.FilteredPropertyGrid; +using NUnit.Framework; + +namespace mRemoteNGTests.UI.Controls +{ + public class FilteredPropertyGridTests + { + [Test] + public void AllPropertiesVisibleByDefault() + { + var grid = new FilteredPropertyGrid(); + var obj = new {Prop1 = "hello"}; + grid.SelectedObject = obj; + + Assert.That(grid.VisibleProperties, Is.EquivalentTo(new []{ nameof(obj.Prop1) })); + } + + [Test] + public void PropertiesOnTheHiddenPropertiesListAreNotShown() + { + var grid = new FilteredPropertyGrid(); + var obj = new { Prop1 = "hello", Prop2 = "world" }; + grid.HiddenProperties = new[] { nameof(obj.Prop1) }; + grid.SelectedObject = obj; + + Assert.That(grid.VisibleProperties, Is.EquivalentTo(new[] { nameof(obj.Prop2) })); + } + + [Test] + public void OnlyPropertiesOnTheBrowsablePropertiesListAreShown() + { + var grid = new FilteredPropertyGrid(); + var obj = new { Prop1 = "hello", Prop2 = "world" }; + grid.BrowsableProperties = new[] { nameof(obj.Prop1) }; + grid.SelectedObject = obj; + + Assert.That(grid.VisibleProperties, Is.EquivalentTo(new[] { nameof(obj.Prop1) })); + } + + [Test] + public void APropertyOnBothTheBrowsableAndHiddenListWillNotBeShown() + { + var grid = new FilteredPropertyGrid(); + var obj = new { Prop1 = "hello", Prop2 = "world", Prop3 = "!" }; + grid.BrowsableProperties = new[] { nameof(obj.Prop1), nameof(obj.Prop2) }; + grid.HiddenProperties = new[] { nameof(obj.Prop1) }; + grid.SelectedObject = obj; + + Assert.That(grid.VisibleProperties, Is.EquivalentTo(new[] { nameof(obj.Prop2) })); + } + + [Test] + public void ExceptionThrownWhenNonExistantPropertyFoundInBrowsablePropertiesList() + { + var grid = new FilteredPropertyGrid(); + var obj = new { Prop1 = "hello" }; + grid.SelectedObject = obj; + + Assert.Throws(() => + grid.BrowsableProperties = new[] {"NonExistantProperty"}); + } + + [Test] + public void ExceptionThrownWhenNonExistantPropertyFoundInHiddenPropertiesList() + { + var grid = new FilteredPropertyGrid(); + var obj = new { Prop1 = "hello" }; + grid.SelectedObject = obj; + + Assert.Throws(() => + grid.HiddenProperties = new[] { "NonExistantProperty" }); + } + + [Test] + public void GetVisibleGridItemsReturnsAllExpandedItems() + { + var grid = new FilteredPropertyGrid(); + var obj = new { Prop1 = "hello", Prop2 = new{Prop3 = "world"} }; + grid.SelectedObject = obj; + + var visibleGridItems = grid.GetVisibleGridItems(); + + Assert.That(visibleGridItems.Select(i => i.Label), + Is.EquivalentTo(new[] + { + nameof(obj.Prop1), + nameof(obj.Prop2) + })); + } + + [Test] + public void CanSelectGridItem() + { + var grid = new FilteredPropertyGrid(); + var obj = new { Prop1 = "hello", Prop2 = "world" }; + grid.SelectedObject = obj; + + grid.SelectGridItem(nameof(obj.Prop2)); + + Assert.That(grid.SelectedGridItem.PropertyDescriptor?.Name, + Is.EqualTo(nameof(obj.Prop2))); + } + + [Test] + public void FindNextGridItemPropertyReturnsTheCorrectItem() + { + var grid = new FilteredPropertyGrid(); + var obj = new { Prop1 = "hello", Prop2 = "world" }; + grid.SelectedObject = obj; + + grid.SelectGridItem(nameof(obj.Prop1)); + var nextGridItem = grid.FindNextGridItemProperty(grid.SelectedGridItem); + + Assert.That(nextGridItem?.PropertyDescriptor?.Name, + Is.EqualTo(nameof(obj.Prop2))); + } + + [Test] + public void FindPreviousGridItemPropertyReturnsTheCorrectItem() + { + var grid = new FilteredPropertyGrid(); + var obj = new { Prop1 = "hello", Prop2 = "world", Prop3 = "!" }; + grid.SelectedObject = obj; + + grid.SelectGridItem(nameof(obj.Prop3)); + var nextGridItem = grid.FindPreviousGridItemProperty(grid.SelectedGridItem); + + Assert.That(nextGridItem?.PropertyDescriptor?.Name, + Is.EqualTo(nameof(obj.Prop2))); + } + } +} diff --git a/mRemoteNGTests/mRemoteNGTests.csproj b/mRemoteNGTests/mRemoteNGTests.csproj index 55310f852..255dc1360 100644 --- a/mRemoteNGTests/mRemoteNGTests.csproj +++ b/mRemoteNGTests/mRemoteNGTests.csproj @@ -218,6 +218,7 @@ + Form