added custom type to unit test

This commit is contained in:
Alexandra Heuschling
2021-01-05 17:51:44 +01:00
parent 6932a33414
commit 9db985e2a6

View File

@@ -4,6 +4,58 @@
#include <OpenMesh/Core/Utils/PropertyManager.hh> #include <OpenMesh/Core/Utils/PropertyManager.hh>
#include <OpenMesh/Core/Utils/PropertyCreator.hh> #include <OpenMesh/Core/Utils/PropertyCreator.hh>
struct MyData_test{
int ival;
double dval;
bool bval;
OpenMesh::Vec4f vec4fval;
};
namespace OpenMesh
{
namespace IO
{
template <> struct binary<MyData_test>
{
typedef MyData_test value_type;
static const bool is_streamable = true;
// return binary size of the value
static size_t size_of(void)
{
return sizeof(int)+sizeof(double)+sizeof(bool)+sizeof(OpenMesh::Vec4f);
}
static size_t size_of(const value_type&)
{
return size_of();
}
static std::string string_for_value_type(void)
{
return "MyData_test";
}
static size_t store(std::ostream& _os, const value_type& _v, bool _swap=false)
{
size_t bytes;
bytes = IO::store( _os, _v.ival, _swap );
bytes += IO::store( _os, _v.dval, _swap );
bytes += IO::store( _os, _v.bval, _swap );
bytes += IO::store( _os, _v.vec4fval, _swap );
return _os.good() ? bytes : 0;
}
static size_t restore( std::istream& _is, value_type& _v, bool _swap=false)
{
size_t bytes;
bytes = IO::restore( _is, _v.ival, _swap );
bytes += IO::restore( _is, _v.dval, _swap );
bytes += IO::restore( _is, _v.bval, _swap );
bytes += IO::restore( _is, _v.vec4fval, _swap );
return _is.good() ? bytes : 0;
}
};
}
}
namespace { namespace {
class OpenMeshReadWriteOM : public OpenMeshBase { class OpenMeshReadWriteOM : public OpenMeshBase {
@@ -1723,8 +1775,6 @@ TEST_F(OpenMeshReadWriteOM, WriteAndLoadDoubles) {
EXPECT_EQ(mesh.normal(OpenMesh::FaceHandle(0)), mesh2.normal(OpenMesh::FaceHandle(0))); EXPECT_EQ(mesh.normal(OpenMesh::FaceHandle(0)), mesh2.normal(OpenMesh::FaceHandle(0)));
} }
/* /*
* Create Property from String * Create Property from String
*/ */
@@ -1750,9 +1800,16 @@ TEST_F(OpenMeshReadWriteOM, PropertyFromString)
bool has_vec_float_prop = OpenMesh::hasProperty<OpenMesh::VertexHandle, std::vector<float>>(mesh_, vec_float_prop_name.c_str()); bool has_vec_float_prop = OpenMesh::hasProperty<OpenMesh::VertexHandle, std::vector<float>>(mesh_, vec_float_prop_name.c_str());
EXPECT_TRUE(has_vec_float_prop); EXPECT_TRUE(has_vec_float_prop);
} }
{
std::string MyData_prop_name = "my MyData prop";
OpenMesh::create_property_from_string<OpenMesh::VertexHandle>(mesh_, "MyData_test", MyData_prop_name);
bool has_myData_prop = OpenMesh::hasProperty<OpenMesh::VertexHandle, MyData_test>(mesh_, MyData_prop_name.c_str());
EXPECT_TRUE(has_myData_prop);
}
} }
} }
//OM_REGISTER_PROPERTY_TYPE(double, "double") OM_REGISTER_PROPERTY_TYPE(std::vector<float>)
OM_REGISTER_PROPERTY_TYPE(std::vector<float>, "std::vector<float>") OM_REGISTER_PROPERTY_TYPE(MyData_test)