@@ -89,3 +89,28 @@ test("when second child fails, then entire sequence fails", async (assert) => {
8989 mockChild1 . verify ( ( m ) => m . tick ( time ) , TypeMoq . Times . once ( ) ) ;
9090 mockChild2 . verify ( ( m ) => m . tick ( time ) , TypeMoq . Times . once ( ) ) ;
9191} ) ;
92+
93+ test ( "only evaluates the current node" , async ( assert ) => {
94+ init ( ) ;
95+ const time = new TimeData ( ) ;
96+ const mockChild1 = TypeMoq . Mock . ofType < BehaviorTreeNodeInterface > ( ) ;
97+ mockChild1 . setup ( async ( m ) => await m . tick ( time ) )
98+ . returns ( ( ) => Promise . resolve ( BehaviorTreeStatus . Success ) ) ;
99+ const mockChild2 = TypeMoq . Mock . ofType < BehaviorTreeNodeInterface > ( ) ;
100+ mockChild2 . setup ( async ( m ) => await m . tick ( time ) )
101+ . returns ( ( ) => Promise . resolve ( BehaviorTreeStatus . Running ) ) ;
102+ const mockChild3 = TypeMoq . Mock . ofType < BehaviorTreeNodeInterface > ( ) ;
103+ mockChild3 . setup ( async ( m ) => await m . tick ( time ) )
104+ . returns ( ( ) => Promise . resolve ( BehaviorTreeStatus . Failure ) ) ;
105+
106+ testObject . addChild ( mockChild1 . object ) ;
107+ testObject . addChild ( mockChild2 . object ) ;
108+ testObject . addChild ( mockChild3 . object ) ;
109+
110+ assert . is ( BehaviorTreeStatus . Running , await testObject . tick ( time ) ) ;
111+ assert . is ( BehaviorTreeStatus . Running , await testObject . tick ( time ) ) ;
112+
113+ mockChild1 . verify ( ( m ) => m . tick ( time ) , TypeMoq . Times . once ( ) ) ;
114+ mockChild2 . verify ( ( m ) => m . tick ( time ) , TypeMoq . Times . exactly ( 2 ) ) ;
115+ mockChild3 . verify ( ( m ) => m . tick ( time ) , TypeMoq . Times . never ( ) ) ;
116+ } ) ;
0 commit comments