public async Task PropertyListCategoryFiltered() { var provider = new ReflectionEditorProvider(); var obj = new TestClassSub(); var editor = await provider.GetObjectEditorAsync(obj); Assume.That(editor.Properties.Count, Is.EqualTo(2)); var vm = new PanelViewModel(new TargetPlatform(provider)) { ArrangeMode = PropertyArrangeMode.Category }; vm.SelectedObjects.Add(obj); Assume.That(vm.ArrangedEditors, Is.Not.Empty); vm.FilterText = "sub"; Assert.That(vm.ArrangedEditors.Count, Is.EqualTo(1)); var group = vm.ArrangedEditors.FirstOrDefault(g => g.Category == "Sub"); Assert.That(group, Is.Not.Null); Assert.That(group.Editors.Count, Is.EqualTo(1)); }
public void UncommonPropertiesFiltered() { var obj = new TestClassSub(); var property = new Mock <IPropertyInfo> (); property.Setup(pi => pi.Name).Returns(nameof(TestClass.Property)); property.Setup(pi => pi.Type).Returns(typeof(string)); property.Setup(pi => pi.RealType).Returns(typeof(string).ToTypeInfo()); property.Setup(pi => pi.IsUncommon).Returns(true); var subProperty = new Mock <IPropertyInfo> (); subProperty.Setup(pi => pi.Name).Returns(nameof(TestClassSub.SubProperty)); subProperty.Setup(pi => pi.Type).Returns(typeof(int)); subProperty.Setup(pi => pi.RealType).Returns(typeof(int).ToTypeInfo()); subProperty.Setup(pi => pi.IsUncommon).Returns(false); var editor = new Mock <IObjectEditor> (); editor.SetTarget(obj); editor.Setup(e => e.Properties).Returns(new[] { property.Object, subProperty.Object }); var provider = new MockEditorProvider(editor.Object); var vm = new PanelViewModel(new TargetPlatform(provider)); Assume.That(vm.ArrangeMode, Is.EqualTo(PropertyArrangeMode.Name)); vm.SelectedObjects.Add(obj); Assume.That(vm.ArrangedEditors, Is.Not.Empty); Assume.That(vm.ArrangedEditors[0].Editors.Count, Is.EqualTo(2)); Assume.That(vm.IsFiltering, Is.False); bool changed = false; vm.PropertyChanged += (sender, args) => { if (args.PropertyName == nameof(PanelViewModel.IsFiltering)) { changed = true; } }; vm.FilterText = "sub"; Assert.That(vm.ArrangedEditors[0].Editors.Count, Is.EqualTo(1), "Uncommon property wasn't filtered out"); Assert.That(vm.IsFiltering, Is.True); Assert.That(changed, Is.True); changed = false; vm.FilterText = null; Assert.That(vm.IsFiltering, Is.False); Assert.That(changed, Is.True); }
public void TypeName() { var provider = new ReflectionEditorProvider(); var obj = new TestClassSub(); var vm = CreateVm(provider); Assume.That(vm.TypeName, Is.Null); vm.SelectedObjects.Add(obj); Assert.That(vm.TypeName, Is.EqualTo(nameof(TestClassSub))); }
public async Task PropertyCategoryArrange() { var provider = new ReflectionEditorProvider(); var obj = new TestClassSub(); var editor = await provider.GetObjectEditorAsync(obj); Assume.That(editor.Properties.Count, Is.EqualTo(2)); var vm = new PanelViewModel(provider, TargetPlatform.Default) { ArrangeMode = PropertyArrangeMode.Category }; vm.SelectedObjects.Add(obj); Assume.That(vm.ArrangedEditors, Is.Not.Empty); Assert.That(vm.ArrangedEditors.FirstOrDefault(g => g.Key == "Sub"), Is.Not.Null); }
public async Task PropertyListFilteredTextReducesList() { var provider = new ReflectionEditorProvider(); var obj = new TestClassSub(); var editor = await provider.GetObjectEditorAsync(obj); Assume.That(editor.Properties.Count, Is.EqualTo(2)); var vm = new PanelViewModel(new TargetPlatform(provider)); Assume.That(vm.ArrangeMode, Is.EqualTo(PropertyArrangeMode.Name)); vm.SelectedObjects.Add(obj); Assume.That(vm.ArrangedEditors, Is.Not.Empty); Assume.That(vm.ArrangedEditors[0].Editors.Count, Is.EqualTo(2)); vm.FilterText = "sub"; Assert.That(vm.ArrangedEditors[0].Editors.Count, Is.EqualTo(1)); }
public async Task AutoExpand() { var provider = new ReflectionEditorProvider(); var obj = new TestClassSub(); var editor = await provider.GetObjectEditorAsync(obj); Assume.That(editor.Properties.Count, Is.EqualTo(2)); var vm = new PanelViewModel(new TargetPlatform(provider)) { ArrangeMode = PropertyArrangeMode.Category, AutoExpand = true }; vm.SelectedObjects.Add(obj); Assume.That(vm.ArrangedEditors, Is.Not.Empty); Assert.That(vm.GetIsExpanded(vm.ArrangedEditors[0].Category), Is.True); }
public void PropertiesReducesToCommonSubset() { var obj1 = new TestClass(); var obj2 = new TestClassSub(); var sharedPropertyMock = new Mock <IPropertyInfo> (); sharedPropertyMock.SetupGet(pi => pi.Type).Returns(typeof(string)); var subPropertyMock = new Mock <IPropertyInfo> (); subPropertyMock.SetupGet(pi => pi.Type).Returns(typeof(int)); var editor1Mock = new Mock <IObjectEditor> (); editor1Mock.SetupGet(oe => oe.Properties).Returns(new[] { sharedPropertyMock.Object }); var editor2Mock = new Mock <IObjectEditor> (); editor2Mock.SetupGet(oe => oe.Properties).Returns(new[] { sharedPropertyMock.Object, subPropertyMock.Object }); var providerMock = new Mock <IEditorProvider> (); providerMock.Setup(ep => ep.GetObjectEditorAsync(obj1)).ReturnsAsync(editor1Mock.Object); providerMock.Setup(ep => ep.GetObjectEditorAsync(obj2)).ReturnsAsync(editor2Mock.Object); var vm = new PanelViewModel(providerMock.Object, TargetPlatform.Default); vm.SelectedObjects.Add(obj2); Assume.That(vm.Properties.Count, Is.EqualTo(2)); Assume.That(vm.Properties.Cast <PropertyViewModel>().Select(v => v.Property), Contains.Item(sharedPropertyMock.Object)); Assume.That(vm.Properties.Cast <PropertyViewModel>().Select(v => v.Property), Contains.Item(subPropertyMock.Object)); // Reflection property info equate actually fails on the same property across class/subclass vm.SelectedObjects.Add(obj1); Assert.That(vm.Properties.Count, Is.EqualTo(1)); Assert.That(vm.Properties.Cast <PropertyViewModel>().Select(v => v.Property), Contains.Item(sharedPropertyMock.Object)); }
public async Task PropertyListIsFiltered() { var provider = new ReflectionEditorProvider(); var obj = new TestClassSub(); var editor = await provider.GetObjectEditorAsync(obj); Assume.That(editor.Properties.Count, Is.EqualTo(2)); var vm = new PanelViewModel(new TargetPlatform(provider)); Assume.That(vm.ArrangeMode, Is.EqualTo(PropertyArrangeMode.Name)); vm.SelectedObjects.Add(obj); Assume.That(vm.ArrangedEditors, Is.Not.Empty); Assume.That(vm.ArrangedEditors[0].Editors.Count, Is.EqualTo(2)); Assume.That(vm.IsFiltering, Is.False); bool changed = false; vm.PropertyChanged += (sender, args) => { if (args.PropertyName == nameof(PanelViewModel.IsFiltering)) { changed = true; } }; vm.FilterText = "sub"; Assume.That(vm.ArrangedEditors[0].Editors.Count, Is.EqualTo(1)); Assert.That(vm.IsFiltering, Is.True); Assert.That(changed, Is.True); changed = false; vm.FilterText = null; Assert.That(vm.IsFiltering, Is.False); Assert.That(changed, Is.True); }