public void ConditionFailSingle() { var root = new SequenceNode(); var succ = new TaskSuccessNode(); succ.AppendDecorator(new ConditionFail()); root.Append(succ); root.Append(new TaskFailureNode()); Assert.That(root.Run(null), Is.EqualTo(NodeState.Failure)); //should skip the success condition Assert.That(succ.executed, Is.EqualTo(false)); }
public void ConditionMultiple() { var root = new SequenceNode(); var succ = new TaskSuccessNode(); succ.AppendDecorator(new ConditionSuccess()); succ.AppendDecorator(new ConditionFail()); root.Append(succ); root.Append(new TaskFailureNode()); //expected condition false Assert.That(root.Run(null), Is.EqualTo(NodeState.Failure)); Assert.That(succ.executed, Is.EqualTo(false)); }
public void SetValueAfterExecution_Green() { var root = new SequenceNode(); var bt = new BT.BT(root); var suc = new TaskSuccessNode(); suc.AppendDecorator(new SetValueAfterExecution("foo", () => 10)); //for example set target position root.Append(suc); bt.Run(); Assert.That(bt.BlackBoard.ReadValue <int>("foo"), Is.EqualTo(10)); }
public void SequenceFailCalled() { var sequence = new SequenceNode(); var fail = new TaskFailureNode(); var success = new TaskSuccessNode(); sequence.Append(new TaskSuccessNode()); sequence.Append(fail); sequence.Append(success); Assert.That(sequence.Run(null), Is.EqualTo(NodeState.Failure)); Assert.That(fail.executed, Is.EqualTo(true)); Assert.That(success.executed, Is.EqualTo(false)); }
public void Tag_Green() { var root = new SequenceNode(); var suc = new TaskSuccessNode(); suc.AppendDecorator(new Tag("foo")); root.Append(suc); var bt = new BT.BT(root); bt.Run(); Assert.That(bt.GetActiveTag(), Is.EqualTo("foo")); }
public void WriteOnFailure_Red() { var root = new SequenceNode(); var suc = new TaskSuccessNode(); suc.AppendDecorator(new SetValueOnFail("foo", () => 1)); root.Append(suc); BT.BT bt = new BT.BT(root); bt.BlackBoard.SetValue("foo", 0); Assert.That(bt.BlackBoard.ReadValue <int>("foo"), Is.EqualTo(0)); bt.Run(); Assert.That(bt.BlackBoard.ReadValue <int>("foo"), Is.EqualTo(0)); }
public void ConditionConstant_Red() { var root = new SequenceNode(); var bt = new BT.BT(root); bt.BlackBoard.SetValue("foo", 10); var suc = new TaskSuccessNode(); suc.AppendDecorator(new BlackBoardConstantCondition <IntCondition, int>("foo", 10, ConditionType.Equal)); //for example set target position root.Append(suc); bt.Run(); Assert.That(suc.executed, Is.Not.EqualTo(false)); }
public void ConditionSuccessSingle() { var root = new SequenceNode(); var succ = new TaskSuccessNode(); succ.AppendDecorator(new ConditionSuccess()); root.Append(succ); var fail = new TaskFailureNode(); fail.AppendDecorator(new ConditionFail()); root.Append(fail); Assert.That(root.Run(null), Is.EqualTo(NodeState.Success)); //should skip the fail node Assert.That(succ.executed, Is.EqualTo(true)); Assert.That(fail.executed, Is.EqualTo(false)); }
public void SelectorRunning() { var Selector = new SelectorNode(); var running = new TaskRunningNode(); var node = new TaskSuccessNode(); Selector.Append(running); Selector.Append(node); Assert.That(Selector.Run(null), Is.EqualTo(NodeState.Running)); Assert.That(Selector.Run(null), Is.EqualTo(NodeState.Running)); Assert.That(Selector.Run(null), Is.EqualTo(NodeState.Running)); Assert.That(Selector.Run(null), Is.EqualTo(NodeState.Running)); Assert.That(Selector.Run(null), Is.EqualTo(NodeState.Success)); Assert.That(node.executed, Is.EqualTo(false)); //next node in Selector will be never executed }
public void SequenceRunning_Green() { var sequence = new SequenceNode(); var run = new TaskRunningNode(); var succ = new TaskSuccessNode(); sequence.Append(run); sequence.Append(succ); Assert.That(sequence.Run(null), Is.EqualTo(NodeState.Running)); Assert.That(sequence.Run(null), Is.EqualTo(NodeState.Running)); Assert.That(sequence.Run(null), Is.EqualTo(NodeState.Running)); Assert.That(sequence.Run(null), Is.EqualTo(NodeState.Running)); Assert.That(succ.executed, Is.EqualTo(false)); //node not called Assert.That(sequence.Run(null), Is.EqualTo(NodeState.Success)); //step forward, tree unlocked, next node called Assert.That(succ.executed, Is.EqualTo(true)); //condition satisfied }
public void SequenceRunning_Red() { var sequence = new SequenceNode(); var run = new TaskRunningNode(); var fail = new TaskFailureNode(); var succ = new TaskSuccessNode(); sequence.Append(run); sequence.Append(fail); sequence.Append(succ); Assert.That(sequence.Run(null), Is.EqualTo(NodeState.Running)); Assert.That(sequence.Run(null), Is.EqualTo(NodeState.Running)); Assert.That(sequence.Run(null), Is.EqualTo(NodeState.Running)); Assert.That(sequence.Run(null), Is.EqualTo(NodeState.Running)); Assert.That(sequence.Run(null), Is.EqualTo(NodeState.Failure)); Assert.That(fail.executed, Is.EqualTo(true)); //condition satisfied Assert.That(succ.executed, Is.EqualTo(false)); //condition satisfied }
public void SelectorRunningWithFailure() { var Selector = new SelectorNode(); var failure = new TaskFailureNode(); var running = new TaskRunningNode(); var node = new TaskSuccessNode(); Selector.Append(failure); Selector.Append(running); Selector.Append(node); //same asserts as before, failure will be ignored Assert.That(Selector.Run(null), Is.EqualTo(NodeState.Running)); Assert.That(Selector.Run(null), Is.EqualTo(NodeState.Running)); Assert.That(Selector.Run(null), Is.EqualTo(NodeState.Running)); Assert.That(Selector.Run(null), Is.EqualTo(NodeState.Running)); Assert.That(Selector.Run(null), Is.EqualTo(NodeState.Success)); Assert.That(failure.executed, Is.EqualTo(true)); Assert.That(node.executed, Is.EqualTo(false)); //next node in Selector will be never executed }