From 255061a7f2846cb7bf25032887e7d411bbd9476f Mon Sep 17 00:00:00 2001 From: cjamin Date: Fri, 2 Sep 2016 14:14:24 +0000 Subject: 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 --- .../test/test_Spatial_tree_data_structure.cpp | 44 ++++++++++++++++++++++ 1 file changed, 44 insertions(+) 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 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 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 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 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); } -- cgit v1.2.3