public static void Test_Run_PrioritySequence_With_FailureNodes_Returns_Failure(int numerOfNodes) { //arrange List <TestFailedNode> nodes = new List <TestFailedNode>(numerOfNodes); for (int i = 0; i < numerOfNodes; i++) { nodes.Add(new TestFailedNode()); } PrioritySequenceTreeNode <int> PrioritySequence = new PrioritySequenceTreeNode <int>(nodes); //act GladBehaviorTreeNodeState state = PrioritySequence.Evaluate(5); //assert Assert.False(PrioritySequence.isRunningNode); Assert.Null(PrioritySequence.RunningNode); Assert.AreEqual(GladBehaviorTreeNodeState.Failure, state); Assert.AreEqual(1, nodes.First().CalledTime); foreach (TestFailedNode node in nodes.Skip(1)) { Assert.AreEqual(0, node.CalledTime, $"Expected the success node to be called {1} time but was called: {node.CalledTime}s."); } }
public static void Test_Run_Selector_With_FailureNodes_Returns_Failure(int numerOfNodes) { //arrange List <TestFailedNode> nodes = new List <TestFailedNode>(numerOfNodes); for (int i = 0; i < numerOfNodes; i++) { nodes.Add(new TestFailedNode()); } SelectorTreeNode <int> Selector = new SelectorTreeNode <int>(nodes); //act GladBehaviorTreeNodeState state = Selector.Evaluate(5); //assert Assert.False(Selector.isRunningNode); Assert.Null(Selector.RunningNode); Assert.AreEqual(GladBehaviorTreeNodeState.Failure, state); foreach (TestFailedNode node in nodes) { Assert.AreEqual(1, node.CalledTime, $"Expected the failure node to be called {1} time each but was called: {node.CalledTime}s."); } }
public static void Test_Run_PrioritySequence_With_FailureNode_Doesnt_Continue_Evaluation_When_Reached() { //arrange List <TreeNode <int> > nodes = new List <TreeNode <int> >(5); for (int i = 0; i < 5; i++) { nodes.Add(new TestSuccessNode()); } nodes.Insert(nodes.Count / 2 + 1, new TestFailedNode()); PrioritySequenceTreeNode <int> PrioritySequence = new PrioritySequenceTreeNode <int>(nodes); //act GladBehaviorTreeNodeState state = PrioritySequence.Evaluate(5); //assert Assert.False(PrioritySequence.isRunningNode); Assert.Null(PrioritySequence.RunningNode); Assert.AreEqual(GladBehaviorTreeNodeState.Failure, state); Assert.AreEqual(1, ((dynamic)nodes.First()).CalledTime); Assert.AreEqual(0, ((dynamic)nodes.Last()).CalledTime, $"Expected the success node to be called {1} time but was called: {((dynamic)nodes.Last()).CalledTime}s."); }
public static void Test_Run_Sequence_With_SuccessNodes_Returns_Success(int numerOfSuccessNodes) { //arrange List <TestSuccessNode> nodes = new List <TestSuccessNode>(numerOfSuccessNodes); for (int i = 0; i < numerOfSuccessNodes; i++) { nodes.Add(new TestSuccessNode()); } SequenceTreeNode <int> sequence = new SequenceTreeNode <int>(nodes); //act GladBehaviorTreeNodeState state = sequence.Evaluate(5); //assert Assert.False(sequence.isRunningNode); Assert.Null(sequence.RunningNode); Assert.AreEqual(GladBehaviorTreeNodeState.Success, state); foreach (TestSuccessNode node in nodes) { Assert.AreEqual(1, node.CalledTime, $"Expected the success node to be called {1} time but was called: {node.CalledTime}s."); } }
public SingleContinueStateCompositeContinuationStrategy(GladBehaviorTreeNodeState continueState) { if (!Enum.IsDefined(typeof(GladBehaviorTreeNodeState), continueState)) { throw new ArgumentOutOfRangeException(nameof(continueState), "Value should be defined in the GladBehaviorTreeNodeState enum."); } ContinueState = continueState; }
public void Test_True_LambdaCondition_Returns_Failure() { //arrange LambdaConditionTreeNode <int> node = new LambdaConditionTreeNode <int>(c => false); //act GladBehaviorTreeNodeState state = node.Evaluate(5); //assert Assert.AreEqual(GladBehaviorTreeNodeState.Failure, state); }
public void Test_True_Condition_Returns_Failure() { //arrange TestFalseConditionNode node = new TestFalseConditionNode(); //act GladBehaviorTreeNodeState state = node.Evaluate(5); //assert Assert.AreEqual(GladBehaviorTreeNodeState.Failure, state); }
public void Test_True_Condition_Returns_Success() { //arrange TestTrueConditionNode node = new TestTrueConditionNode(); //act GladBehaviorTreeNodeState state = node.Evaluate(5); //assert Assert.AreEqual(GladBehaviorTreeNodeState.Success, state); }
private void OnFinishedState(GladBehaviorTreeNodeState state) { //If we weren't running then we should reset the iterator switch (state) { case GladBehaviorTreeNodeState.Success: case GladBehaviorTreeNodeState.Failure: OnReset?.Invoke(); break; case GladBehaviorTreeNodeState.Running: break; } isRunningNode = state == GladBehaviorTreeNodeState.Running; }
/// <inheritdoc /> protected override GladBehaviorTreeNodeState OnEvaluate(TContextType context) { if (context == null) { throw new ArgumentNullException(nameof(context)); } GladBehaviorTreeNodeState state = DecoratedNode.Evaluate(context); if (state == GladBehaviorTreeNodeState.Failure) { return(GladBehaviorTreeNodeState.Success); } else if (state == GladBehaviorTreeNodeState.Success) { return(GladBehaviorTreeNodeState.Failure); } return(state); }
public static void Test_Run_PrioritySelector_With_SuccessNodes_Returns_Success(int numerOfSuccessNodes) { //arrange List <TestSuccessNode> nodes = new List <TestSuccessNode>(numerOfSuccessNodes); for (int i = 0; i < numerOfSuccessNodes; i++) { nodes.Add(new TestSuccessNode()); } PrioritySelectorTreeNode <int> PrioritySelector = new PrioritySelectorTreeNode <int>(nodes); //act GladBehaviorTreeNodeState state = PrioritySelector.Evaluate(5); //assert Assert.False(PrioritySelector.isRunningNode); Assert.Null(PrioritySelector.RunningNode); Assert.AreEqual(GladBehaviorTreeNodeState.Success, state); Assert.AreEqual(1, nodes.First().CalledTime, $"Expected the success node to be called {1} time but was called: {nodes.First().CalledTime}s."); }
/// <inheritdoc /> public bool ShouldContinue(GladBehaviorTreeNodeState state) { return(ContinueState == state); }