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