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); }
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); }