11using Adnc . FluidBT . TaskParents . Composites ;
22using Adnc . FluidBT . Tasks ;
3+ using Adnc . FluidBT . Tasks . Actions ;
34using NUnit . Framework ;
45
56namespace Adnc . FluidBT . Trees . Testing {
67 public class BehaviorTreeBuilderTest {
7- public class SequenceMethod {
8- private int _invokeCount ;
9- private BehaviorTreeBuilder _builder ;
10-
11- [ SetUp ]
12- public void BeforeEach ( ) {
13- _invokeCount = 0 ;
14- _builder = new BehaviorTreeBuilder ( null ) ;
15- }
8+ private int _invokeCount ;
9+ private BehaviorTreeBuilder _builder ;
1610
11+ [ SetUp ]
12+ public void BeforeEach ( ) {
13+ _invokeCount = 0 ;
14+ _builder = new BehaviorTreeBuilder ( null ) ;
15+ }
16+
17+ public class SequenceMethod : BehaviorTreeBuilderTest {
1718 [ Test ]
1819 public void Create_a_sequence ( ) {
1920 var tree = _builder
20- . Sequence ( "sequence" )
21+ . Sequence ( )
2122 . Do ( "action" , ( ) => {
2223 _invokeCount ++ ;
2324 return TaskStatus . Success ;
@@ -115,5 +116,128 @@ public void Create_two_nested_sequences_with_actions () {
115116 Assert . AreEqual ( 2 , _invokeCount ) ;
116117 }
117118 }
119+
120+ public class SelectorMethod : BehaviorTreeBuilderTest {
121+ [ Test ]
122+ public void Create_a_selector ( ) {
123+ var tree = _builder
124+ . Selector ( "selector" )
125+ . Do ( "action" , ( ) => {
126+ _invokeCount ++ ;
127+ return TaskStatus . Failure ;
128+ } )
129+ . Do ( "action" , ( ) => {
130+ _invokeCount ++ ;
131+ return TaskStatus . Success ;
132+ } )
133+ . Build ( ) ;
134+
135+ var selector = tree . Root . Children [ 0 ] as Selector ;
136+
137+ Assert . AreEqual ( tree . Root . Children . Count , 1 ) ;
138+ Assert . AreEqual ( selector . Children . Count , 2 ) ;
139+ Assert . AreEqual ( TaskStatus . Success , tree . Tick ( ) ) ;
140+ Assert . AreEqual ( 2 , _invokeCount ) ;
141+ }
142+ }
143+
144+ public class ParallelMethod : BehaviorTreeBuilderTest {
145+ [ Test ]
146+ public void Create_a_selector ( ) {
147+ var tree = _builder
148+ . Parallel ( )
149+ . Do ( "action" , ( ) => {
150+ _invokeCount ++ ;
151+ return TaskStatus . Success ;
152+ } )
153+ . Do ( "action" , ( ) => {
154+ _invokeCount ++ ;
155+ return TaskStatus . Success ;
156+ } )
157+ . Build ( ) ;
158+
159+ var parallel = tree . Root . Children [ 0 ] as Parallel ;
160+
161+ Assert . AreEqual ( tree . Root . Children . Count , 1 ) ;
162+ Assert . AreEqual ( parallel . Children . Count , 2 ) ;
163+ Assert . AreEqual ( TaskStatus . Success , tree . Tick ( ) ) ;
164+ Assert . AreEqual ( 2 , _invokeCount ) ;
165+ }
166+ }
167+
168+ public class ConditionMethod : BehaviorTreeBuilderTest {
169+ [ Test ]
170+ public void It_should_add_a_condition ( ) {
171+ var tree = _builder
172+ . Sequence ( )
173+ . Condition ( "condition" , ( ) => {
174+ _invokeCount ++ ;
175+ return true ;
176+ } )
177+ . Do ( "action" , ( ) => {
178+ _invokeCount ++ ;
179+ return TaskStatus . Success ;
180+ } )
181+ . Build ( ) ;
182+
183+ var sequence = tree . Root . Children [ 0 ] as Sequence ;
184+ var condition = sequence . Children [ 0 ] as ConditionGeneric ;
185+
186+ Assert . AreEqual ( sequence . Children . Count , 2 ) ;
187+ Assert . IsNotNull ( condition ) ;
188+ Assert . AreEqual ( TaskStatus . Success , tree . Tick ( ) ) ;
189+ Assert . AreEqual ( 2 , _invokeCount ) ;
190+ }
191+
192+ [ Test ]
193+ public void It_should_add_a_condition_without_a_name ( ) {
194+ var tree = _builder
195+ . Condition ( ( ) => {
196+ _invokeCount ++ ;
197+ return true ;
198+ } )
199+ . Build ( ) ;
200+
201+ var condition = tree . Root . Children [ 0 ] as ConditionGeneric ;
202+
203+ Assert . IsNotNull ( condition ) ;
204+ Assert . AreEqual ( TaskStatus . Success , tree . Tick ( ) ) ;
205+ Assert . AreEqual ( 1 , _invokeCount ) ;
206+ }
207+ }
208+
209+ public class DoMethod : BehaviorTreeBuilderTest {
210+ [ Test ]
211+ public void It_should_add_an_action ( ) {
212+ var tree = _builder
213+ . Do ( "action" , ( ) => {
214+ _invokeCount ++ ;
215+ return TaskStatus . Success ;
216+ } )
217+ . Build ( ) ;
218+
219+ var action = tree . Root . Children [ 0 ] as ActionGeneric ;
220+
221+ Assert . IsNotNull ( action ) ;
222+ Assert . AreEqual ( TaskStatus . Success , tree . Tick ( ) ) ;
223+ Assert . AreEqual ( 1 , _invokeCount ) ;
224+ }
225+
226+ [ Test ]
227+ public void It_should_add_an_action_without_a_name ( ) {
228+ var tree = _builder
229+ . Do ( ( ) => {
230+ _invokeCount ++ ;
231+ return TaskStatus . Success ;
232+ } )
233+ . Build ( ) ;
234+
235+ var action = tree . Root . Children [ 0 ] as ActionGeneric ;
236+
237+ Assert . IsNotNull ( action ) ;
238+ Assert . AreEqual ( TaskStatus . Success , tree . Tick ( ) ) ;
239+ Assert . AreEqual ( 1 , _invokeCount ) ;
240+ }
241+ }
118242 }
119243}
0 commit comments