public void AddCircleColliderComponent_ShouldAddCircleColliderComponentAndNotifyWithEvent() { // 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.AddCircleColliderComponent(); // Assert Assert.That(entity.Components, Has.Count.EqualTo(1)); Assert.That(entityModel.Components, Has.Count.EqualTo(1)); var circleColliderComponent = entity.Components.Single(); var circleColliderComponentModel = entityModel.Components.Single(); Assert.That(circleColliderComponent, Is.TypeOf <CircleColliderComponent>()); Assert.That(circleColliderComponentModel, Is.TypeOf <CircleColliderComponentModel>()); // Assert that created component model is bound to component ((CircleColliderComponentModel)circleColliderComponentModel).Radius = 123; Assert.That(((CircleColliderComponent)circleColliderComponent).Radius, Is.EqualTo(123)); Assert.That(eventSender, Is.EqualTo(entityModel)); Debug.Assert(eventArgs != null, nameof(eventArgs) + " != null"); Assert.That(eventArgs.ComponentModel, Is.EqualTo(circleColliderComponentModel)); }