Added boundary check for edge properties of triangulated meshes
This commit is contained in:
@@ -255,4 +255,60 @@ TEST_F(OpenMeshConvertPolyMeshToTriangle, VertexPropertyCheckDouble) {
|
||||
|
||||
}
|
||||
|
||||
/* Creates a double property and checks if it works after conversion
|
||||
* especially if edge properties are preserved after triangulation
|
||||
*/
|
||||
TEST_F(OpenMeshConvertPolyMeshToTriangle, EdgePropertyCheckDouble) {
|
||||
|
||||
// Add a double vertex property
|
||||
OpenMesh::EPropHandleT<double> doubleHandle;
|
||||
|
||||
EXPECT_FALSE( mesh_.get_property_handle(doubleHandle,"doubleProp") );
|
||||
|
||||
mesh_.add_property(doubleHandle,"doubleProp");
|
||||
|
||||
// Fill property
|
||||
double index = 0.0;
|
||||
|
||||
for ( Mesh::EdgeIter v_it = mesh_.edges_begin() ; v_it != mesh_.edges_end(); ++v_it ) {
|
||||
mesh_.property(doubleHandle,*v_it) = index;
|
||||
index += 1.0;
|
||||
}
|
||||
|
||||
EXPECT_TRUE(mesh_.get_property_handle(doubleHandle,"doubleProp"));
|
||||
|
||||
//convert triMesh to PolyMesh
|
||||
Mesh p = static_cast<Mesh>(mesh_);
|
||||
|
||||
EXPECT_TRUE(p.get_property_handle(doubleHandle,"doubleProp"));
|
||||
|
||||
// Check if it is ok.
|
||||
Mesh::EdgeIter v_it = p.edges_begin();
|
||||
|
||||
if(p.is_boundary( (*v_it) ))
|
||||
EXPECT_EQ( p.property(doubleHandle,*v_it) , 0.0 ) << "Invalid double value for vertex 0";
|
||||
++v_it;
|
||||
|
||||
if(p.is_boundary( (*v_it) ))
|
||||
EXPECT_EQ( p.property(doubleHandle,*v_it) , 1.0 ) << "Invalid double value for vertex 1";
|
||||
++v_it;
|
||||
|
||||
if(p.is_boundary( (*v_it) ))
|
||||
EXPECT_EQ( p.property(doubleHandle,*v_it) , 2.0 ) << "Invalid double value for vertex 2";
|
||||
++v_it;
|
||||
|
||||
if(p.is_boundary( (*v_it) ))
|
||||
EXPECT_EQ( p.property(doubleHandle,*v_it) , 3.0 ) << "Invalid double value for vertex 3";
|
||||
++v_it;
|
||||
|
||||
EXPECT_FALSE( p.is_boundary(*v_it)) << "Invalid Edge after triangulation";
|
||||
|
||||
//check if deletion in the original mesh affects the converted one.
|
||||
mesh_.get_property_handle(doubleHandle,"doubleProp");
|
||||
mesh_.remove_property(doubleHandle);
|
||||
EXPECT_FALSE(mesh_.get_property_handle(doubleHandle,"doubleProp"));
|
||||
EXPECT_TRUE(p.get_property_handle(doubleHandle,"doubleProp"));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user