public void AddRectangleRendererComponent_ShouldAddRectangleRendererComponentAndNotifyWithEvent() { // Arrange var entity = new Entity(); var entityModel = new EntityModel(entity); object?eventSender = null; ComponentAddedEventArgs?eventArgs = null; entityModel.ComponentAdded += (sender, args) => { eventSender = sender; eventArgs = args; }; // Act entityModel.AddRectangleRendererComponent(); // Assert Assert.That(entity.Components, Has.Count.EqualTo(1)); Assert.That(entityModel.Components, Has.Count.EqualTo(1)); var rectangleRendererComponent = entity.Components.Single(); var rectangleRendererComponentModel = entityModel.Components.Single(); Assert.That(rectangleRendererComponent, Is.TypeOf <RectangleRendererComponent>()); Assert.That(rectangleRendererComponentModel, Is.TypeOf <RectangleRendererComponentModel>()); // Assert that created component model is bound to component ((RectangleRendererComponentModel)rectangleRendererComponentModel).Dimension = new Vector2(123, 456); Assert.That(((RectangleRendererComponent)rectangleRendererComponent).Dimension, Is.EqualTo(new Vector2(123, 456))); Assert.That(eventSender, Is.EqualTo(entityModel)); Debug.Assert(eventArgs != null, nameof(eventArgs) + " != null"); Assert.That(eventArgs.ComponentModel, Is.EqualTo(rectangleRendererComponentModel)); }