OM_DEPRECATED("Use the constructor without parameter 'existing' instead. Check for existance with hasProperty")// As long as this overload exists, initial value must be first parameter due to ambiguity for properties of type bool
OM_DEPRECATED("Use the constructor without parameter 'existing' instead. Check for existance with hasProperty")// As long as this overload exists, initial value must be first parameter due to ambiguity for properties of type bool
std::cout<<"move constructing property from temporary took "<<std::chrono::duration_cast<std::chrono::milliseconds>(t_end-t_start).count()<<"ms"<<std::endl;
TIMING_OUTPUT(std::cout<<"move constructing property from temporary took "<<std::chrono::duration_cast<std::chrono::milliseconds>(t_end-t_start).count()<<"ms"<<std::endl;)
EXPECT_FALSE(prop1.isValid())<<"prop1 should have been invalidated";
EXPECT_FALSE(prop1.isValid())<<"prop1 should have been invalidated";
std::cout<<"move constructing from named took "<<std::chrono::duration_cast<std::chrono::milliseconds>(t_end-t_start).count()<<"ms"<<std::endl;
TIMING_OUTPUT(std::cout<<"move constructing from named took "<<std::chrono::duration_cast<std::chrono::milliseconds>(t_end-t_start).count()<<"ms"<<std::endl;)
EXPECT_TRUE(prop1.isValid())<<"named properties cannot be invalidated";
EXPECT_TRUE(prop1.isValid())<<"named properties cannot be invalidated";
std::cout<<"copying property temporary to temporary took "<<std::chrono::duration_cast<std::chrono::milliseconds>(t_end-t_start).count()<<"ms"<<std::endl;
TIMING_OUTPUT(std::cout<<"copying property temporary to temporary took "<<std::chrono::duration_cast<std::chrono::milliseconds>(t_end-t_start).count()<<"ms"<<std::endl;)
std::cout<<"copying property temporary to named took "<<std::chrono::duration_cast<std::chrono::milliseconds>(t_end-t_start).count()<<"ms"<<std::endl;
TIMING_OUTPUT(std::cout<<"copying property temporary to named took "<<std::chrono::duration_cast<std::chrono::milliseconds>(t_end-t_start).count()<<"ms"<<std::endl;)
std::cout<<"copying property named to temporary took "<<std::chrono::duration_cast<std::chrono::milliseconds>(t_end-t_start).count()<<"ms"<<std::endl;
TIMING_OUTPUT(std::cout<<"copying property named to temporary took "<<std::chrono::duration_cast<std::chrono::milliseconds>(t_end-t_start).count()<<"ms"<<std::endl;)
std::cout<<"copying property named to named with different name took "<<std::chrono::duration_cast<std::chrono::milliseconds>(t_end-t_start).count()<<"ms"<<std::endl;
TIMING_OUTPUT(std::cout<<"copying property named to named with different name took "<<std::chrono::duration_cast<std::chrono::milliseconds>(t_end-t_start).count()<<"ms"<<std::endl;)
std::cout<<"copying property named to named with same name took "<<std::chrono::duration_cast<std::chrono::milliseconds>(t_end-t_start).count()<<"ms"<<std::endl;
TIMING_OUTPUT(std::cout<<"copying property named to named with same name took "<<std::chrono::duration_cast<std::chrono::milliseconds>(t_end-t_start).count()<<"ms"<<std::endl;)
EXPECT_EQ(prop1[OpenMesh::VertexHandle(0)],-13)<<"Property not copied correctly";
EXPECT_EQ(prop1[OpenMesh::VertexHandle(0)],-13)<<"Property not copied correctly";
EXPECT_EQ(prop2[OpenMesh::VertexHandle(0)],-13)<<"Property not copied correctly";
EXPECT_EQ(prop2[OpenMesh::VertexHandle(0)],-13)<<"Property not copied correctly";
std::cout<<"moving property temporary to temporary took "<<std::chrono::duration_cast<std::chrono::milliseconds>(t_end-t_start).count()<<"ms"<<std::endl;
TIMING_OUTPUT(std::cout<<"moving property temporary to temporary took "<<std::chrono::duration_cast<std::chrono::milliseconds>(t_end-t_start).count()<<"ms"<<std::endl;)
EXPECT_FALSE(prop1.isValid())<<"prop1 not invalidated after moving";
EXPECT_FALSE(prop1.isValid())<<"prop1 not invalidated after moving";
std::cout<<"moving property temporary to named took "<<std::chrono::duration_cast<std::chrono::milliseconds>(t_end-t_start).count()<<"ms"<<std::endl;
TIMING_OUTPUT(std::cout<<"moving property temporary to named took "<<std::chrono::duration_cast<std::chrono::milliseconds>(t_end-t_start).count()<<"ms"<<std::endl;)
EXPECT_FALSE(prop1.isValid())<<"prop1 not invalidated after moving";
EXPECT_FALSE(prop1.isValid())<<"prop1 not invalidated after moving";
std::cout<<"moving property named to temporary took "<<std::chrono::duration_cast<std::chrono::milliseconds>(t_end-t_start).count()<<"ms"<<std::endl;
TIMING_OUTPUT(std::cout<<"moving property named to temporary took "<<std::chrono::duration_cast<std::chrono::milliseconds>(t_end-t_start).count()<<"ms"<<std::endl;)
EXPECT_TRUE(prop1.isValid())<<"named prop1 should not be invalidated by moving";
EXPECT_TRUE(prop1.isValid())<<"named prop1 should not be invalidated by moving";
std::cout<<"moving property named to named with different name took "<<std::chrono::duration_cast<std::chrono::milliseconds>(t_end-t_start).count()<<"ms"<<std::endl;
TIMING_OUTPUT(std::cout<<"moving property named to named with different name took "<<std::chrono::duration_cast<std::chrono::milliseconds>(t_end-t_start).count()<<"ms"<<std::endl;)
EXPECT_TRUE(prop1.isValid())<<"named prop1 should not be invalidated by moving";
EXPECT_TRUE(prop1.isValid())<<"named prop1 should not be invalidated by moving";
std::cout<<"moving property named to named with same name took "<<std::chrono::duration_cast<std::chrono::milliseconds>(t_end-t_start).count()<<"ms"<<std::endl;
TIMING_OUTPUT(std::cout<<"moving property named to named with same name took "<<std::chrono::duration_cast<std::chrono::milliseconds>(t_end-t_start).count()<<"ms"<<std::endl;)
EXPECT_TRUE(prop1.isValid())<<"named prop1 should not be invalidated by moving";
EXPECT_TRUE(prop1.isValid())<<"named prop1 should not be invalidated by moving";
std::cout<<"copying property temporary to temporary took "<<std::chrono::duration_cast<std::chrono::milliseconds>(t_end-t_start).count()<<"ms"<<std::endl;
TIMING_OUTPUT(std::cout<<"copying property temporary to temporary took "<<std::chrono::duration_cast<std::chrono::milliseconds>(t_end-t_start).count()<<"ms"<<std::endl;)
std::cout<<"copying property temporary to named took "<<std::chrono::duration_cast<std::chrono::milliseconds>(t_end-t_start).count()<<"ms"<<std::endl;
TIMING_OUTPUT(std::cout<<"copying property temporary to named took "<<std::chrono::duration_cast<std::chrono::milliseconds>(t_end-t_start).count()<<"ms"<<std::endl;)