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()); }
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)); }
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); }
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()); }
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)); }
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()); }