4#include "unittests_common.hh"
6#include <OpenVolumeMesh/Attribs/StatusAttrib.hh>
8using namespace OpenVolumeMesh;
9using namespace Geometry;
13 generatePolyhedralMesh(mesh_);
15 for(
int i = 0; i < 1; ++i) {
23 generatePolyhedralMesh(mesh_);
25 EXPECT_EQ(12u, mesh_.n_vertices());
26 const size_t nvp = mesh_.n_vertex_props();
29 EXPECT_EQ(nvp + 1, mesh_.n_vertex_props());
31 for(
int i = 0; i < 1; ++i) {
35 v_prop[VertexHandle(0)] = 1.4f;
41 EXPECT_EQ(12u, v_prop3.size());
43 EXPECT_EQ(nvp + 2, mesh_.n_vertex_props());
47 EXPECT_EQ(nvp + 2, mesh_.n_vertex_props());
49 EXPECT_FLOAT_EQ(1.4f, v_prop3[VertexHandle(0)]);
53 EXPECT_EQ(nvp + 3, mesh_.n_vertex_props());
56 mesh_.set_persistent(v_prop_d);
58 EXPECT_EQ(nvp + 1, mesh_.n_vertex_props());
62 EXPECT_EQ(13u, mesh_.n_vertices());
66 EXPECT_EQ(nvp + 1, mesh_.n_vertex_props());
70 EXPECT_EQ(40u, he_prop.size());
72 mesh_.add_edge(VertexHandle(0), VertexHandle(2));
74 EXPECT_EQ(42u, he_prop.size());
79 generateHexahedralMesh(mesh_);
81 for(
int i = 0; i < 1; ++i) {
85 v_prop[VertexHandle(0)] = 24.5f;
86 v_prop[VertexHandle(11)] = 2.34f;
88 mesh_.set_persistent(v_prop);
93 EXPECT_FLOAT_EQ(24.5f, v_prop2[VertexHandle(0)]);
94 EXPECT_FLOAT_EQ(2.34f, v_prop2[VertexHandle(11)]);
99 generateHexahedralMesh(mesh_);
100 const size_t nvp = mesh_.n_vertex_props();
102 for(
int i = 0; i < 1; ++i) {
106 mesh_.set_persistent(v_prop);
109 EXPECT_EQ(nvp + 1, mesh_.n_vertex_props());
111 for(
int i = 0; i < 1; ++i) {
115 EXPECT_EQ(nvp + 1, mesh_.n_vertex_props());
117 mesh_.set_persistent(v_prop,
false);
120 EXPECT_EQ(nvp, mesh_.n_vertex_props());
125 generateHexahedralMesh(mesh_);
130 EXPECT_EQ(1u, mesh_.n_cell_props());
133 EXPECT_THROW(mesh_.set_persistent(c_prop), std::runtime_error);
136 EXPECT_THROW(mesh_.set_shared(c_prop), std::runtime_error);
138 c_prop.set_name(
"test");
140 EXPECT_EQ(c_prop2.name(),
"test");
144 EXPECT_THROW(mesh_.set_persistent(c_prop), std::runtime_error);
145 mesh_.set_shared(c_prop);
146 mesh_.set_persistent(c_prop);
148 EXPECT_EQ(1u, mesh_.n_cell_props());
149 EXPECT_EQ(1u, mesh_.n_persistent_props<
Entity::Cell>());
151 mesh_.set_persistent(c_prop2,
false);
153 EXPECT_EQ(1u, mesh_.n_cell_props());
154 EXPECT_EQ(0u, mesh_.n_persistent_props<
Entity::Cell>());
159 generateHexahedralMesh(mesh_);
163 for(
int i = 0; i < 1; ++i) {
166 EXPECT_EQ(2u, mesh_.n_cell_props());
169 EXPECT_EQ(1u, mesh_.n_cell_props());
174 generatePolyhedralMesh(mesh_);
176 EXPECT_EQ(12u, mesh_.n_vertices());
183 auto test = [](
auto const &mesh) {
184 auto prop = mesh.template create_private_property<int, Entity::Vertex>();
188 generatePolyhedralMesh(mesh_);
195 generatePolyhedralMesh(mesh_);
197 prop.at(VertexHandle(1)) = 12345;
198 EXPECT_EQ(prop.at(VertexHandle(1)), 12345);
200 prop.at(VertexHandle(654321)) = 1;
201 FAIL() <<
"Expected exception";
202 }
catch (std::out_of_range &) {
209 generatePolyhedralMesh(mesh_);
211 auto v0 = VertexHandle(0);
212 auto v1 = VertexHandle(1);
215 mesh_.swap_vertex_indices(v0, v1);
216 EXPECT_EQ(prop[v0], 42);
217 EXPECT_EQ(prop[v1], 23);
222 generatePolyhedralMesh(mesh_);
223 auto prop = mesh_.create_private_property<bool,
Entity::Vertex>();
224 auto v0 = VertexHandle(0);
225 auto v1 = VertexHandle(1);
228 mesh_.swap_vertex_indices(v0, v1);
229 EXPECT_EQ(prop[v0],
true);
230 EXPECT_EQ(prop[v1],
false);
SmartVertexHandle add_vertex(const Point _p)