diff --git a/src/test/unit/System.Windows.Forms/System/Windows/Forms/PropertyGridTests.cs b/src/test/unit/System.Windows.Forms/System/Windows/Forms/PropertyGridTests.cs index 4c1a0b890fb..93ccf268cf3 100644 --- a/src/test/unit/System.Windows.Forms/System/Windows/Forms/PropertyGridTests.cs +++ b/src/test/unit/System.Windows.Forms/System/Windows/Forms/PropertyGridTests.cs @@ -4505,6 +4505,76 @@ public void OnComponentChanging(object component, MemberDescriptor member) } } + #region OnComponentAdded Tests + + [WinFormsFact] + public void PropertyGrid_OnComponentAdded_NullComponent_ThrowsInvalidOperationException() + { + using PropertyGrid propertyGrid = CreatePropertyGridWithActiveDesigner( + out Mock mockDesignerHost, + out Mock mockChangeService); + + Assert.Throws(() => + mockChangeService.Raise(s => s.ComponentAdded += null, mockDesignerHost.Object, new ComponentEventArgs(null))); + } + + [WinFormsFact] + public void PropertyGrid_OnComponentAdded_ComponentWithoutPropertyTabAttribute_DoesNotAddTab() + { + using PropertyGrid propertyGrid = CreatePropertyGridWithActiveDesigner( + out Mock mockDesignerHost, + out Mock mockChangeService); + + using Control component = new(); + int initialTabCount = propertyGrid.PropertyTabs.Count; + + mockChangeService.Raise(s => s.ComponentAdded += null, mockDesignerHost.Object, new ComponentEventArgs(component)); + + Assert.Equal(initialTabCount, propertyGrid.PropertyTabs.Count); + } + + [WinFormsFact] + public void PropertyGrid_OnComponentAdded_ComponentWithDocumentScopeTab_AddsTab() + { + using PropertyGrid propertyGrid = CreatePropertyGridWithActiveDesigner( + out Mock mockDesignerHost, + out Mock mockChangeService); + + using ComponentWithDocumentTab component = new(); + int initialTabCount = propertyGrid.PropertyTabs.Count; + + mockChangeService.Raise(s => s.ComponentAdded += null, mockDesignerHost.Object, new ComponentEventArgs(component)); + + Assert.Equal(initialTabCount + 1, propertyGrid.PropertyTabs.Count); + } + + [WinFormsFact] + public void PropertyGrid_OnComponentAdded_ComponentWithNonDocumentScopeTab_DoesNotAddTab() + { + using PropertyGrid propertyGrid = CreatePropertyGridWithActiveDesigner( + out Mock mockDesignerHost, + out Mock mockChangeService); + + using ComponentWithNonDocumentTab component = new(); + int initialTabCount = propertyGrid.PropertyTabs.Count; + + mockChangeService.Raise(s => s.ComponentAdded += null, mockDesignerHost.Object, new ComponentEventArgs(component)); + + Assert.Equal(initialTabCount, propertyGrid.PropertyTabs.Count); + } + + [PropertyTab(typeof(DocumentScopePropertyTab), PropertyTabScope.Document)] + private class ComponentWithDocumentTab : Component + { + } + + [PropertyTab(typeof(DocumentScopePropertyTab), PropertyTabScope.Component)] + private class ComponentWithNonDocumentTab : Component + { + } + + #endregion + #region OnComponentRemoved Tests private static PropertyGrid CreatePropertyGridWithActiveDesigner(