diff options
author | ROUVREAU Vincent <vincent.rouvreau@inria.fr> | 2020-04-12 10:33:38 +0200 |
---|---|---|
committer | ROUVREAU Vincent <vincent.rouvreau@inria.fr> | 2020-04-12 10:33:38 +0200 |
commit | 1ce5d0d19e13a14e8a67442aec7bc40eae68dc8e (patch) | |
tree | 4e4c148cfd7935e8a686a7cafaaaacba2db432b9 /src/Collapse/test | |
parent | f000725296c1962155e2ec331a3db6244d7c9f9e (diff) |
Modify interface and utils
Diffstat (limited to 'src/Collapse/test')
-rw-r--r-- | src/Collapse/test/collapse_unit_test.cpp | 129 |
1 files changed, 82 insertions, 47 deletions
diff --git a/src/Collapse/test/collapse_unit_test.cpp b/src/Collapse/test/collapse_unit_test.cpp index 38adfa8a..3a07e088 100644 --- a/src/Collapse/test/collapse_unit_test.cpp +++ b/src/Collapse/test/collapse_unit_test.cpp @@ -11,6 +11,7 @@ #include <iostream> #include <tuple> #include <vector> +#include <array> #define BOOST_TEST_DYN_LINK #define BOOST_TEST_MODULE "collapse" @@ -32,7 +33,7 @@ bool find_edge_in_list(const Filtered_edge& edge, const Filtered_sorted_edge_lis } return false; } - +/* void trace_and_check_collapse(const Filtered_sorted_edge_list& edges, const Filtered_sorted_edge_list& removed_edges) { std::cout << "BEFORE COLLAPSE - Total number of edges: " << edges.size() << std::endl; BOOST_CHECK(edges.size() > 0); @@ -68,70 +69,104 @@ void trace_and_check_collapse(const Filtered_sorted_edge_list& edges, const Filt } BOOST_AUTO_TEST_CASE(collapse) { - /* - 1 2 - o---o - | | - | | - | | - o---o - 0 3 - */ + // 1 2 + // o---o + // | | + // | | + // | | + // o---o + // 0 3 Filtered_sorted_edge_list edges {{1., 0, 1}, {1., 1, 2}, {1., 2, 3}, {1., 3, 0}}; trace_and_check_collapse(edges, {}); - /* - 1 2 - o---o - |\ /| - | x | - |/ \| - o---o - 0 3 - */ + // 1 2 + // o---o + // |\ /| + // | x | + // |/ \| + // o---o + // 0 3 edges.push_back({2., 0, 2}); edges.push_back({2., 1, 3}); trace_and_check_collapse(edges, {{2., 1, 3}}); - /* - 1 2 4 - o---o---o - |\ /| | - | x | | - |/ \| | - o---o---o - 0 3 5 - */ + // 1 2 4 + // o---o---o + // |\ /| | + // | x | | + // |/ \| | + // o---o---o + // 0 3 5 edges.push_back({3., 2, 4}); edges.push_back({3., 4, 5}); edges.push_back({3., 5, 3}); trace_and_check_collapse(edges, {{2., 1, 3}}); - /* - 1 2 4 - o---o---o - |\ /|\ /| - | x | x | - |/ \|/ \| - o---o---o - 0 3 5 - */ + // 1 2 4 + // o---o---o + // |\ /|\ /| + // | x | x | + // |/ \|/ \| + // o---o---o + // 0 3 5 edges.push_back({4., 2, 5}); edges.push_back({4., 4, 3}); trace_and_check_collapse(edges, {{2., 1, 3}, {4., 4, 3}}); - /* - 1 2 4 - o---o---o - |\ /|\ /| - | x | x | + [0,4] and [1,5] - |/ \|/ \| - o---o---o - 0 3 5 - */ + // 1 2 4 + // o---o---o + // |\ /|\ /| + // | x | x | + [0,4] and [1,5] + // |/ \|/ \| + // o---o---o + // 0 3 5 edges.push_back({5., 1, 5}); edges.push_back({5., 0, 4}); trace_and_check_collapse(edges, {{2., 1, 3}, {4., 4, 3}, {5., 0, 4}}); -} +}*/ + + +BOOST_AUTO_TEST_CASE(collapse_from_distance_matrix) { + // 1 2 + // o---o + // |\ /| + // | x | + // |/ \| + // o---o + // 0 3 + // Lower diagonal distance matrix + std::array<std::array<double, 4>, 4> distance_matrix = {{{0., 0., 0., 0.}, + {1., 0., 0., 0.}, + {2., 1., 0., 0.}, + {1., 2., 1., 0.} }}; + + std::cout << "COLLAPSE - keep edges: " << std::endl; + Flag_complex_sparse_matrix flag_complex_sparse_matrix(distance_matrix); + Filtered_sorted_edge_list collapse_edges; + flag_complex_sparse_matrix.filtered_edge_collapse( + [&collapse_edges](std::pair<Vertex_handle, Vertex_handle> edge, Filtration_value filtration) { + std::cout << "f[" << std::get<0>(edge) << ", " << std::get<1>(edge) << "] = " << filtration << std::endl; + collapse_edges.push_back({filtration, std::get<0>(edge), std::get<1>(edge)}); + }); + std::cout << "AFTER COLLAPSE - Total number of edges: " << collapse_edges.size() << std::endl; + BOOST_CHECK(collapse_edges.size() == 5); + Filtered_sorted_edge_list edges {{1., 0, 1}, {1., 1, 2}, {1., 2, 3}, {1., 0, 3}, {2., 0, 2}, {2., 1, 3}}; + + for (auto edge_from_collapse : collapse_edges) { + std::cout << "f[" << std::get<1>(edge_from_collapse) << ", " << std::get<2>(edge_from_collapse) << "] = " + << std::get<0>(edge_from_collapse) << std::endl; + // Check each edge from collapse is in the input + BOOST_CHECK(find_edge_in_list(edge_from_collapse, edges)); + } + Filtered_sorted_edge_list removed_edges {{2., 1, 3}}; + + std::cout << "CHECK COLLAPSE - Total number of removed edges: " << removed_edges.size() << std::endl; + for (auto removed_edge : removed_edges) { + std::cout << "f[" << std::get<1>(removed_edge) << ", " << std::get<2>(removed_edge) << "] = " + << std::get<0>(removed_edge) << std::endl; + // Check each removed edge from collapse is in the input + BOOST_CHECK(!find_edge_in_list(removed_edge, collapse_edges)); + } +}
\ No newline at end of file |