@@ -9,6 +9,7 @@ const __source = "res://addons/beehave/nodes/composites/selector.gd"
99const __count_up_action = "res://test/actions/count_up_action.gd"
1010const __blackboard = "res://addons/beehave/blackboard.gd"
1111const __tree = "res://addons/beehave/nodes/beehave_tree.gd"
12+ const __selector_reactive = "res://addons/beehave/nodes/composites/selector_reactive.gd"
1213
1314var tree : BeehaveTree
1415var selector : SelectorComposite
@@ -125,3 +126,29 @@ func test_not_interrupt_first_after_finished() -> void:
125126
126127 selector .remove_child (action3 )
127128
129+
130+ func test_interrupt_when_nested () -> void :
131+ var selector_reactive = auto_free (load (__selector_reactive ).new ())
132+ var fake_condition = auto_free (load (__count_up_action ).new ())
133+
134+ tree .remove_child (selector )
135+ tree .add_child (selector_reactive )
136+ selector_reactive .add_child (fake_condition )
137+ selector_reactive .add_child (selector )
138+
139+ fake_condition .status = BeehaveNode .FAILURE
140+ action1 .status = BeehaveNode .RUNNING
141+
142+ assert_that (tree .tick ()).is_equal (BeehaveNode .RUNNING )
143+ assert_that (action1 .count ).is_equal (1 )
144+ assert_that (action2 .count ).is_equal (0 )
145+
146+ fake_condition .status = BeehaveNode .SUCCESS
147+ assert_that (tree .tick ()).is_equal (BeehaveNode .SUCCESS )
148+ assert_that (action1 .count ).is_equal (0 )
149+ assert_that (action2 .count ).is_equal (0 )
150+
151+ # clean up...
152+ selector_reactive .remove_child (selector )
153+ tree .remove_child (selector_reactive )
154+ tree .add_child (selector )
0 commit comments