Developer Documentation
unittests_properties.cc
1 
2 #include <iostream>
3 
4 #include "unittests_common.hh"
5 
6 #include <OpenVolumeMesh/Attribs/StatusAttrib.hh>
7 
8 using namespace OpenVolumeMesh;
9 using namespace Geometry;
10 
11 TEST_F(PolyhedralMeshBase, PropertySmartPointerTestSimple) {
12 
13  generatePolyhedralMesh(mesh_);
14 
15  for(int i = 0; i < 1; ++i) {
16 
17  VertexPropertyT<float> v_prop = mesh_.request_vertex_property<float>("SimpleTestProp");
18  }
19 }
20 
21 TEST_F(PolyhedralMeshBase, PropertySmartPointerTest1) {
22 
23  generatePolyhedralMesh(mesh_);
24 
25  EXPECT_EQ(12u, mesh_.n_vertices());
26 
27  VertexPropertyT<double> v_prop_d = mesh_.request_vertex_property<double>("MyVPropDbl");
28 
29  for(int i = 0; i < 1; ++i) {
30 
31  VertexPropertyT<float> v_prop = mesh_.request_vertex_property<float>("MyVProp");
32 
33  v_prop[VertexHandle(0)] = 1.4f;
34 
35  VertexPropertyT<float> v_prop2(v_prop);
36 
37  VertexPropertyT<float> v_prop3 = v_prop;
38 
39  EXPECT_EQ(12u, v_prop3->n_elements());
40 
41  EXPECT_EQ(2u, mesh_.n_vertex_props());
42 
43  VertexPropertyT<float> v_prop_duplicate = mesh_.request_vertex_property<float>("MyVProp");
44 
45  EXPECT_EQ(2u, mesh_.n_vertex_props());
46 
47  EXPECT_FLOAT_EQ(1.4f, v_prop3[VertexHandle(0)]);
48 
49  VertexPropertyT<std::string> v_prop_duplicate_2 = mesh_.request_vertex_property<std::string>("MyVProp");
50 
51  EXPECT_EQ(3u, mesh_.n_vertex_props());
52  }
53 
54  mesh_.set_persistent(v_prop_d);
55 
56  EXPECT_EQ(1u, mesh_.n_vertex_props());
57 
58  mesh_.add_vertex(Vec3d(0.0, 0.0, 0.0));
59 
60  EXPECT_EQ(13u, mesh_.n_vertices());
61 
62  VertexPropertyT<double> v_prop_d2 = mesh_.request_vertex_property<double>("MyVPropDbl");
63 
64  EXPECT_EQ(1u, mesh_.n_vertex_props());
65 
66  HalfEdgePropertyT<int> he_prop = mesh_.request_halfedge_property<int>("MyHEProp");
67 
68  EXPECT_EQ(40u, he_prop->n_elements());
69 
70  mesh_.add_edge(VertexHandle(0), VertexHandle(2));
71 
72  EXPECT_EQ(42u, he_prop->n_elements());
73 }
74 
75 TEST_F(HexahedralMeshBase, PropertySmartPointerPersistencyTest1) {
76 
77  generateHexahedralMesh(mesh_);
78 
79  for(int i = 0; i < 1; ++i) {
80 
81  VertexPropertyT<float> v_prop = mesh_.request_vertex_property<float>("FloatVProp");
82 
83  v_prop[VertexHandle(0)] = 24.5f;
84  v_prop[VertexHandle(11)] = 2.34f;
85 
86  mesh_.set_persistent(v_prop);
87  }
88 
89  VertexPropertyT<float> v_prop2 = mesh_.request_vertex_property<float>("FloatVProp");
90 
91  EXPECT_FLOAT_EQ(24.5f, v_prop2[VertexHandle(0)]);
92  EXPECT_FLOAT_EQ(2.34f, v_prop2[VertexHandle(11)]);
93 }
94 
95 TEST_F(HexahedralMeshBase, PropertySmartPointerPersistencyTest2) {
96 
97  generateHexahedralMesh(mesh_);
98 
99  for(int i = 0; i < 1; ++i) {
100 
101  VertexPropertyT<float> v_prop = mesh_.request_vertex_property<float>("FloatVProp");
102 
103  mesh_.set_persistent(v_prop);
104  }
105 
106  EXPECT_EQ(1u, mesh_.n_vertex_props());
107 
108  for(int i = 0; i < 1; ++i) {
109 
110  VertexPropertyT<float> v_prop = mesh_.request_vertex_property<float>("FloatVProp");
111 
112  EXPECT_EQ(1u, mesh_.n_vertex_props());
113 
114  mesh_.set_persistent(v_prop, false);
115  }
116 
117  EXPECT_EQ(0u, mesh_.n_vertex_props());
118 }
119 
120 TEST_F(HexahedralMeshBase, AnonymousPropertiesTest1) {
121 
122  generateHexahedralMesh(mesh_);
123 
124  CellPropertyT<float> c_prop = mesh_.request_cell_property<float>();
125  CellPropertyT<float> c_prop2 = c_prop;
126 
127  EXPECT_EQ(1u, mesh_.n_cell_props());
128 
129  mesh_.set_persistent(c_prop);
130 
131  EXPECT_EQ(1u, mesh_.n_cell_props());
132 
133  mesh_.set_persistent(c_prop2, false);
134 
135  EXPECT_EQ(1u, mesh_.n_cell_props());
136 }
137 
138 TEST_F(HexahedralMeshBase, AnonymousPropertiesTest2) {
139 
140  generateHexahedralMesh(mesh_);
141 
142  CellPropertyT<float> c_prop1 = mesh_.request_cell_property<float>();
143 
144  for(int i = 0; i < 1; ++i) {
145 
146  CellPropertyT<float> c_prop2 = mesh_.request_cell_property<float>();
147  EXPECT_EQ(2u, mesh_.n_cell_props());
148  }
149 
150  EXPECT_EQ(1u, mesh_.n_cell_props());
151 }
152 
153 TEST_F(PolyhedralMeshBase, StatusTest) {
154 
155  generatePolyhedralMesh(mesh_);
156 
157  EXPECT_EQ(12u, mesh_.n_vertices());
158 
159  StatusAttrib status(mesh_);
160 }
161 
162 TEST_F(PolyhedralMeshBase, PropValueCopyTest) {
163 
164  generatePolyhedralMesh(mesh_);
165  VertexPropertyT<int> prop = mesh_.request_vertex_property<int>();
166  prop[VertexHandle(0)] = 1234;
167  prop[VertexHandle(1)] = 2345;
168  prop.copy(0, 1);
169  EXPECT_EQ(prop[VertexHandle(1)], 1234);
170 }
SmartVertexHandle add_vertex(const Point &_p)
Alias for new_vertex(const Point&).
Definition: PolyMeshT.hh:235