コード例 #1
0
ファイル: SystemExecutorTests.cs プロジェクト: husheng0/ecsrx
        public void should_destroy_all_systems_and_handlers_when_disposed()
        {
            var fakeSetupSystemHandler1 = Substitute.For <IConventionalSystemHandler>();
            var fakeSetupSystemHandler2 = Substitute.For <IConventionalSystemHandler>();
            var fakeSystem1             = Substitute.For <ISetupSystem>();
            var fakeSystem2             = Substitute.For <ISetupSystem>();
            var fakeSystem3             = Substitute.For <ISetupSystem>();

            fakeSetupSystemHandler1.CanHandleSystem(Arg.Any <ISystem>()).Returns(true);
            fakeSetupSystemHandler2.CanHandleSystem(Arg.Any <ISystem>()).Returns(true);

            var systemExecutor = new SystemExecutor(new[] { fakeSetupSystemHandler1, fakeSetupSystemHandler2 });

            systemExecutor._systems.Add(fakeSystem1);
            systemExecutor._systems.Add(fakeSystem2);
            systemExecutor._systems.Add(fakeSystem3);

            systemExecutor.Dispose();

            fakeSetupSystemHandler1.Received(3).DestroySystem(Arg.Any <ISystem>());
            fakeSetupSystemHandler2.Received(3).DestroySystem(Arg.Any <ISystem>());
            fakeSetupSystemHandler1.Received(1).Dispose();
            fakeSetupSystemHandler2.Received(1).Dispose();

            Assert.Empty(systemExecutor._systems);
        }