From 9ce58f111437dcd077733dbd122cdaa0f99fa48d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20M=C3=B6bius?= Date: Mon, 10 Dec 2018 08:52:20 +0100 Subject: [PATCH] =?UTF-8?q?-=20Fixed=20PolyConnectivity=20is=5Fcollapse=5F?= =?UTF-8?q?ok,=20missing=20some=20configurations=20(Thanks=20to=20Simon=20?= =?UTF-8?q?Fl=C3=B6ry=20for=20the=20patch)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Unittests/unittests_polymesh_collapse.cc | 70 ++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 src/Unittests/unittests_polymesh_collapse.cc diff --git a/src/Unittests/unittests_polymesh_collapse.cc b/src/Unittests/unittests_polymesh_collapse.cc new file mode 100644 index 00000000..594dd1b6 --- /dev/null +++ b/src/Unittests/unittests_polymesh_collapse.cc @@ -0,0 +1,70 @@ +#include +#include + +#include + +namespace { + +class OpenMeshCollapsePoly : public OpenMeshBasePoly { + + protected: + + // This function is called before each test is run + virtual void SetUp() { + } + + // This function is called after all tests are through + virtual void TearDown() { + + // Do some final stuff with the member data here... + } + + // Member already defined in OpenMeshBase + //Mesh mesh_; +}; + +/* + * ==================================================================== + * Define tests below + * ==================================================================== + */ + + + + +/* + * This code tests is_collapse_ok on a double sided triangle. The + * test mesh comprises three vertices, that are connected to form two + * triangles of opposite orientation. All halfedges should be non collapsable. + */ +TEST_F(OpenMeshCollapsePoly, CheckCollapseOkDoublesidedTriangle) { + + mesh_.clear(); + + Mesh::VertexHandle vh0 = mesh_.add_vertex(Mesh::Point(0,0,0)); + Mesh::VertexHandle vh1 = mesh_.add_vertex(Mesh::Point(1,0,0)); + Mesh::VertexHandle vh2 = mesh_.add_vertex(Mesh::Point(1,1,0)); + mesh_.add_face(vh0, vh1, vh2); + mesh_.add_face(vh0, vh2, vh1); + + + + mesh_.request_vertex_status(); + mesh_.request_face_status(); + mesh_.request_edge_status(); + + int collapsable = 0; + + for ( const auto hh : mesh_.all_halfedges() ) + { + if (mesh_.is_collapse_ok(hh) ) + collapsable++; + } + + + EXPECT_EQ(collapsable,0) << "No collapse should be ok when we have only a double sided Triangle"; +} + + + +}