public void SelectorSuccessTest()
        {
            var root = new BehaviourTreeBuilder <TestBlackboard>()
                       .Selector("Sequence")
                       .Do("Increment counter 1", TestActions.IncrementCounter1)
                       .Do("Increment counter 2", TestActions.IncrementCounter2)
                       .End()
                       .Build();
            var metadata   = new BehaviourTreeMetadata <TestBlackboard>(root);
            var data       = metadata.CreateExecutionData();
            var executor   = new BehaviourTreeExecutor <TestBlackboard>(root);
            var blackboard = new TestBlackboard();

            executor.Start(data);

            executor.Tick(data, blackboard);
            Assert.AreEqual(BehaviourTreeStatus.Success, data.Statuses[root.Id]);
            Assert.AreEqual(1, blackboard.Counter1);
            Assert.AreEqual(0, blackboard.Counter2);
            Assert.AreEqual(0, data.Stack.Count);
        }
        public void IfNodeFalseTest()
        {
            var root = new BehaviourTreeBuilder <TestBlackboard>()
                       .If("If false", TestActions.False)
                       .Do("Increment counter 1", TestActions.IncrementCounter1)
                       .End()
                       .Build();
            var metadata   = new BehaviourTreeMetadata <TestBlackboard>(root);
            var data       = metadata.CreateExecutionData();
            var executor   = new BehaviourTreeExecutor <TestBlackboard>(root);
            var blackboard = new TestBlackboard();

            executor.Start(data);
            executor.Tick(data, blackboard);

            var status = data.Statuses[root.Id];

            Assert.AreEqual(BehaviourTreeStatus.Failure, status);
            Assert.AreEqual(0, blackboard.Counter1);
            Assert.AreEqual(0, data.Stack.Count);
        }
        public void AlwaysSucceedTest()
        {
            var root = new BehaviourTreeBuilder <TestBlackboard>()
                       .AllwaysSucceed("Succeed")
                       .AlwaysFail("Fail")
                       .Do("Increment counter 1", TestActions.IncrementCounter1)
                       .End()
                       .End()
                       .Build();
            var metadata   = new BehaviourTreeMetadata <TestBlackboard>(root);
            var data       = metadata.CreateExecutionData();
            var executor   = new BehaviourTreeExecutor <TestBlackboard>(root);
            var blackboard = new TestBlackboard();

            executor.Start(data);
            executor.Tick(data, blackboard);

            var status = data.Statuses[root.Id];

            Assert.AreEqual(BehaviourTreeStatus.Success, status);
            Assert.AreEqual(1, blackboard.Counter1);
            Assert.AreEqual(0, data.Stack.Count);
        }