summaryrefslogtreecommitdiff
path: root/src/Spatial_searching
diff options
context:
space:
mode:
authorcjamin <cjamin@636b058d-ea47-450e-bf9e-a15bfbe3eedb>2016-09-02 14:14:24 +0000
committercjamin <cjamin@636b058d-ea47-450e-bf9e-a15bfbe3eedb>2016-09-02 14:14:24 +0000
commit255061a7f2846cb7bf25032887e7d411bbd9476f (patch)
treeca090070f1be3f55e92fdf9caa486baffc66199c /src/Spatial_searching
parent5567bfd646d04a1a3fe64f92fcddf126c3f8a1e2 (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
Diffstat (limited to 'src/Spatial_searching')
-rw-r--r--src/Spatial_searching/test/test_Spatial_tree_data_structure.cpp44
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);
}