@@ -76,4 +76,56 @@ struct SubgraphCompatibilityTests {
7676 #expect( notifiedCount == 0 )
7777 }
7878 }
79+
80+ @MainActor
81+ @Suite // Both ConditionTrait and GraphEnvironmentTrait's isRecursive are true
82+ struct ChildrenTests {
83+ @Test
84+ func addChild( ) {
85+ let graph = Graph ( )
86+ let subgraph = Subgraph ( graph: graph)
87+ let child = Subgraph ( graph: graph)
88+
89+ subgraph. addChild ( child)
90+ #expect( subgraph. childCount == 1 )
91+ #expect( subgraph. isAncestor ( of: child) == true )
92+
93+ #expect( subgraph. child ( at: 0 , tag: nil ) === child)
94+
95+ #expect( child. parentCount == 1 )
96+ #expect( child. parent ( at: 0 ) === subgraph)
97+ }
98+
99+ @Test
100+ func addChildWithTag( ) {
101+ let graph = Graph ( )
102+ let subgraph = Subgraph ( graph: graph)
103+ let child = Subgraph ( graph: graph)
104+
105+ subgraph. addChild ( child, tag: 1 )
106+ #expect( subgraph. childCount == 1 )
107+ #expect( subgraph. isAncestor ( of: child) == true )
108+
109+ var tag = 0
110+ #expect( subgraph. child ( at: 0 , tag: & tag) === child)
111+ #expect( tag == 1 )
112+
113+ #expect( child. parentCount == 1 )
114+ #expect( child. parent ( at: 0 ) === subgraph)
115+ }
116+
117+ @Test
118+ func removeChild( ) {
119+ let graph = Graph ( )
120+ let subgraph = Subgraph ( graph: graph)
121+ let child = Subgraph ( graph: graph)
122+
123+ subgraph. addChild ( child)
124+ subgraph. removeChild ( child)
125+ #expect( subgraph. childCount == 0 )
126+ #expect( subgraph. isAncestor ( of: child) == false )
127+
128+ #expect( child. parentCount == 0 )
129+ }
130+ }
79131}
0 commit comments