예제 #1
0
        public void should_remove_setup_system_subscriptions_when_removing_system()
        {
            var dummyGroup             = new Group(typeof(TestComponentOne));
            var mockPoolManager        = Substitute.For <IPoolManager>();
            var mockEventSystem        = Substitute.For <IEventSystem>();
            var mockSetupSystemHandler = Substitute.For <ISetupSystemHandler>();
            var fakeSystem             = Substitute.For <ISetupSystem>();

            fakeSystem.TargetGroup.Returns(dummyGroup);

            var entity = new Entity(Guid.NewGuid(), mockEventSystem);

            entity.AddComponent(new TestComponentOne());

            var fakeDisposable = Substitute.For <IDisposable>();

            mockSetupSystemHandler.ProcessEntity(fakeSystem, entity).Returns(new SubscriptionToken(entity, fakeDisposable));

            var systemExecutor = new SystemExecutor(mockPoolManager, mockEventSystem,
                                                    null, null, mockSetupSystemHandler, null, null);

            systemExecutor.AddSystem(fakeSystem);
            systemExecutor.OnEntityAddedToPool(new EntityAddedEvent(entity, null));

            Assert.That(systemExecutor.GetSubscriptionCountForSystem(fakeSystem), Is.EqualTo(1));
            Assert.That(systemExecutor.GetTotalSubscriptions(), Is.EqualTo(1));

            systemExecutor.RemoveSystem(fakeSystem);

            Assert.That(systemExecutor.GetSubscriptionCountForSystem(fakeSystem), Is.EqualTo(0));
            Assert.That(systemExecutor.GetTotalSubscriptions(), Is.EqualTo(0));

            Assert.That(systemExecutor.Systems, Is.Empty);
            fakeDisposable.Received().Dispose();
        }
        public void should_remove_system_from_systems()
        {
            var mockPoolManager        = Substitute.For <IPoolManager>();
            var mockEventSystem        = Substitute.For <IEventSystem>();
            var mockSetupSystemHandler = Substitute.For <ISetupSystemHandler>();
            var fakeSystem             = Substitute.For <ISetupSystem>();

            var systemExecutor = new SystemExecutor(mockPoolManager, mockEventSystem,
                                                    null, null, mockSetupSystemHandler, null, null);

            systemExecutor.AddSystem(fakeSystem);
            systemExecutor.RemoveSystem(fakeSystem);

            Assert.That(systemExecutor.Systems, Is.Empty);
        }
예제 #3
0
        public void should_handle_and_remove_system()
        {
            var fakeSetupSystemHandler = Substitute.For <IConventionalSystemHandler>();
            var fakeSystem             = Substitute.For <ISetupSystem>();

            fakeSetupSystemHandler.CanHandleSystem(Arg.Is(fakeSystem)).Returns(true);

            var systemExecutor = new SystemExecutor(new[] { fakeSetupSystemHandler });

            systemExecutor._systems.Add(fakeSystem);

            systemExecutor.RemoveSystem(fakeSystem);

            fakeSetupSystemHandler.Received(1).DestroySystem(fakeSystem);
            Assert.Empty(systemExecutor.Systems);
        }