Example #1
0
        public void CollectionForm_CreateInstance_WithContextWithHostReturningComponentWithIComponentInitializerDesigner_CallsInitializeNewComponent()
        {
            var mockEditorService = new Mock <IWindowsFormsEditorService>(MockBehavior.Strict);

            mockEditorService
            .Setup(s => s.ShowDialog(It.IsAny <Form>()))
            .Returns(DialogResult.OK);

            var mockServiceProvider = new Mock <IServiceProvider>(MockBehavior.Strict);

            mockServiceProvider
            .Setup(p => p.GetService(typeof(IWindowsFormsEditorService)))
            .Returns(mockEditorService.Object);

            var result                   = new Component();
            var mockDesigner             = new Mock <IDesigner>(MockBehavior.Strict);
            var mockComponentInitializer = mockDesigner.As <IComponentInitializer>();

            mockComponentInitializer
            .Setup(d => d.InitializeNewComponent(null))
            .Verifiable();

            var mockHost = new Mock <IDesignerHost>(MockBehavior.Strict);

            mockHost
            .Setup(h => h.CreateTransaction("Add or remove Int32 objects"))
            .Returns((DesignerTransaction)null);
            mockHost
            .Setup(c => c.GetService(typeof(IComponentChangeService)))
            .Returns(null);
            mockHost
            .Setup(h => h.CreateComponent(typeof(Component), null))
            .Returns(result);
            mockHost
            .Setup(h => h.GetDesigner(result))
            .Returns(mockDesigner.Object);

            var mockContext = new Mock <ITypeDescriptorContext>(MockBehavior.Strict);

            mockContext
            .Setup(c => c.GetService(typeof(IDesignerHost)))
            .Returns(mockHost.Object);
            mockContext
            .Setup(c => c.GetService(typeof(AmbientProperties)))
            .Returns(null);
            mockContext
            .Setup(c => c.GetService(typeof(IComponentChangeService)))
            .Returns(null);

            var editor = new SubCollectionEditor(typeof(List <int>));
            var value  = new object();

            Assert.Same(value, editor.EditValue(mockContext.Object, mockServiceProvider.Object, value));
            Assert.Same(mockContext.Object, editor.Context);

            var form = new SubCollectionForm(editor);

            Assert.Same(result, form.CreateInstance(typeof(Component)));
            mockComponentInitializer.Verify(d => d.InitializeNewComponent(null), Times.Once());
        }
Example #2
0
        public void CollectionForm_ShowEditorDialog_NullEdSvc_ThrowsArgumentNullException()
        {
            var editor = new SubCollectionEditor(typeof(List <int>));
            var form   = new SubCollectionForm(editor);

            Assert.Throws <ArgumentNullException>("edSvc", () => form.ShowEditorDialog(null));
        }
Example #3
0
        public void CollectionForm_CreateInstance_NullItemType_ThrowsArgumentNullException()
        {
            var editor = new SubCollectionEditor(null);
            var form   = new SubCollectionForm(editor);

            Assert.Throws <ArgumentNullException>("objectType", () => form.CreateInstance(null));
        }
Example #4
0
        public void CollectionForm_GetService_InvokeWithoutContext_ReturnsNull(Type serviceType)
        {
            var editor = new SubCollectionEditor(serviceType);
            var form   = new SubCollectionForm(editor);

            Assert.Null(form.GetService(serviceType));
        }
Example #5
0
        public void CollectionForm_CanSelectMultipleInstances_Invoke_ReturnsFalse()
        {
            var editor = new SubCollectionEditor(null);
            var form   = new SubCollectionForm(editor);

            Assert.True(form.CanSelectMultipleInstances());
        }
Example #6
0
        public void CollectionForm_CreateInstance_InvokeWithoutContext_ReturnsExpected()
        {
            var editor = new SubCollectionEditor(null);
            var form   = new SubCollectionForm(editor);

            Assert.Equal(0, form.CreateInstance(typeof(int)));
        }
Example #7
0
        public void CollectionForm_CanRemoveInstance_Invoke_ReturnsExpected(object value)
        {
            var editor = new SubCollectionEditor(null);
            var form   = new SubCollectionForm(editor);

            Assert.True(form.CanRemoveInstance(value));
        }
Example #8
0
        public void CollectionForm_Items_SetWithContext_GetReturnsExpected(object[] value)
        {
            var mockEditorService = new Mock <IWindowsFormsEditorService>(MockBehavior.Strict);

            mockEditorService
            .Setup(s => s.ShowDialog(It.IsAny <Form>()))
            .Returns(DialogResult.OK);

            var mockServiceProvider = new Mock <IServiceProvider>(MockBehavior.Strict);

            mockServiceProvider
            .Setup(p => p.GetService(typeof(IWindowsFormsEditorService)))
            .Returns(mockEditorService.Object);

            var mockContext = new Mock <ITypeDescriptorContext>(MockBehavior.Strict);

            mockContext
            .Setup(c => c.GetService(typeof(IDesignerHost)))
            .Returns(null);
            mockContext
            .Setup(c => c.GetService(typeof(AmbientProperties)))
            .Returns(null);
            mockContext
            .Setup(c => c.GetService(typeof(IComponentChangeService)))
            .Returns(null);
            mockContext
            .Setup(c => c.OnComponentChanging())
            .Returns(true)
            .Verifiable();
            mockContext
            .Setup(c => c.OnComponentChanged())
            .Verifiable();

            var editor    = new SubCollectionEditor(typeof(List <int>));
            var editValue = new object();

            Assert.Same(editValue, editor.EditValue(mockContext.Object, mockServiceProvider.Object, editValue));
            Assert.Same(mockContext.Object, editor.Context);

            var form = new SubCollectionForm(editor)
            {
                Items = value
            };

            Assert.Null(form.EditValue);
            Assert.Empty(form.Items);
            Assert.Equal(0, form.OnEditValueChangedCallCount);
            mockContext.Verify(c => c.OnComponentChanging(), Times.Once());
            mockContext.Verify(c => c.OnComponentChanged(), Times.Once());

            // Set same.
            form.Items = value;
            Assert.Null(form.EditValue);
            Assert.Empty(form.Items);
            Assert.Equal(0, form.OnEditValueChangedCallCount);
            mockContext.Verify(c => c.OnComponentChanging(), Times.Exactly(2));
            mockContext.Verify(c => c.OnComponentChanged(), Times.Exactly(2));
        }
Example #9
0
        public void CollectionForm_CanRemoveInstance_InheritanceAttribute_ReturnsExpected(InheritanceAttribute attribute, bool expected)
        {
            var component = new Component();

            TypeDescriptor.AddAttributes(component, attribute);
            var editor = new SubCollectionEditor(null);
            var form   = new SubCollectionForm(editor);

            Assert.Equal(expected, form.CanRemoveInstance(component));
        }
Example #10
0
        public void CollectionForm_ShowEditorDialog_Invoke_Success()
        {
            var editor = new SubCollectionEditor(typeof(List <int>));
            var form   = new SubCollectionForm(editor);

            var mockEditorService = new Mock <IWindowsFormsEditorService>(MockBehavior.Strict);

            mockEditorService
            .Setup(s => s.ShowDialog(form))
            .Returns(DialogResult.OK);
            Assert.Equal(DialogResult.OK, form.ShowEditorDialog(mockEditorService.Object));
            mockEditorService.Verify(s => s.ShowDialog(form), Times.Once());
        }
Example #11
0
        public void CollectionForm_Ctor_CollectionEditor()
        {
            var editor = new CollectionEditor(typeof(List <int>));
            var form   = new SubCollectionForm(editor);

            Assert.Equal(typeof(int), form.CollectionItemType);
            Assert.Same(form.CollectionItemType, form.CollectionItemType);
            Assert.Equal(typeof(List <int>), form.CollectionType);
            Assert.Null(form.Context);
            Assert.Null(form.EditValue);
            Assert.Empty(form.Items);
            Assert.Equal(new Type[] { typeof(int) }, form.NewItemTypes);
        }
Example #12
0
        public void CollectionForm_Items_SetWithContextWithEditValueThrowsCriticalExceptionOnChanging_Rethrows(object[] value)
        {
            var mockEditorService = new Mock <IWindowsFormsEditorService>(MockBehavior.Strict);

            mockEditorService
            .Setup(s => s.ShowDialog(It.IsAny <Form>()))
            .Returns(DialogResult.OK);

            var mockServiceProvider = new Mock <IServiceProvider>(MockBehavior.Strict);

            mockServiceProvider
            .Setup(p => p.GetService(typeof(IWindowsFormsEditorService)))
            .Returns(mockEditorService.Object);

            var mockContext = new Mock <ITypeDescriptorContext>(MockBehavior.Strict);

            mockContext
            .Setup(c => c.GetService(typeof(IDesignerHost)))
            .Returns(null);
            mockContext
            .Setup(c => c.GetService(typeof(AmbientProperties)))
            .Returns(null);
            mockContext
            .Setup(c => c.GetService(typeof(IComponentChangeService)))
            .Returns(null);
            mockContext
            .Setup(c => c.OnComponentChanging())
            .Returns(() => throw new StackOverflowException())
            .Verifiable();
            mockContext
            .Setup(c => c.OnComponentChanged())
            .Verifiable();

            var editor    = new SubCollectionEditor(typeof(List <int>));
            var editValue = new object();

            Assert.Same(editValue, editor.EditValue(mockContext.Object, mockServiceProvider.Object, editValue));
            Assert.Same(mockContext.Object, editor.Context);

            var form = new SubCollectionForm(editor)
            {
                EditValue = new List <int> {
                    1, 2
                }
            };

            form.OnEditValueChangedCallCount = 0;

            Assert.Throws <StackOverflowException>(() => form.Items = value);
        }
Example #13
0
        public void CollectionForm_EditValue_Set_GetReturnsExpected(object value)
        {
            var editor = new CollectionEditor(typeof(int[]));
            var form   = new SubCollectionForm(editor)
            {
                EditValue = value
            };

            Assert.Same(value, form.EditValue);
            Assert.Equal(1, form.OnEditValueChangedCallCount);

            // Set same.
            form.EditValue = value;
            Assert.Same(value, form.EditValue);
            Assert.Equal(2, form.OnEditValueChangedCallCount);
        }
Example #14
0
        public void CollectionForm_DisplayError_InvokeWithContextWithIUIService_CallsShowError()
        {
            var mockEditorService = new Mock <IWindowsFormsEditorService>(MockBehavior.Strict);

            mockEditorService
            .Setup(s => s.ShowDialog(It.IsAny <Form>()))
            .Returns(DialogResult.OK);

            var mockServiceProvider = new Mock <IServiceProvider>(MockBehavior.Strict);

            mockServiceProvider
            .Setup(p => p.GetService(typeof(IWindowsFormsEditorService)))
            .Returns(mockEditorService.Object);

            var exception   = new Exception();
            var mockService = new Mock <IUIService>(MockBehavior.Strict);

            mockService
            .Setup(s => s.ShowError(exception))
            .Verifiable();

            var mockContext = new Mock <ITypeDescriptorContext>(MockBehavior.Strict);

            mockContext
            .Setup(c => c.GetService(typeof(IDesignerHost)))
            .Returns(null);
            mockContext
            .Setup(c => c.GetService(typeof(AmbientProperties)))
            .Returns(null);
            mockContext
            .Setup(c => c.GetService(typeof(IComponentChangeService)))
            .Returns(null);
            mockContext
            .Setup(c => c.GetService(typeof(IUIService)))
            .Returns(mockService.Object);

            var editor    = new SubCollectionEditor(typeof(List <int>));
            var editValue = new object();

            Assert.Same(editValue, editor.EditValue(mockContext.Object, mockServiceProvider.Object, editValue));
            Assert.Same(mockContext.Object, editor.Context);

            var form = new SubCollectionForm(editor);

            form.DisplayError(exception);
            mockService.Verify(s => s.ShowError(exception), Times.Once());
        }
Example #15
0
        public void CollectionForm_Items_SetWithoutContext_GetReturnsExpected(object[] value)
        {
            var editor = new CollectionEditor(typeof(int[]));
            var form   = new SubCollectionForm(editor)
            {
                Items = value
            };

            Assert.Null(form.EditValue);
            Assert.Empty(form.Items);
            Assert.Equal(0, form.OnEditValueChangedCallCount);

            // Set same.
            form.Items = value;
            Assert.Null(form.EditValue);
            Assert.Empty(form.Items);
            Assert.Equal(0, form.OnEditValueChangedCallCount);
        }
Example #16
0
        public void CollectionForm_GetService_WithContext_CallsContextGetService(Type serviceType)
        {
            var mockEditorService = new Mock <IWindowsFormsEditorService>(MockBehavior.Strict);

            mockEditorService
            .Setup(s => s.ShowDialog(It.IsAny <Form>()))
            .Returns(DialogResult.OK);

            var mockServiceProvider = new Mock <IServiceProvider>(MockBehavior.Strict);

            mockServiceProvider
            .Setup(p => p.GetService(typeof(IWindowsFormsEditorService)))
            .Returns(mockEditorService.Object);

            var result      = new object();
            var mockContext = new Mock <ITypeDescriptorContext>(MockBehavior.Strict);

            mockContext
            .Setup(c => c.GetService(typeof(IDesignerHost)))
            .Returns(null);
            mockContext
            .Setup(c => c.GetService(typeof(AmbientProperties)))
            .Returns(null);
            mockContext
            .Setup(c => c.GetService(typeof(IComponentChangeService)))
            .Returns(null);
            mockContext
            .Setup(c => c.GetService(serviceType))
            .Returns(result);

            var editor = new SubCollectionEditor(typeof(List <int>));
            var value  = new object();

            Assert.Same(value, editor.EditValue(mockContext.Object, mockServiceProvider.Object, value));
            Assert.Same(mockContext.Object, editor.Context);

            var form = new SubCollectionForm(editor);

            Assert.Same(result, form.GetService(serviceType));
        }
Example #17
0
        public void CollectionForm_Items_SetWithEditValue_GetReturnsExpected(object[] value)
        {
            var editor = new SubCollectionEditor(typeof(List <int>));
            var form   = new SubCollectionForm(editor)
            {
                EditValue = new List <int> {
                    1, 2
                }
            };

            form.OnEditValueChangedCallCount = 0;

            form.Items = value;
            Assert.Equal(new object[] { 1, 2 }, form.EditValue);
            Assert.Equal(new object[] { 1, 2 }, form.Items);
            Assert.Equal(0, form.OnEditValueChangedCallCount);

            // Set same.
            form.Items = value;
            Assert.Equal(new object[] { 1, 2 }, form.EditValue);
            Assert.Equal(new object[] { 1, 2 }, form.Items);
            Assert.Equal(0, form.OnEditValueChangedCallCount);
        }
Example #18
0
        public void CollectionForm_Items_SetWithContextWithEditValueThrowsCriticalExceptionOnChanging_CallsDisplayError(object[] value)
        {
            var mockEditorService = new Mock <IWindowsFormsEditorService>(MockBehavior.Strict);

            mockEditorService
            .Setup(s => s.ShowDialog(It.IsAny <Form>()))
            .Returns(DialogResult.OK);

            var mockServiceProvider = new Mock <IServiceProvider>(MockBehavior.Strict);

            mockServiceProvider
            .Setup(p => p.GetService(typeof(IWindowsFormsEditorService)))
            .Returns(mockEditorService.Object);

            var exception   = new DivideByZeroException();
            var mockService = new Mock <IUIService>(MockBehavior.Strict);

            mockService
            .Setup(s => s.ShowError(exception))
            .Verifiable();

            var mockContext = new Mock <ITypeDescriptorContext>(MockBehavior.Strict);

            mockContext
            .Setup(c => c.GetService(typeof(IDesignerHost)))
            .Returns(null);
            mockContext
            .Setup(c => c.GetService(typeof(AmbientProperties)))
            .Returns(null);
            mockContext
            .Setup(c => c.GetService(typeof(IComponentChangeService)))
            .Returns(null);
            mockContext
            .Setup(c => c.OnComponentChanging())
            .Returns(() => throw exception)
            .Verifiable();
            mockContext
            .Setup(c => c.OnComponentChanged())
            .Verifiable();
            mockContext
            .Setup(c => c.GetService(typeof(IUIService)))
            .Returns(mockService.Object);

            var editor    = new SubCollectionEditor(typeof(List <int>));
            var editValue = new object();

            Assert.Same(editValue, editor.EditValue(mockContext.Object, mockServiceProvider.Object, editValue));
            Assert.Same(mockContext.Object, editor.Context);

            var form = new SubCollectionForm(editor)
            {
                EditValue = new List <int> {
                    1, 2
                }
            };

            form.OnEditValueChangedCallCount = 0;

            form.Items = value;
            Assert.Equal(new object[] { 1, 2 }, form.EditValue);
            Assert.Equal(new object[] { 1, 2 }, form.Items);
            Assert.Equal(0, form.OnEditValueChangedCallCount);
            mockContext.Verify(c => c.OnComponentChanging(), Times.Once());
            mockContext.Verify(c => c.OnComponentChanged(), Times.Never());
            mockService.Verify(s => s.ShowError(exception), Times.Once());
        }