diff options
Diffstat (limited to 'src/Spatial_searching')
-rw-r--r-- | src/Spatial_searching/test/test_Spatial_tree_data_structure.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/Spatial_searching/test/test_Spatial_tree_data_structure.cpp b/src/Spatial_searching/test/test_Spatial_tree_data_structure.cpp index 0ca35bc6..207b047f 100644 --- a/src/Spatial_searching/test/test_Spatial_tree_data_structure.cpp +++ b/src/Spatial_searching/test/test_Spatial_tree_data_structure.cpp @@ -50,25 +50,69 @@ BOOST_AUTO_TEST_CASE(test_Spatial_tree_data_structure) Points_ds points_ds(points); + // Test query_k_nearest_neighbors std::size_t closest_pt_index = points_ds.query_k_nearest_neighbors(points[10], 1, false).begin()->first; BOOST_CHECK(closest_pt_index == 10); auto kns_range = points_ds.query_k_nearest_neighbors(points[20], 10, true); + std::vector<std::size_t> knn_result; FT last_dist = -1.; for (auto const& nghb : kns_range) { BOOST_CHECK(nghb.second > last_dist); + knn_result.push_back(nghb.second); last_dist = nghb.second; } + // Test query_incremental_nearest_neighbors + closest_pt_index = + points_ds.query_incremental_nearest_neighbors(points[10]).begin()->first; + BOOST_CHECK(closest_pt_index == 10); + + auto ins_range = points_ds.query_incremental_nearest_neighbors(points[20]); + + std::vector<std::size_t> inn_result; + last_dist = -1.; + auto ins_it = ins_range.begin(); + for (int i = 0 ; i < 10 ; ++ins_it, ++i) + { + auto const& nghb = *ins_it; + BOOST_CHECK(nghb.second > last_dist); + inn_result.push_back(nghb.second); + last_dist = nghb.second; + } + + // Same result for KNN and INN? + BOOST_CHECK(knn_result == inn_result); + + // Test query_k_farthest_neighbors auto kfs_range = points_ds.query_k_farthest_neighbors(points[20], 10, true); + std::vector<std::size_t> kfn_result; last_dist = kfs_range.begin()->second; for (auto const& nghb : kfs_range) { BOOST_CHECK(nghb.second <= last_dist); + kfn_result.push_back(nghb.second); + last_dist = nghb.second; + } + + // Test query_k_farthest_neighbors + auto ifs_range = points_ds.query_incremental_farthest_neighbors(points[20]); + + std::vector<std::size_t> ifn_result; + last_dist = ifs_range.begin()->second; + auto ifs_it = ifs_range.begin(); + for (int i = 0; i < 10; ++ifs_it, ++i) + { + auto const& nghb = *ifs_it; + BOOST_CHECK(nghb.second <= last_dist); + ifn_result.push_back(nghb.second); last_dist = nghb.second; } + + // Same result for KFN and IFN? + BOOST_CHECK(kfn_result == ifn_result); } |