@@ -8,7 +8,7 @@ namespace CleverCrow.Fluid.BTs.Trees.Testing {
88 public class BehaviorTreeBuilderTest {
99 private int _invokeCount ;
1010 private BehaviorTreeBuilder _builder ;
11-
11+
1212 [ SetUp ]
1313 public void BeforeEach ( ) {
1414 _invokeCount = 0 ;
@@ -21,13 +21,13 @@ public void It_should_add_a_random_selector () {
2121 var tree = _builder
2222 . SelectorRandom ( "random selector" )
2323 . Build ( ) ;
24-
24+
2525 var selectorRandom = tree . Root . Children [ 0 ] as SelectorRandom ;
26-
26+
2727 Assert . IsNotNull ( selectorRandom ) ;
2828 }
2929 }
30-
30+
3131 public class SequenceMethod : BehaviorTreeBuilderTest {
3232 [ Test ]
3333 public void Create_a_sequence ( ) {
@@ -38,15 +38,15 @@ public void Create_a_sequence () {
3838 return TaskStatus . Success ;
3939 } )
4040 . Build ( ) ;
41-
41+
4242 var sequence = tree . Root . Children [ 0 ] as Sequence ;
43-
43+
4444 Assert . AreEqual ( tree . Root . Children . Count , 1 ) ;
4545 Assert . AreEqual ( sequence . Children . Count , 1 ) ;
4646 Assert . AreEqual ( TaskStatus . Success , tree . Tick ( ) ) ;
4747 Assert . AreEqual ( 1 , _invokeCount ) ;
4848 }
49-
49+
5050 [ Test ]
5151 public void Create_a_nested_sequence ( ) {
5252 var tree = _builder
@@ -61,16 +61,16 @@ public void Create_a_nested_sequence () {
6161 return TaskStatus . Success ;
6262 } )
6363 . Build ( ) ;
64-
64+
6565 var sequence = tree . Root . Children [ 0 ] as Sequence ;
6666 Assert . AreEqual ( 2 , sequence . Children . Count ) ;
67-
67+
6868 var nested = sequence . Children [ 1 ] as Sequence ;
6969 Assert . AreEqual ( nested . Children . Count , 1 ) ;
7070 Assert . AreEqual ( TaskStatus . Success , tree . Tick ( ) ) ;
7171 Assert . AreEqual ( 2 , _invokeCount ) ;
7272 }
73-
73+
7474 [ Test ]
7575 public void Create_a_nested_sequence_then_add_an_action_to_the_parent ( ) {
7676 var tree = _builder
@@ -90,16 +90,16 @@ public void Create_a_nested_sequence_then_add_an_action_to_the_parent () {
9090 return TaskStatus . Success ;
9191 } )
9292 . Build ( ) ;
93-
93+
9494 var sequence = tree . Root . Children [ 0 ] as Sequence ;
9595 Assert . AreEqual ( 3 , sequence . Children . Count ) ;
96-
96+
9797 var nested = sequence . Children [ 1 ] as Sequence ;
9898 Assert . AreEqual ( nested . Children . Count , 1 ) ;
9999 Assert . AreEqual ( TaskStatus . Success , tree . Tick ( ) ) ;
100100 Assert . AreEqual ( 3 , _invokeCount ) ;
101101 }
102-
102+
103103 [ Test ]
104104 public void Create_two_nested_sequences_with_actions ( ) {
105105 var tree = _builder
@@ -116,16 +116,16 @@ public void Create_two_nested_sequences_with_actions () {
116116 return TaskStatus . Success ;
117117 } )
118118 . Build ( ) ;
119-
119+
120120 var sequence = tree . Root . Children [ 0 ] as Sequence ;
121121 Assert . AreEqual ( 2 , sequence . Children . Count ) ;
122-
122+
123123 var nested = sequence . Children [ 0 ] as Sequence ;
124124 Assert . AreEqual ( nested . Children . Count , 1 ) ;
125-
125+
126126 var nestedAlt = sequence . Children [ 1 ] as Sequence ;
127127 Assert . AreEqual ( nestedAlt . Children . Count , 1 ) ;
128-
128+
129129 Assert . AreEqual ( TaskStatus . Success , tree . Tick ( ) ) ;
130130 Assert . AreEqual ( 2 , _invokeCount ) ;
131131 }
@@ -145,9 +145,9 @@ public void Create_a_selector () {
145145 return TaskStatus . Success ;
146146 } )
147147 . Build ( ) ;
148-
148+
149149 var selector = tree . Root . Children [ 0 ] as Selector ;
150-
150+
151151 Assert . AreEqual ( tree . Root . Children . Count , 1 ) ;
152152 Assert . AreEqual ( selector . Children . Count , 2 ) ;
153153 Assert . AreEqual ( TaskStatus . Success , tree . Tick ( ) ) ;
@@ -169,9 +169,9 @@ public void Create_a_selector () {
169169 return TaskStatus . Success ;
170170 } )
171171 . Build ( ) ;
172-
172+
173173 var parallel = tree . Root . Children [ 0 ] as Parallel ;
174-
174+
175175 Assert . AreEqual ( tree . Root . Children . Count , 1 ) ;
176176 Assert . AreEqual ( parallel . Children . Count , 2 ) ;
177177 Assert . AreEqual ( TaskStatus . Success , tree . Tick ( ) ) ;
@@ -193,7 +193,7 @@ public void It_should_add_a_condition () {
193193 return TaskStatus . Success ;
194194 } )
195195 . Build ( ) ;
196-
196+
197197 var sequence = tree . Root . Children [ 0 ] as Sequence ;
198198 var condition = sequence . Children [ 0 ] as ConditionGeneric ;
199199
@@ -202,7 +202,7 @@ public void It_should_add_a_condition () {
202202 Assert . AreEqual ( TaskStatus . Success , tree . Tick ( ) ) ;
203203 Assert . AreEqual ( 2 , _invokeCount ) ;
204204 }
205-
205+
206206 [ Test ]
207207 public void It_should_add_a_condition_without_a_name ( ) {
208208 var tree = _builder
@@ -211,15 +211,15 @@ public void It_should_add_a_condition_without_a_name () {
211211 return true ;
212212 } )
213213 . Build ( ) ;
214-
214+
215215 var condition = tree . Root . Children [ 0 ] as ConditionGeneric ;
216216
217217 Assert . IsNotNull ( condition ) ;
218218 Assert . AreEqual ( TaskStatus . Success , tree . Tick ( ) ) ;
219219 Assert . AreEqual ( 1 , _invokeCount ) ;
220220 }
221221 }
222-
222+
223223 public class DoMethod : BehaviorTreeBuilderTest {
224224 [ Test ]
225225 public void It_should_add_an_action ( ) {
@@ -229,14 +229,14 @@ public void It_should_add_an_action () {
229229 return TaskStatus . Success ;
230230 } )
231231 . Build ( ) ;
232-
232+
233233 var action = tree . Root . Children [ 0 ] as ActionGeneric ;
234234
235235 Assert . IsNotNull ( action ) ;
236236 Assert . AreEqual ( TaskStatus . Success , tree . Tick ( ) ) ;
237237 Assert . AreEqual ( 1 , _invokeCount ) ;
238238 }
239-
239+
240240 [ Test ]
241241 public void It_should_add_an_action_without_a_name ( ) {
242242 var tree = _builder
@@ -245,7 +245,7 @@ public void It_should_add_an_action_without_a_name () {
245245 return TaskStatus . Success ;
246246 } )
247247 . Build ( ) ;
248-
248+
249249 var action = tree . Root . Children [ 0 ] as ActionGeneric ;
250250
251251 Assert . IsNotNull ( action ) ;
@@ -270,7 +270,7 @@ public void It_should_add_a_decorator () {
270270 . Build ( ) ;
271271
272272 var decorator = tree . Root . Children [ 0 ] as DecoratorGeneric ;
273-
273+
274274 Assert . IsNotNull ( decorator ) ;
275275 Assert . AreEqual ( TaskStatus . Failure , tree . Tick ( ) ) ;
276276 Assert . AreEqual ( 2 , _invokeCount ) ;
@@ -291,7 +291,7 @@ public void It_should_add_a_decorator_without_a_name () {
291291 . Build ( ) ;
292292
293293 var decorator = tree . Root . Children [ 0 ] as DecoratorGeneric ;
294-
294+
295295 Assert . IsNotNull ( decorator ) ;
296296 Assert . AreEqual ( TaskStatus . Failure , tree . Tick ( ) ) ;
297297 Assert . AreEqual ( 2 , _invokeCount ) ;
@@ -319,7 +319,7 @@ public void It_should_move_to_the_next_node_on_End () {
319319
320320 var sequence = tree . Root . Children [ 0 ] as Sequence ;
321321 var decorator = sequence . Children [ 0 ] as DecoratorGeneric ;
322-
322+
323323 Assert . IsNotNull ( decorator ) ;
324324 Assert . AreEqual ( TaskStatus . Success , tree . Tick ( ) ) ;
325325 Assert . AreEqual ( 3 , _invokeCount ) ;
@@ -338,13 +338,13 @@ public void It_should_create_an_inverter () {
338338 . Build ( ) ;
339339
340340 var decorator = tree . Root . Children [ 0 ] as Inverter ;
341-
341+
342342 Assert . IsNotNull ( decorator ) ;
343343 Assert . AreEqual ( TaskStatus . Failure , tree . Tick ( ) ) ;
344344 Assert . AreEqual ( 1 , _invokeCount ) ;
345345 }
346346 }
347-
347+
348348 public class ReturnSuccessMethod : BehaviorTreeBuilderTest {
349349 [ Test ]
350350 public void It_should_create_a_ReturnSuccess ( ) {
@@ -357,13 +357,13 @@ public void It_should_create_a_ReturnSuccess () {
357357 . Build ( ) ;
358358
359359 var decorator = tree . Root . Children [ 0 ] as ReturnSuccess ;
360-
360+
361361 Assert . IsNotNull ( decorator ) ;
362362 Assert . AreEqual ( TaskStatus . Success , tree . Tick ( ) ) ;
363363 Assert . AreEqual ( 1 , _invokeCount ) ;
364364 }
365365 }
366-
366+
367367 public class ReturnFailureMethod : BehaviorTreeBuilderTest {
368368 [ Test ]
369369 public void It_should_create_a_ReturnFailure ( ) {
@@ -376,7 +376,7 @@ public void It_should_create_a_ReturnFailure () {
376376 . Build ( ) ;
377377
378378 var decorator = tree . Root . Children [ 0 ] as ReturnFailure ;
379-
379+
380380 Assert . IsNotNull ( decorator ) ;
381381 Assert . AreEqual ( TaskStatus . Failure , tree . Tick ( ) ) ;
382382 Assert . AreEqual ( 1 , _invokeCount ) ;
@@ -394,7 +394,7 @@ public void It_should_add_a_random_chance () {
394394 return TaskStatus . Success ;
395395 } )
396396 . Build ( ) ;
397-
397+
398398 var sequence = tree . Root . Children [ 0 ] as Sequence ;
399399 var condition = sequence . Children [ 0 ] as RandomChance ;
400400
@@ -435,22 +435,42 @@ public void It_should_add_a_WaitTime_action () {
435435 var tree = _builder
436436 . WaitTime ( "Custom" )
437437 . Build ( ) ;
438-
438+
439439 var waitTime = tree . Root . Children [ 0 ] as WaitTime ;
440-
440+
441441 Assert . IsNotNull ( waitTime ) ;
442442 }
443-
443+
444444 [ Test ]
445445 public void It_should_set_WaitTime_duration ( ) {
446446 var tree = _builder
447447 . WaitTime ( 2f )
448448 . Build ( ) ;
449-
449+
450450 var waitTime = tree . Root . Children [ 0 ] as WaitTime ;
451-
451+
452452 Assert . AreEqual ( 2f , waitTime . time ) ;
453453 }
454454 }
455+
456+ public class SpliceMethod : BehaviorTreeBuilderTest {
457+ [ Test ]
458+ public void It_should_not_fail_when_aborting_a_built_condition ( ) {
459+ var treeAlt = new BehaviorTreeBuilder ( null )
460+ . Sequence ( )
461+ . Condition ( ( ) => false )
462+ . End ( )
463+ . Build ( ) ;
464+
465+ var tree = _builder
466+ . Parallel ( )
467+ . Splice ( treeAlt )
468+ . Build ( ) ;
469+
470+ Assert . DoesNotThrow ( ( ) => {
471+ tree . Tick ( ) ;
472+ } ) ;
473+ }
474+ }
455475 }
456- }
476+ }
0 commit comments