Esempio n. 1
0
        public void AddTextRendererComponent_ShouldAddTextRendererComponentAndNotifyWithEvent()
        {
            // 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.AddTextRendererComponent();

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

            var textRendererComponent      = entity.Components.Single();
            var textRendererComponentModel = entityModel.Components.Single();

            Assert.That(textRendererComponent, Is.TypeOf <TextRendererComponent>());
            Assert.That(textRendererComponentModel, Is.TypeOf <TextRendererComponentModel>());

            // Assert that created component model is bound to component
            ((TextRendererComponentModel)textRendererComponentModel).Text = "Some text";
            Assert.That(((TextRendererComponent)textRendererComponent).Text, Is.EqualTo("Some text"));

            Assert.That(eventSender, Is.EqualTo(entityModel));
            Debug.Assert(eventArgs != null, nameof(eventArgs) + " != null");
            Assert.That(eventArgs.ComponentModel, Is.EqualTo(textRendererComponentModel));
        }