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
 /// <summary>
 /// Validates the current IssuesRow.
 ///   This Row only validates the columns it uses from each different TableRow
 /// </summary>
 /// <returns>The row is valid</returns>
 public bool IsValidRow()
 {
     try
     {
         RowError  = String.Empty;
         RowError += TasksTD.CheckPrioritySequence(PrioritySequence.ToString());
     }
     catch (Exception ex)
     {
         RowError += ex.Message;
     }
     return(!HasErrors);
 }
        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);
        }
        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));
            }
        }
Пример #5
0
    public ToKillPlayer(TreeBase _treeBase)
    {
        treeBase = _treeBase;

        Add <Behavior>().Update = IsFindPlayer;

        Selector makeStrategy = Add <Selector>();
        {
            PrioritySequence fight = makeStrategy.Add <PrioritySequence>();
            {
                fight.Add <Condition>().CanPass = IsHealthLow;
                fight.Add <Behavior>().Update   = KillingPlayer;
            }

            makeStrategy.Add <Behavior>().Update = Hide;
        }
    }
 public void Visit(PrioritySequence <TContext> obj)
 {
     PrintNode(obj);
     VisitChildren(obj);
 }