コード例 #1
0
        public void WhenAChildDoesNotReturnsFailedOrRunning_ReturnTheSameAndDoNotCallNextChildInSequence(BehaviourStatus status)
        {
            var behaviours = Enumerable.Range(0, 10)
                             .Select(x => new MockBehaviour {
                ReturnStatus = BehaviourStatus.Succeeded
            })
                             .ToArray();

            behaviours[4].ReturnStatus = status;

            var sut = new PrioritySequence <MockContext>(behaviours);

            var behaviourStatus = sut.Tick(new MockContext());

            Assert.That(behaviourStatus, Is.EqualTo(status));

            for (int i = 0; i < 4; i++)
            {
                var mockBehaviour = behaviours[i];

                Assert.That(mockBehaviour.InitializeCallCount, Is.EqualTo(1));
                Assert.That(mockBehaviour.UpdateCallCount, Is.EqualTo(1));
            }

            for (int i = 5; i < behaviours.Length; i++)
            {
                var mockBehaviour = behaviours[i];

                Assert.That(mockBehaviour.InitializeCallCount, Is.EqualTo(0));
                Assert.That(mockBehaviour.UpdateCallCount, Is.EqualTo(0));
                Assert.That(mockBehaviour.TerminateCallCount, Is.EqualTo(0));
            }
        }
コード例 #2
0
        public void WhenAReevaluatedChildReturnsFailure_ReturnFailureAndResetChildren()
        {
            var behaviours = Enumerable.Range(0, 10)
                             .Select(x => new MockBehaviour {
                ReturnStatus = BehaviourStatus.Succeeded
            })
                             .ToArray();

            behaviours[4].ReturnStatus = BehaviourStatus.Running;

            var sut = new PrioritySequence <MockContext>(behaviours);

            sut.Tick(new MockContext());
            behaviours[0].ReturnStatus = BehaviourStatus.Failed;
            sut.Tick(new MockContext());

            Assert.That(behaviours[0].InitializeCallCount, Is.EqualTo(1));
            Assert.That(behaviours[0].UpdateCallCount, Is.EqualTo(2));
            Assert.That(behaviours[0].TerminateCallCount, Is.EqualTo(2));
            Assert.That(behaviours[0].ResetCount, Is.EqualTo(1));

            for (int i = 1; i < 4; i++)
            {
                var mockBehaviour = behaviours[i];

                Assert.That(mockBehaviour.InitializeCallCount, Is.EqualTo(1));
                Assert.That(mockBehaviour.UpdateCallCount, Is.EqualTo(1));
                Assert.That(mockBehaviour.TerminateCallCount, Is.EqualTo(1));
                Assert.That(mockBehaviour.ResetCount, Is.EqualTo(1));
            }

            Assert.That(behaviours[4].InitializeCallCount, Is.EqualTo(1));
            Assert.That(behaviours[4].UpdateCallCount, Is.EqualTo(1));
            Assert.That(behaviours[4].TerminateCallCount, Is.EqualTo(0));
            Assert.That(behaviours[4].ResetCount, Is.EqualTo(1));

            for (int i = 5; i < behaviours.Length; i++)
            {
                var mockBehaviour = behaviours[i];

                Assert.That(mockBehaviour.InitializeCallCount, Is.EqualTo(0));
                Assert.That(mockBehaviour.UpdateCallCount, Is.EqualTo(0));
                Assert.That(mockBehaviour.TerminateCallCount, Is.EqualTo(0));
                Assert.That(mockBehaviour.ResetCount, Is.EqualTo(0));
            }
        }
コード例 #3
0
        public void WhenAllChildrenReturnSuccess_ReturnSuccess()
        {
            var behaviours = Enumerable.Range(0, 10)
                             .Select(x => new MockBehaviour {
                ReturnStatus = BehaviourStatus.Succeeded
            })
                             .ToArray();

            var sut = new PrioritySequence <MockContext>(behaviours);

            var behaviourStatus = sut.Tick(new MockContext());

            Assert.That(behaviourStatus, Is.EqualTo(BehaviourStatus.Succeeded));
            Assert.That(behaviours.AllInitialized(), Is.True);
            Assert.That(behaviours.AllUpdated(), Is.True);
            Assert.That(behaviours.AllTerminated(), Is.True);
        }