예제 #1
0
        private static void TestSelectorOfSequences()
        {
            var bb = new BlackBoard();

            var main = new SelectorTask("Main Selector");

            var s1 = new SequenceTask("Sequence 1");
            var s2 = new SequenceTask("Sequence 2");
            var s3 = new SequenceTask("Sequence 3");

            s1.AddChildTask(new TestSuccessLeaf("1"));
            s1.AddChildTask(new TestSuccessLeaf("2"));
            s1.AddChildTask(new AlwaysTrueTask(new TestFailureLeaf("3")));

            s2.AddChildTask(new TestSuccessLeaf("1"));
            s2.AddChildTask(new TestFailureLeaf("2"));
            s2.AddChildTask(new TestSuccessLeaf("3"));

            s3.AddChildTask(new TestSuccessLeaf("1"));
            s3.AddChildTask(new TestSuccessLeaf("2"));
            s3.AddChildTask(new TestSuccessLeaf("3"));

            main.AddChildTask(s1);
            main.AddChildTask(s2);
            main.AddChildTask(s3);

            SetTimer(main, bb);
        }
예제 #2
0
        public TaskStatus SelectorWithOneChildAfterOneTickReturns(TaskStatus taskStatus)
        {
            var task         = new StatusActionTask(taskStatus);
            var sequenceTask = new SelectorTask(new List <ITask> {
                task
            });

            return(sequenceTask.Tick());
        }
예제 #3
0
        public void SelectorContinuesToReturnResultAfterMultipleTicks(
            [Values(TaskStatus.Success, TaskStatus.Failure)] TaskStatus taskStatus)
        {
            var task         = new StatusActionTask(taskStatus);
            var sequenceTask = new SelectorTask(new List <ITask> {
                task
            });

            Assert.AreEqual(taskStatus, sequenceTask.Tick());
            Assert.AreEqual(taskStatus, sequenceTask.Tick());
            Assert.AreEqual(taskStatus, sequenceTask.Tick());
        }
예제 #4
0
        public void SelectorWithMultipleChildrenReturningSuccessReturnsSuccessImmediately()
        {
            var childTasks = new List <ITask>();

            childTasks.Add(new StatusActionTask(TaskStatus.Success));
            childTasks.Add(new StatusActionTask(TaskStatus.Success));
            childTasks.Add(new StatusActionTask(TaskStatus.Success));
            childTasks.Add(new StatusActionTask(TaskStatus.Success));

            var selectorTask = new SelectorTask(childTasks);

            Assert.AreEqual(TaskStatus.Success, selectorTask.Tick());
        }
예제 #5
0
        public void SelectorWithAllChildrenIncompleteReturnsIncomplete()
        {
            var childTasks = new List <ITask>();

            childTasks.Add(new StatusActionTask(TaskStatus.Incomplete));
            childTasks.Add(new StatusActionTask(TaskStatus.Incomplete));
            childTasks.Add(new StatusActionTask(TaskStatus.Incomplete));

            var selectorTask = new SelectorTask(childTasks);

            Assert.AreEqual(TaskStatus.Incomplete, selectorTask.Tick());
            Assert.AreEqual(TaskStatus.Incomplete, selectorTask.Tick());
            Assert.AreEqual(TaskStatus.Incomplete, selectorTask.Tick());
        }
예제 #6
0
        private static void TestSimpleSelector()
        {
            var bb = new BlackBoard();

            var selector = new SelectorTask("Main Sequence");

            selector.AddChildTask(new TestFailureLeaf("Fail 1"));
            selector.AddChildTask(new TestFailureLeaf("Fail 2"));
            selector.AddChildTask(new TestSuccessLeaf("Success 3"));
            selector.AddChildTask(new TestFailureLeaf("Fail 4"));
            selector.AddChildTask(new TestFailureLeaf("Fail 5"));

            SetTimer(selector, bb);
        }
예제 #7
0
        public void SelectorWithChildReturningSuccessReturnsSuccessAfterThatChildIsTicked()
        {
            var childTasks = new List <ITask>();

            childTasks.Add(new StatusActionTask(TaskStatus.Failure));
            childTasks.Add(new StatusActionTask(TaskStatus.Failure));
            childTasks.Add(new StatusActionTask(TaskStatus.Failure));
            childTasks.Add(new StatusActionTask(TaskStatus.Success));
            childTasks.Add(new StatusActionTask(TaskStatus.Success));
            childTasks.Add(new StatusActionTask(TaskStatus.Success));

            var selectorTask = new SelectorTask(childTasks);

            Assert.AreEqual(TaskStatus.Incomplete, selectorTask.Tick());
            Assert.AreEqual(TaskStatus.Incomplete, selectorTask.Tick());
            Assert.AreEqual(TaskStatus.Incomplete, selectorTask.Tick());
            Assert.AreEqual(TaskStatus.Success, selectorTask.Tick());
        }
예제 #8
0
        protected override BehaviorTask createTask()
        {
            SelectorTask pTask = new SelectorTask();

            return(pTask);
        }
        protected override BehaviorTask createTask()
        {
            SelectorTask pTask = new SelectorTask();

            return pTask;
        }