Skip to content

Commit cda4b6f

Browse files
committed
Added basic selector tests
1 parent 019996e commit cda4b6f

File tree

8 files changed

+124
-0
lines changed

8 files changed

+124
-0
lines changed
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
using Adnc.FluidBT.TaskParents;
2+
using Adnc.FluidBT.Tasks;
3+
using NSubstitute;
4+
using NUnit.Framework;
5+
6+
namespace Adnc.FluidBT.Testing {
7+
public class SelectorTest {
8+
public class UpdateMethod {
9+
private Selector _selector;
10+
11+
[SetUp]
12+
public void SetSelector () {
13+
_selector = new Selector();
14+
}
15+
16+
public class SingleNode : UpdateMethod {
17+
[Test]
18+
public void Returns_success_if_a_child_task_returns_success () {
19+
_selector.AddChild(A.TaskStub().Build());
20+
21+
Assert.AreEqual(TaskStatus.Success, _selector.Update());
22+
}
23+
24+
[Test]
25+
public void Returns_failure_if_a_child_task_returns_failure () {
26+
var child = A.TaskStub().WithUpdateStatus(TaskStatus.Failure).Build();
27+
_selector.AddChild(child);
28+
29+
Assert.AreEqual(TaskStatus.Failure, _selector.Update());
30+
}
31+
32+
[Test]
33+
public void Returns_continue_if_a_child_task_returns_continue () {
34+
var child = A.TaskStub().WithUpdateStatus(TaskStatus.Continue).Build();
35+
_selector.AddChild(child);
36+
37+
Assert.AreEqual(TaskStatus.Continue, _selector.Update());
38+
}
39+
}
40+
41+
public class TwoNodes : UpdateMethod {
42+
// @TODO Break off into a stops on continue test
43+
[Test]
44+
public void Reruns_the_same_node_if_it_returns_continue () {
45+
var selector = new Selector();
46+
47+
var childSuccess = A.TaskStub().WithUpdateStatus(TaskStatus.Failure).Build();
48+
selector.AddChild(childSuccess);
49+
50+
var childContinue = A.TaskStub().WithUpdateStatus(TaskStatus.Continue).Build();
51+
selector.AddChild(childContinue);
52+
53+
selector.Update();
54+
55+
// @TODO Check child index instead
56+
childSuccess.Received(1).Update();
57+
childContinue.Received(1).Update();
58+
59+
selector.Update();
60+
61+
childSuccess.Received(1).Update();
62+
childContinue.Received(2).Update();
63+
}
64+
65+
public void Stops_on_continue () {
66+
67+
}
68+
69+
public void Returns_failure_if_all_return_failure () {
70+
71+
}
72+
73+
public void Only_runs_first_node_if_success () {
74+
75+
}
76+
77+
public void Runs_all_nodes_on_success () {
78+
}
79+
}
80+
}
81+
82+
public class EndMethod {
83+
public void Calls_end_on_current_child_node () {
84+
85+
}
86+
}
87+
88+
public class ResetMethod {
89+
public void Sets_child_index_to_zero () {
90+
91+
}
92+
}
93+
}
94+
}

Assets/FluidBehaviorTree/Editor/Testing/ParentTasks/SelectorTest.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/FluidBehaviorTree/Scripts/TaskParents/Composites/Sequence/AbortType.cs renamed to Assets/FluidBehaviorTree/Scripts/TaskParents/AbortType.cs

File renamed without changes.

Assets/FluidBehaviorTree/Scripts/TaskParents/Composites/Sequence/AbortType.cs.meta renamed to Assets/FluidBehaviorTree/Scripts/TaskParents/AbortType.cs.meta

File renamed without changes.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
using Adnc.FluidBT.Tasks;
2+
3+
namespace Adnc.FluidBT.TaskParents {
4+
public class Selector : TaskParentBase {
5+
public int ChildIndex { get; private set; }
6+
7+
protected override TaskStatus OnUpdate () {
8+
for (var i = ChildIndex; i < children.Count; i++) {
9+
var child = children[ChildIndex];
10+
11+
switch (child.Update()) {
12+
case TaskStatus.Success:
13+
return TaskStatus.Success;
14+
case TaskStatus.Continue:
15+
return TaskStatus.Continue;
16+
}
17+
18+
ChildIndex++;
19+
}
20+
21+
return TaskStatus.Failure;
22+
}
23+
}
24+
}

Assets/FluidBehaviorTree/Scripts/TaskParents/Composites/Selector.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/FluidBehaviorTree/Scripts/TaskParents/Composites/Sequence/Sequence.cs renamed to Assets/FluidBehaviorTree/Scripts/TaskParents/Composites/Sequence.cs

File renamed without changes.

Assets/FluidBehaviorTree/Scripts/TaskParents/Composites/Sequence/Sequence.cs.meta renamed to Assets/FluidBehaviorTree/Scripts/TaskParents/Composites/Sequence.cs.meta

File renamed without changes.

0 commit comments

Comments
 (0)