Exemplo n.º 1
0
        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));
        }