コード例 #1
0
        public void should_teardown_entity_when_removed()
        {
            var fakeEntity1 = Substitute.For <IEntity>();

            fakeEntity1.Id.Returns(1);
            var fakeEntities = new List <IEntity>();

            var removeSubject       = new Subject <IEntity>();
            var mockObservableGroup = Substitute.For <IObservableGroup>();

            mockObservableGroup.OnEntityAdded.Returns(new Subject <IEntity>());
            mockObservableGroup.OnEntityRemoving.Returns(removeSubject);
            mockObservableGroup.GetEnumerator().Returns(fakeEntities.GetEnumerator());

            var mockCollectionManager = Substitute.For <IEntityCollectionManager>();

            var fakeGroup = Substitute.For <IGroup>();

            fakeGroup.RequiredComponents.Returns(new Type[0]);
            mockCollectionManager.GetObservableGroup(Arg.Is(fakeGroup)).Returns(mockObservableGroup);

            var mockSystem = Substitute.For <ITeardownSystem>();

            mockSystem.Group.Returns(fakeGroup);

            var systemHandler = new TeardownSystemHandler(mockCollectionManager);

            systemHandler.SetupSystem(mockSystem);

            removeSubject.OnNext(fakeEntity1);

            mockSystem.Received(1).Teardown(Arg.Is(fakeEntity1));
            Assert.Equal(1, systemHandler.SystemSubscriptions.Count);
            Assert.NotNull(systemHandler.SystemSubscriptions[mockSystem]);
        }
コード例 #2
0
        public void should_teardown_entity_when_removed()
        {
            var fakeEntity1 = Substitute.For <IEntity>();

            fakeEntity1.Id.Returns(Guid.NewGuid());
            var fakeEntities = new IEntity[] {};

            var removeSubject       = new Subject <IEntity>();
            var mockObservableGroup = Substitute.For <IObservableGroup>();

            mockObservableGroup.OnEntityAdded.Returns(new Subject <IEntity>());
            mockObservableGroup.OnEntityRemoved.Returns(removeSubject);
            mockObservableGroup.Entities.Returns(fakeEntities);

            var mockCollectionManager = Substitute.For <IEntityCollectionManager>();

            var fakeGroup = Substitute.For <IGroup>();

            fakeGroup.MatchesComponents.Returns(new Type[0]);
            mockCollectionManager.CreateObservableGroup(Arg.Is(fakeGroup)).Returns(mockObservableGroup);

            var mockSystem = Substitute.For <ITeardownSystem>();

            mockSystem.TargetGroup.Returns(fakeGroup);

            var systemHandler = new TeardownSystemHandler(mockCollectionManager);

            systemHandler.SetupSystem(mockSystem);

            removeSubject.OnNext(fakeEntity1);

            mockSystem.Received(1).Teardown(Arg.Is(fakeEntity1));
            Assert.Equal(1, systemHandler._systemSubscriptions.Count);
            Assert.NotNull(systemHandler._systemSubscriptions[mockSystem]);
        }