diff options
author | cjamin <cjamin@636b058d-ea47-450e-bf9e-a15bfbe3eedb> | 2016-09-02 14:14:24 +0000 |
---|---|---|
committer | cjamin <cjamin@636b058d-ea47-450e-bf9e-a15bfbe3eedb> | 2016-09-02 14:14:24 +0000 |
commit | 255061a7f2846cb7bf25032887e7d411bbd9476f (patch) | |
tree | ca090070f1be3f55e92fdf9caa486baffc66199c | |
parent | 5567bfd646d04a1a3fe64f92fcddf126c3f8a1e2 (diff) |
Test incremental functions + compare results between fixed and incremental
git-svn-id: svn+ssh://scm.gforge.inria.fr/svnroot/gudhi/branches/subsampling_and_spatialsearching@1475 636b058d-ea47-450e-bf9e-a15bfbe3eedb
Former-commit-id: 4e0136ebdb774dffe7d0840bd1544e1dbc991336
-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); } |