diff options
Diffstat (limited to 'src/Alpha_complex/test/Weighted_alpha_complex_3d_unit_test.cpp')
-rw-r--r-- | src/Alpha_complex/test/Weighted_alpha_complex_3d_unit_test.cpp | 70 |
1 files changed, 44 insertions, 26 deletions
diff --git a/src/Alpha_complex/test/Weighted_alpha_complex_3d_unit_test.cpp b/src/Alpha_complex/test/Weighted_alpha_complex_3d_unit_test.cpp index 44deb930..6b31bea6 100644 --- a/src/Alpha_complex/test/Weighted_alpha_complex_3d_unit_test.cpp +++ b/src/Alpha_complex/test/Weighted_alpha_complex_3d_unit_test.cpp @@ -43,33 +43,33 @@ typedef boost::mpl::list<Fast_weighted_alpha_complex_3d, Safe_weighted_alpha_com #ifdef GUDHI_DEBUG BOOST_AUTO_TEST_CASE_TEMPLATE(Alpha_complex_weighted_throw, Weighted_alpha_complex_3d, weighted_variants_type_list) { - using Point_3 = typename Weighted_alpha_complex_3d::Point_3; - std::vector<Point_3> w_points; - w_points.push_back(Point_3(0.0, 0.0, 0.0)); - w_points.push_back(Point_3(0.0, 0.0, 0.2)); - w_points.push_back(Point_3(0.2, 0.0, 0.2)); - // w_points.push_back(Point_3(0.6, 0.6, 0.0)); - // w_points.push_back(Point_3(0.8, 0.8, 0.2)); - // w_points.push_back(Point_3(0.2, 0.8, 0.6)); + using Bare_point_3 = typename Weighted_alpha_complex_3d::Bare_point_3; + std::vector<Bare_point_3> w_points; + w_points.push_back(Bare_point_3(0.0, 0.0, 0.0)); + w_points.push_back(Bare_point_3(0.0, 0.0, 0.2)); + w_points.push_back(Bare_point_3(0.2, 0.0, 0.2)); + // w_points.push_back(Bare_point_3(0.6, 0.6, 0.0)); + // w_points.push_back(Bare_point_3(0.8, 0.8, 0.2)); + // w_points.push_back(Bare_point_3(0.2, 0.8, 0.6)); // weights size is different from w_points size to make weighted Alpha_complex_3d throw in debug mode std::vector<double> weights = {0.01, 0.005, 0.006, 0.01, 0.009, 0.001}; - std::cout << "Check exception throw in debug mode" << std::endl; + std::clog << "Check exception throw in debug mode" << std::endl; BOOST_CHECK_THROW(Weighted_alpha_complex_3d wac(w_points, weights), std::invalid_argument); } #endif BOOST_AUTO_TEST_CASE_TEMPLATE(Alpha_complex_weighted, Weighted_alpha_complex_3d, weighted_variants_type_list) { - std::cout << "Weighted alpha complex 3d from points and weights" << std::endl; - using Point_3 = typename Weighted_alpha_complex_3d::Point_3; - std::vector<Point_3> w_points; - w_points.push_back(Point_3(0.0, 0.0, 0.0)); - w_points.push_back(Point_3(0.0, 0.0, 0.2)); - w_points.push_back(Point_3(0.2, 0.0, 0.2)); - w_points.push_back(Point_3(0.6, 0.6, 0.0)); - w_points.push_back(Point_3(0.8, 0.8, 0.2)); - w_points.push_back(Point_3(0.2, 0.8, 0.6)); + std::clog << "Weighted alpha complex 3d from points and weights" << std::endl; + using Bare_point_3 = typename Weighted_alpha_complex_3d::Bare_point_3; + std::vector<Bare_point_3> w_points; + w_points.push_back(Bare_point_3(0.0, 0.0, 0.0)); + w_points.push_back(Bare_point_3(0.0, 0.0, 0.2)); + w_points.push_back(Bare_point_3(0.2, 0.0, 0.2)); + w_points.push_back(Bare_point_3(0.6, 0.6, 0.0)); + w_points.push_back(Bare_point_3(0.8, 0.8, 0.2)); + w_points.push_back(Bare_point_3(0.2, 0.8, 0.6)); // weights size is different from w_points size to make weighted Alpha_complex_3d throw in debug mode std::vector<double> weights = {0.01, 0.005, 0.006, 0.01, 0.009, 0.001}; @@ -78,7 +78,7 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(Alpha_complex_weighted, Weighted_alpha_complex_3d, Gudhi::Simplex_tree<> stree; alpha_complex_p_a_w.create_complex(stree); - std::cout << "Weighted alpha complex 3d from weighted points" << std::endl; + std::clog << "Weighted alpha complex 3d from weighted points" << std::endl; using Weighted_point_3 = typename Weighted_alpha_complex_3d::Weighted_point_3; std::vector<Weighted_point_3> weighted_points; @@ -91,16 +91,34 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(Alpha_complex_weighted, Weighted_alpha_complex_3d, Gudhi::Simplex_tree<> stree_bis; alpha_complex_w_p.create_complex(stree_bis); + for (std::size_t index = 0; index < weighted_points.size(); index++) { + bool found = false; + Weighted_point_3 awp = alpha_complex_w_p.get_point(index); + for (auto weighted_point : weighted_points) { + if ((weighted_point.weight() == awp.weight()) && + (weighted_point.x() == awp.x()) && + (weighted_point.y() == awp.y()) && + (weighted_point.z() == awp.z())) { + found = true; + break; + } + } + // Check all points from alpha complex are found in the input point cloud + BOOST_CHECK(found); + } + // Exception if we go out of range + BOOST_CHECK_THROW(alpha_complex_w_p.get_point(weighted_points.size()), std::out_of_range); + // --------------------- // Compare both versions // --------------------- - std::cout << "Weighted alpha complex 3d is of dimension " << stree_bis.dimension() << " - versus " + std::clog << "Weighted alpha complex 3d is of dimension " << stree_bis.dimension() << " - versus " << stree.dimension() << std::endl; BOOST_CHECK(stree_bis.dimension() == stree.dimension()); - std::cout << "Weighted alpha complex 3d num_simplices " << stree_bis.num_simplices() << " - versus " + std::clog << "Weighted alpha complex 3d num_simplices " << stree_bis.num_simplices() << " - versus " << stree.num_simplices() << std::endl; BOOST_CHECK(stree_bis.num_simplices() == stree.num_simplices()); - std::cout << "Weighted alpha complex 3d num_vertices " << stree_bis.num_vertices() << " - versus " + std::clog << "Weighted alpha complex 3d num_vertices " << stree_bis.num_vertices() << " - versus " << stree.num_vertices() << std::endl; BOOST_CHECK(stree_bis.num_vertices() == stree.num_vertices()); @@ -109,18 +127,18 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(Alpha_complex_weighted, Weighted_alpha_complex_3d, std::vector<int> simplex; std::vector<int> exact_simplex; #ifdef DEBUG_TRACES - std::cout << " ( "; + std::clog << " ( "; #endif for (auto vertex : stree.simplex_vertex_range(*sh)) { simplex.push_back(vertex); #ifdef DEBUG_TRACES - std::cout << vertex << " "; + std::clog << vertex << " "; #endif } #ifdef DEBUG_TRACES - std::cout << ") -> " + std::clog << ") -> " << "[" << stree.filtration(*sh) << "] "; - std::cout << std::endl; + std::clog << std::endl; #endif // Find it in the exact structure |