Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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)));
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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));
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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));
        }
Ejemplo n.º 8
0
        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);
        }