@@ -89,3 +89,28 @@ test("when second child fails, then entire sequence fails", async (assert) => {
89
89
mockChild1 . verify ( ( m ) => m . tick ( time ) , TypeMoq . Times . once ( ) ) ;
90
90
mockChild2 . verify ( ( m ) => m . tick ( time ) , TypeMoq . Times . once ( ) ) ;
91
91
} ) ;
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