From 6225d21fa6fd87edf10731df87cd3a7099049358 Mon Sep 17 00:00:00 2001 From: ROUVREAU Vincent Date: Tue, 3 Mar 2020 16:02:44 +0100 Subject: Add a unitary test for Delaunay complex --- src/Alpha_complex/test/CMakeLists.txt | 4 ++ .../test/Delaunay_complex_unit_test.cpp | 72 ++++++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 src/Alpha_complex/test/Delaunay_complex_unit_test.cpp diff --git a/src/Alpha_complex/test/CMakeLists.txt b/src/Alpha_complex/test/CMakeLists.txt index 0476c6d4..fe4b23e4 100644 --- a/src/Alpha_complex/test/CMakeLists.txt +++ b/src/Alpha_complex/test/CMakeLists.txt @@ -8,11 +8,15 @@ if (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.11.0) add_executable ( Alpha_complex_test_unit Alpha_complex_unit_test.cpp ) target_link_libraries(Alpha_complex_test_unit ${CGAL_LIBRARY}) + add_executable ( Delaunay_complex_test_unit Delaunay_complex_unit_test.cpp ) + target_link_libraries(Delaunay_complex_test_unit ${CGAL_LIBRARY}) if (TBB_FOUND) target_link_libraries(Alpha_complex_test_unit ${TBB_LIBRARIES}) + target_link_libraries(Delaunay_complex_test_unit ${TBB_LIBRARIES}) endif() gudhi_add_boost_test(Alpha_complex_test_unit) + gudhi_add_boost_test(Delaunay_complex_test_unit) add_executable ( Alpha_complex_3d_test_unit Alpha_complex_3d_unit_test.cpp ) target_link_libraries(Alpha_complex_3d_test_unit ${CGAL_LIBRARY}) diff --git a/src/Alpha_complex/test/Delaunay_complex_unit_test.cpp b/src/Alpha_complex/test/Delaunay_complex_unit_test.cpp new file mode 100644 index 00000000..71164705 --- /dev/null +++ b/src/Alpha_complex/test/Delaunay_complex_unit_test.cpp @@ -0,0 +1,72 @@ +/* This file is part of the Gudhi Library - https://gudhi.inria.fr/ - which is released under MIT. + * See file LICENSE or go to https://gudhi.inria.fr/licensing/ for full license details. + * Author(s): Vincent Rouvreau + * + * Copyright (C) 2020 Inria + * + * Modification(s): + * - YYYY/MM Author: Description of the modification + */ + +#define BOOST_TEST_DYN_LINK +#define BOOST_TEST_MODULE "delaunay_complex" +#include +#include + +#include +#include + +#include +#include // NaN +#include + +#include +// to construct a simplex_tree from Delaunay_triangulation +#include +#include +#include +#include + +// Use dynamic_dimension_tag for the user to be able to set dimension +typedef CGAL::Epeck_d< CGAL::Dynamic_dimension_tag > Exact_kernel_d; +// Use static dimension_tag for the user not to be able to set dimension +typedef CGAL::Epeck_d< CGAL::Dimension_tag<5> > Exact_kernel_s; +// Use dynamic_dimension_tag for the user to be able to set dimension +typedef CGAL::Epick_d< CGAL::Dynamic_dimension_tag > Inexact_kernel_d; +// Use static dimension_tag for the user not to be able to set dimension +typedef CGAL::Epick_d< CGAL::Dimension_tag<5> > Inexact_kernel_s; +// The triangulation uses the default instantiation of the TriangulationDataStructure template parameter + +typedef boost::mpl::list list_of_kernel_variants; + +BOOST_AUTO_TEST_CASE_TEMPLATE(Alpha_complex_from_OFF_file, TestedKernel, list_of_kernel_variants) { + std::cout << "*****************************************************************************************************"; + using Point = typename TestedKernel::Point_d; + std::vector points; + // 50 points on a 4-sphere + points = Gudhi::generate_points_on_sphere_d(10, 5, 1.); + + Gudhi::alpha_complex::Alpha_complex alpha_complex(points); + + // Alpha complex + Gudhi::Simplex_tree<> stree_from_alpha_complex; + BOOST_CHECK(alpha_complex.create_complex(stree_from_alpha_complex)); + stree_from_alpha_complex.initialize_filtration(); + + // Delaunay complex + Gudhi::Simplex_tree<> stree_from_delaunay_complex; + BOOST_CHECK(alpha_complex.create_complex(stree_from_delaunay_complex, 0., false, true)); + + // Check all the simplices from alpha complex are in the Delaunay complex + for (auto f_simplex : stree_from_alpha_complex.filtration_simplex_range()) { + std::vector::Vertex_handle> simplex; + for (Gudhi::Simplex_tree<>::Vertex_handle vertex : stree_from_alpha_complex.simplex_vertex_range(f_simplex)) { + std::cout << "(" << vertex << ")"; + simplex.push_back(vertex); + } + std::cout << std::endl; + Gudhi::Simplex_tree<>::Simplex_handle sh = stree_from_delaunay_complex.find(simplex); + BOOST_CHECK(std::isnan(stree_from_delaunay_complex.filtration(sh))); + BOOST_CHECK(sh != stree_from_delaunay_complex.null_simplex()); + } +} -- cgit v1.2.3