public void AddRectangleColliderComponent_ShouldAddRectangleColliderComponentAndNotifyWithEvent()
        {
            // 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.AddRectangleColliderComponent();

            // Assert
            Assert.That(entity.Components, Has.Count.EqualTo(1));
            Assert.That(entityModel.Components, Has.Count.EqualTo(1));

            var rectangleColliderComponent      = entity.Components.Single();
            var rectangleColliderComponentModel = entityModel.Components.Single();

            Assert.That(rectangleColliderComponent, Is.TypeOf <RectangleColliderComponent>());
            Assert.That(rectangleColliderComponentModel, Is.TypeOf <RectangleColliderComponentModel>());

            // Assert that created component model is bound to component
            ((RectangleColliderComponentModel)rectangleColliderComponentModel).Dimension = new Vector2(123, 456);
            Assert.That(((RectangleColliderComponent)rectangleColliderComponent).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(rectangleColliderComponentModel));
        }