11using System . Collections . Generic ;
2- using Adnc . FluidBT . TaskParents ;
32using Adnc . FluidBT . TaskParents . Composites ;
43using Adnc . FluidBT . Tasks ;
54using NSubstitute ;
@@ -12,7 +11,7 @@ public class TreeTest {
1211 private Tree _tree ;
1312
1413 [ SetUp ]
15- public void SetBehaviorTree ( ) {
14+ public void BeforeEach ( ) {
1615 _gameObject = new GameObject ( "BT" ) ;
1716 _tree = new Tree ( _gameObject ) ;
1817 }
@@ -29,6 +28,70 @@ public void It_should_set_the_root_node_Owner_by_default () {
2928 }
3029 }
3130
31+ public class SpliceMethod : TreeTest {
32+ private GameObject _owner ;
33+ private Tree _treeAlt ;
34+
35+ [ SetUp ]
36+ public void SetupTreeAlt ( ) {
37+ _owner = new GameObject ( "BT" ) ;
38+ _treeAlt = new Tree ( _owner ) ;
39+ }
40+
41+ [ TearDown ]
42+ public void TeardownTreeAlt ( ) {
43+ Object . DestroyImmediate ( _owner ) ;
44+ }
45+
46+ [ Test ]
47+ public void It_should_set_the_trees_root_as_a_child ( ) {
48+ _tree . Splice ( _tree . Root , _treeAlt ) ;
49+
50+ Assert . AreEqual ( _treeAlt . Root , _tree . Root . Children [ 0 ] ) ;
51+ }
52+
53+ [ Test ]
54+ public void It_should_update_all_child_Owner_variables ( ) {
55+ var task = Substitute . For < ITask > ( ) ;
56+ task . Enabled . Returns ( true ) ;
57+
58+ _treeAlt . AddNode ( _treeAlt . Root , task ) ;
59+ var nodes = new List < ITask > { _treeAlt . Root , task } ;
60+
61+ _tree . Splice ( _tree . Root , _treeAlt ) ;
62+
63+ nodes . ForEach ( ( node ) => Assert . AreEqual ( _gameObject , node . Owner ) ) ;
64+ }
65+
66+ [ Test ]
67+ public void It_should_update_all_child_Owner_variables_with_nested_parents ( ) {
68+ var task = Substitute . For < ITask > ( ) ;
69+ task . Enabled . Returns ( true ) ;
70+ var sequence = new Sequence ( ) ;
71+
72+ _treeAlt . AddNode ( _treeAlt . Root , sequence ) ;
73+ _treeAlt . AddNode ( sequence , task ) ;
74+ var nodes = new List < ITask > { sequence , _treeAlt . Root , task } ;
75+
76+ _tree . Splice ( _tree . Root , _treeAlt ) ;
77+
78+ nodes . ForEach ( ( node ) => Assert . AreEqual ( _gameObject , node . Owner ) ) ;
79+ }
80+
81+ [ Test ]
82+ public void It_should_update_all_child_ParentTree_variables ( ) {
83+ var task = Substitute . For < ITask > ( ) ;
84+ task . Enabled . Returns ( true ) ;
85+
86+ _treeAlt . AddNode ( _treeAlt . Root , task ) ;
87+ var nodes = new List < ITask > { _treeAlt . Root , task } ;
88+
89+ _tree . Splice ( _tree . Root , _treeAlt ) ;
90+
91+ nodes . ForEach ( ( node ) => Assert . AreEqual ( _tree , node . ParentTree ) ) ;
92+ }
93+ }
94+
3295 public class AddNodeMethod : TreeTest {
3396 [ Test ]
3497 public void Parent_adds_the_child_reference ( ) {
0 commit comments