@@ -142,7 +142,19 @@ bool test_nodes(void) {
142142 rtree_free (tree );
143143 return false;
144144 }
145- struct RTreeNodeH * * children = NULL ;
145+
146+ double root_min [2 ];
147+ double root_max [2 ];
148+ rtree_node_envelope (root , root_min , root_max );
149+ if (root_min [0 ] != 0.0 || root_min [1 ] != 0.0 || root_max [0 ] != 3.0 || root_max [1 ] != 3.0 ) {
150+ fprintf (stderr , "Expected root envelope to be [0, 0], [3, 3], got [%f, %f], [%f, %f]\n" ,
151+ root_min [0 ], root_min [1 ], root_max [0 ], root_max [1 ]);
152+ rtree_node_free (root );
153+ rtree_free (tree );
154+ return false;
155+ }
156+
157+ RTreeNodeH * * children = NULL ;
146158 size_t nchildren = 0 ;
147159 rtree_node_children (root , & children , & nchildren );
148160 if (nchildren != 2 ) {
@@ -153,6 +165,41 @@ bool test_nodes(void) {
153165 return false;
154166 }
155167
168+ double child1_min [2 ];
169+ double child1_max [2 ];
170+ rtree_node_envelope (children [0 ], child1_min , child1_max );
171+ if (child1_min [0 ] != 0.0 || child1_min [1 ] != 0.0 || child1_max [0 ] != 2.0 || child1_max [1 ] != 2.0 ) {
172+ fprintf (stderr , "Expected child1 envelope to be [0, 0], [2, 2], got [%f, %f], [%f, %f]\n" ,
173+ child1_min [0 ], child1_min [1 ], child1_max [0 ], child1_max [1 ]);
174+ rtree_node_children_free (children , nchildren );
175+ rtree_node_free (root );
176+ rtree_free (tree );
177+ return false;
178+ }
179+ double child2_min [2 ];
180+ double child2_max [2 ];
181+ rtree_node_envelope (children [1 ], child2_min , child2_max );
182+ if (child2_min [0 ] != 1.0 || child2_min [1 ] != 1.0 || child2_max [0 ] != 3.0 || child2_max [1 ] != 3.0 ) {
183+ fprintf (stderr , "Expected child2 envelope to be [1, 1], [3, 3], got [%f, %f], [%f, %f]\n" ,
184+ child2_min [0 ], child2_min [1 ], child2_max [0 ], child2_max [1 ]);
185+ rtree_node_children_free (children , nchildren );
186+ rtree_node_free (root );
187+ rtree_free (tree );
188+ return false;
189+ }
190+
191+ RTreeNodeH * * child1children = NULL ;
192+ size_t nchild1children = 0 ;
193+ rtree_node_children (children [0 ], & child1children , & nchild1children );
194+ if (nchild1children != 0 ) {
195+ fprintf (stderr , "Expected child1 to have 0 children, got %zu\n" , nchild1children );
196+ rtree_node_children_free (child1children , nchild1children );
197+ rtree_node_children_free (children , nchildren );
198+ rtree_node_free (root );
199+ rtree_free (tree );
200+ return false;
201+ }
202+
156203 rtree_node_children_free (children , nchildren );
157204 rtree_node_free (root );
158205 rtree_free (tree );
@@ -267,6 +314,18 @@ bool test_rtree_node_1d(void) {
267314 rtree_free (tree );
268315 return false;
269316 }
317+
318+ double root_min [1 ];
319+ double root_max [1 ];
320+ rtree_node_envelope (root , root_min , root_max );
321+ if (root_min [0 ] != -2.0 || root_max [0 ] != 2.0 ) {
322+ fprintf (stderr , "Expected root envelope to be [-2], [2], got [%f], [%f]\n" ,
323+ root_min [0 ], root_max [0 ]);
324+ rtree_node_free (root );
325+ rtree_free (tree );
326+ return false;
327+ }
328+
270329 struct RTreeNodeH * * children = NULL ;
271330 size_t nchildren = 0 ;
272331 rtree_node_children (root , & children , & nchildren );
@@ -277,6 +336,46 @@ bool test_rtree_node_1d(void) {
277336 rtree_free (tree );
278337 return false;
279338 }
339+
340+ double child1_min [1 ];
341+ double child1_max [1 ];
342+ rtree_node_envelope (children [0 ], child1_min , child1_max );
343+ if (child1_min [0 ] != -2.0 || child1_max [0 ] != -1.0 ) {
344+ fprintf (stderr , "Expected child1 envelope to be [-2], [-1], got [%f], [%f]\n" ,
345+ child1_min [0 ], child1_max [0 ]);
346+ rtree_node_children_free (children , nchildren );
347+ rtree_node_free (root );
348+ rtree_free (tree );
349+ return false;
350+ }
351+
352+ double child2_min [1 ];
353+ double child2_max [1 ];
354+ rtree_node_envelope (children [1 ], child2_min , child2_max );
355+ if (child2_min [0 ] != 0.5 || child2_max [0 ] != 2.0 ) {
356+ fprintf (stderr , "Expected child2 envelope to be [0.5], [2], got [%f], [%f]\n" ,
357+ child2_min [0 ], child2_max [0 ]);
358+ rtree_node_children_free (children , nchildren );
359+ rtree_node_free (root );
360+ rtree_free (tree );
361+ return false;
362+ }
363+
364+ RTreeNodeH * * child1children = NULL ;
365+ size_t nchild1children = 0 ;
366+ rtree_node_children (children [0 ], & child1children , & nchild1children );
367+ if (nchild1children != 0 ) {
368+ fprintf (stderr , "Expected child1 to have 0 children, got %zu\n" , nchild1children );
369+ rtree_node_children_free (child1children , nchild1children );
370+ rtree_node_children_free (children , nchildren );
371+ rtree_node_free (root );
372+ rtree_free (tree );
373+ return false;
374+ }
375+
376+ rtree_node_children_free (children , nchildren );
377+ rtree_node_free (root );
378+ rtree_free (tree );
280379 return true;
281380}
282381
0 commit comments