@@ -18,28 +18,28 @@ fn dist2(a: Point<f32>, b: Point<f32>) -> f32 {
1818#[ test]
1919fn nearest_neighbor_zero_poins ( ) {
2020 // keep user's original test name
21- let qt = QuadTree :: new ( r ( 0.0 , 0.0 , 100.0 , 100.0 ) , 4 ) ;
21+ let qt = QuadTree :: new ( r ( 0.0 , 0.0 , 100.0 , 100.0 ) , 4 , 8 ) ;
2222 assert ! ( qt. nearest_neighbor( pt( 10.0 , 10.0 ) ) . is_none( ) ) ;
2323}
2424
2525#[ test]
2626fn nearest_neighbor_one_point ( ) {
27- let mut qt = QuadTree :: new ( r ( 0.0 , 0.0 , 100.0 , 100.0 ) , 4 ) ;
27+ let mut qt = QuadTree :: new ( r ( 0.0 , 0.0 , 100.0 , 100.0 ) , 4 , 8 ) ;
2828 qt. insert ( Item { id : 1 , point : pt ( 50.0 , 50.0 ) } ) ;
2929 assert_eq ! ( qt. nearest_neighbor( pt( 10.0 , 10.0 ) ) . unwrap( ) . id, 1 ) ;
3030}
3131
3232#[ test]
3333fn nearest_neighbor_two_points ( ) {
34- let mut qt = QuadTree :: new ( r ( 0.0 , 0.0 , 100.0 , 100.0 ) , 4 ) ;
34+ let mut qt = QuadTree :: new ( r ( 0.0 , 0.0 , 100.0 , 100.0 ) , 4 , 8 ) ;
3535 qt. insert ( Item { id : 1 , point : pt ( 50.0 , 50.0 ) } ) ;
3636 qt. insert ( Item { id : 2 , point : pt ( 60.0 , 60.0 ) } ) ;
3737 assert_eq ! ( qt. nearest_neighbor( pt( 10.0 , 10.0 ) ) . unwrap( ) . id, 1 ) ;
3838}
3939
4040#[ test]
4141fn nn_exact_hit_distance_zero ( ) {
42- let mut qt = QuadTree :: new ( r ( 0.0 , 0.0 , 20.0 , 20.0 ) , 8 ) ;
42+ let mut qt = QuadTree :: new ( r ( 0.0 , 0.0 , 20.0 , 20.0 ) , 8 , 8 ) ;
4343 qt. insert ( Item { id : 7 , point : pt ( 10.0 , 10.0 ) } ) ;
4444 qt. insert ( Item { id : 8 , point : pt ( 3.0 , 4.0 ) } ) ;
4545 let q = pt ( 10.0 , 10.0 ) ;
@@ -56,7 +56,7 @@ fn nn_exact_hit_distance_zero() {
5656#[ test]
5757fn knn_basic_ordering_no_split ( ) {
5858 // capacity high so we do not split
59- let mut qt = QuadTree :: new ( r ( 0.0 , 0.0 , 40.0 , 40.0 ) , 16 ) ;
59+ let mut qt = QuadTree :: new ( r ( 0.0 , 0.0 , 40.0 , 40.0 ) , 16 , 8 ) ;
6060 // unique distances from query (6, 6)
6161 qt. insert ( Item { id : 1 , point : pt ( 5.0 , 5.0 ) } ) ; // d2 = 2
6262 qt. insert ( Item { id : 2 , point : pt ( 6.5 , 6.0 ) } ) ; // d2 = 0.25
@@ -78,7 +78,7 @@ fn knn_basic_ordering_no_split() {
7878#[ test]
7979fn knn_respects_capacity_and_split ( ) {
8080 // capacity small so we force splits across all quadrants
81- let mut qt = QuadTree :: new ( r ( 0.0 , 0.0 , 100.0 , 100.0 ) , 1 ) ;
81+ let mut qt = QuadTree :: new ( r ( 0.0 , 0.0 , 100.0 , 100.0 ) , 1 , 8 ) ;
8282 qt. insert ( Item { id : 1 , point : pt ( 10.0 , 10.0 ) } ) ;
8383 qt. insert ( Item { id : 2 , point : pt ( 90.0 , 10.0 ) } ) ;
8484 qt. insert ( Item { id : 3 , point : pt ( 10.0 , 90.0 ) } ) ;
@@ -98,7 +98,7 @@ fn knn_respects_capacity_and_split() {
9898
9999#[ test]
100100fn knn_k_greater_than_len_no_duplicates ( ) {
101- let mut qt = QuadTree :: new ( r ( 0.0 , 0.0 , 10.0 , 10.0 ) , 2 ) ;
101+ let mut qt = QuadTree :: new ( r ( 0.0 , 0.0 , 10.0 , 10.0 ) , 2 , 8 ) ;
102102 qt. insert ( Item { id : 1 , point : pt ( 1.0 , 1.0 ) } ) ;
103103 qt. insert ( Item { id : 2 , point : pt ( 2.0 , 2.0 ) } ) ;
104104 qt. insert ( Item { id : 3 , point : pt ( 9.0 , 9.0 ) } ) ;
@@ -115,7 +115,7 @@ fn knn_k_greater_than_len_no_duplicates() {
115115#[ test]
116116fn within_strictly_less_than_max_distance ( ) {
117117 // current implementation uses d2 < max_d2, not <=
118- let mut qt = QuadTree :: new ( r ( 0.0 , 0.0 , 100.0 , 100.0 ) , 4 ) ;
118+ let mut qt = QuadTree :: new ( r ( 0.0 , 0.0 , 100.0 , 100.0 ) , 4 , 8 ) ;
119119 let p = pt ( 10.0 , 10.0 ) ;
120120 qt. insert ( Item { id : 1 , point : pt ( 13.0 , 14.0 ) } ) ; // distance = 5.0
121121 qt. insert ( Item { id : 2 , point : pt ( 30.0 , 30.0 ) } ) ;
@@ -133,7 +133,7 @@ fn within_strictly_less_than_max_distance() {
133133#[ test]
134134fn equidistant_tie_returns_one_of_the_candidates ( ) {
135135 // two points equidistant from query
136- let mut qt = QuadTree :: new ( r ( 0.0 , 0.0 , 50.0 , 50.0 ) , 4 ) ;
136+ let mut qt = QuadTree :: new ( r ( 0.0 , 0.0 , 50.0 , 50.0 ) , 4 , 8 ) ;
137137 qt. insert ( Item { id : 10 , point : pt ( 10.0 , 10.0 ) } ) ;
138138 qt. insert ( Item { id : 20 , point : pt ( 10.0 , 12.0 ) } ) ;
139139 let q = pt ( 10.0 , 11.0 ) ;
@@ -145,7 +145,7 @@ fn equidistant_tie_returns_one_of_the_candidates() {
145145fn identical_locations_two_items_pick_one_due_to_strict_lt ( ) {
146146 // both items at the same coordinates
147147 // with current algorithm and strict <, k=2 will only return one of them
148- let mut qt = QuadTree :: new ( r ( 0.0 , 0.0 , 10.0 , 10.0 ) , 4 ) ;
148+ let mut qt = QuadTree :: new ( r ( 0.0 , 0.0 , 10.0 , 10.0 ) , 4 , 8 ) ;
149149 qt. insert ( Item { id : 1 , point : pt ( 5.0 , 5.0 ) } ) ;
150150 qt. insert ( Item { id : 2 , point : pt ( 5.0 , 5.0 ) } ) ;
151151
@@ -157,7 +157,7 @@ fn identical_locations_two_items_pick_one_due_to_strict_lt() {
157157
158158#[ test]
159159fn query_far_outside_root_works ( ) {
160- let mut qt = QuadTree :: new ( r ( 0.0 , 0.0 , 100.0 , 100.0 ) , 4 ) ;
160+ let mut qt = QuadTree :: new ( r ( 0.0 , 0.0 , 100.0 , 100.0 ) , 4 , 8 ) ;
161161 qt. insert ( Item { id : 1 , point : pt ( 0.0 , 0.0 ) } ) ;
162162 qt. insert ( Item { id : 2 , point : pt ( 100.0 , 100.0 ) } ) ;
163163 qt. insert ( Item { id : 3 , point : pt ( 100.0 , 0.0 ) } ) ;
@@ -171,7 +171,7 @@ fn query_far_outside_root_works() {
171171
172172#[ test]
173173fn ordering_is_by_distance_even_after_splits ( ) {
174- let mut qt = QuadTree :: new ( r ( 0.0 , 0.0 , 64.0 , 64.0 ) , 1 ) ; // force deep subdivisions
174+ let mut qt = QuadTree :: new ( r ( 0.0 , 0.0 , 64.0 , 64.0 ) , 1 , 8 ) ; // force deep subdivisions
175175 // place a small grid of points
176176 let mut id = 1u64 ;
177177 for y in ( 4 ..=60 ) . step_by ( 8 ) {
@@ -200,7 +200,7 @@ fn ordering_is_by_distance_even_after_splits() {
200200#[ test]
201201fn midline_and_center_points_are_handled ( ) {
202202 // insert points that lie on child midlines and the exact center
203- let mut qt = QuadTree :: new ( r ( 0.0 , 0.0 , 100.0 , 100.0 ) , 2 ) ;
203+ let mut qt = QuadTree :: new ( r ( 0.0 , 0.0 , 100.0 , 100.0 ) , 2 , 8 ) ;
204204 let center = pt ( 50.0 , 50.0 ) ;
205205 qt. insert ( Item { id : 1 , point : center } ) ;
206206 qt. insert ( Item { id : 2 , point : pt ( 50.0 , 10.0 ) } ) ; // vertical midline
0 commit comments