summaryrefslogtreecommitdiff
path: root/src/Simplex_tree/test/simplex_tree_unit_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Simplex_tree/test/simplex_tree_unit_test.cpp')
-rw-r--r--src/Simplex_tree/test/simplex_tree_unit_test.cpp152
1 files changed, 41 insertions, 111 deletions
diff --git a/src/Simplex_tree/test/simplex_tree_unit_test.cpp b/src/Simplex_tree/test/simplex_tree_unit_test.cpp
index 20403e2a..0c710651 100644
--- a/src/Simplex_tree/test/simplex_tree_unit_test.cpp
+++ b/src/Simplex_tree/test/simplex_tree_unit_test.cpp
@@ -7,7 +7,7 @@
#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MODULE "simplex_tree"
-#include <boost/test/unit_test.hpp>
+#include <boost/test/included/unit_test.hpp>
#include "gudhi/graph_simplicial_complex.h"
#include "gudhi/reader_utils.h"
@@ -125,8 +125,10 @@ void test_simplex_tree_contains(typeST& simplexTree, typeSimplex& simplex, int p
std::cout << "test_simplex_tree_contains - filtration=" << simplexTree.filtration(*f_simplex) << "||" << simplex.second << std::endl;
BOOST_CHECK(AreAlmostTheSame(simplexTree.filtration(*f_simplex), simplex.second));
- int simplexIndex = simplex.first.size() - 1;
- for (auto vertex : simplexTree.simplex_vertex_range(*f_simplex)) {
+ int simplexIndex=simplex.first.size()-1;
+ std::sort(simplex.first.begin(), simplex.first.end()); // if the simplex wasn't sorted, the next test could fail
+ for( auto vertex : simplexTree.simplex_vertex_range(*f_simplex) )
+ {
std::cout << "test_simplex_tree_contains - vertex=" << vertex << "||" << simplex.first.at(simplexIndex) << std::endl;
BOOST_CHECK(vertex == simplex.first.at(simplexIndex));
BOOST_CHECK(simplexIndex >= 0);
@@ -521,113 +523,41 @@ BOOST_AUTO_TEST_CASE(NSimplexAndSubfaces_tree_insertion) {
std::cout << std::endl;
}
- std::cout << "********************************************************************" << std::endl;
- // TEST COFACE ALGORITHM
- st.set_dimension(3);
- std::cout << "COFACE ALGORITHM" << std::endl;
- std::vector<Vertex_handle> v;
- std::vector<Vertex_handle> simplex;
- std::vector<typeST::Simplex_handle> result;
- v.push_back(3);
- std::cout << "First test : " << std::endl;
- std::cout << "Star of (3):" << std::endl;
-
- simplex.push_back(3);
- result.push_back(st.find(simplex));
- simplex.clear();
-
- simplex.push_back(3);
- simplex.push_back(0);
- result.push_back(st.find(simplex));
- simplex.clear();
-
- simplex.push_back(4);
- simplex.push_back(3);
- result.push_back(st.find(simplex));
- simplex.clear();
-
- simplex.push_back(5);
- simplex.push_back(4);
- simplex.push_back(3);
- result.push_back(st.find(simplex));
- simplex.clear();
-
- simplex.push_back(5);
- simplex.push_back(3);
- result.push_back(st.find(simplex));
- simplex.clear();
-
- test_cofaces(st, v, 0, result);
- v.clear();
- result.clear();
-
- v.push_back(1);
- v.push_back(7);
- std::cout << "Second test : " << std::endl;
- std::cout << "Star of (1,7): " << std::endl;
-
- simplex.push_back(7);
- simplex.push_back(1);
- result.push_back(st.find(simplex));
- simplex.clear();
-
- simplex.push_back(7);
- simplex.push_back(6);
- simplex.push_back(1);
- simplex.push_back(0);
- result.push_back(st.find(simplex));
- simplex.clear();
-
- simplex.push_back(7);
- simplex.push_back(1);
- simplex.push_back(0);
- result.push_back(st.find(simplex));
- simplex.clear();
-
- simplex.push_back(7);
- simplex.push_back(6);
- simplex.push_back(1);
- result.push_back(st.find(simplex));
- simplex.clear();
-
- test_cofaces(st, v, 0, result);
- result.clear();
-
- std::cout << "Third test : " << std::endl;
- std::cout << "2-dimension Cofaces of simplex(1,7) : " << std::endl;
-
- simplex.push_back(7);
- simplex.push_back(1);
- simplex.push_back(0);
- result.push_back(st.find(simplex));
- simplex.clear();
-
- simplex.push_back(7);
- simplex.push_back(6);
- simplex.push_back(1);
- result.push_back(st.find(simplex));
- simplex.clear();
-
- test_cofaces(st, v, 1, result);
- result.clear();
-
- std::cout << "Cofaces with a codimension too high (codimension + vetices > tree.dimension) :" << std::endl;
- test_cofaces(st, v, 5, result);
- // std::cout << "Cofaces with an empty codimension" << std::endl;
- // test_cofaces(st, v, -1, result);
- // std::cout << "Cofaces in an empty simplex tree" << std::endl;
- // typeST empty_tree;
- // test_cofaces(empty_tree, v, 1, result);
- // std::cout << "Cofaces of an empty simplex" << std::endl;
- // v.clear();
- // test_cofaces(st, v, 1, result);
-
- /*
- // TEST Off read
- std::cout << "********************************************************************" << std::endl;
- typeST st2;
- st2.tree_from_off("test.off");
- std::cout << st2;
- */
+ std::cout << "********************************************************************" << std::endl;
+ // TEST Copy constructor / Move
+ std::cout << "Printing st" << std::endl;
+ std::cout << &st << std::endl;
+ st.print_tree();
+ typeST st_copy_1 = st;
+ BOOST_CHECK(st == st_copy_1);
+ typeST st_move = std::move(st);
+ std::cout << "Printing a copy of st" << std::endl;
+ std::cout << &st_copy_1 << std::endl;
+ st_copy_1.print_tree();
+ BOOST_CHECK(st_move == st_copy_1);
+ std::cout << "Printing a move of st" << std::endl;
+ std::cout << &st_move << std::endl;
+ st_move.print_tree();
+ typeST st_empty;
+ BOOST_CHECK(st == st_empty);
+ std::cout << "Printing st again" << std::endl;
+ std::cout << &st << std::endl;
+ st.print_tree();
+
+ std::cout << "********************************************************************" << std::endl;
+ // TEST Edge_contraction
+ typeST st_copy_2 = st_copy_1, st_copy_3 = st_copy_1, st_copy_4 = st_copy_1;
+ st_copy_1.edge_contraction(0, 3);
+ std::cout << "Printing a copy of st, with the edge (0, 3) contracted, 3 being contracted in 0" << std::endl;
+ st_copy_1.print_tree();
+ st_copy_2.edge_contraction(1, 3);
+ std::cout << "Printing a copy of st, with the edge (1, 3) contracted, 3 being contracted in 1" << std::endl;
+ st_copy_2.print_tree();
+ st_copy_3.edge_contraction(3, 4);
+ std::cout << "Printing a copy of st, with the edge (3, 4) contracted, 4 being contracted in 3" << std::endl;
+ st_copy_3.print_tree();
+ st_copy_4.edge_contraction(1, 6);
+ std::cout << "Printing a copy of st, with the edge (1, 6) contracted, 6 being contracted in 1" << std::endl;
+ st_copy_4.print_tree();
}