33 PtrData sourceData1 = mesh->createData(
"SourceData1", dimensions, 0_dataID);
34 PtrData sourceData2 = mesh->createData(
"SourceData2", dimensions, 1_dataID);
35 PtrData sourceData3 = mesh->createData(
"SourceData3", dimensions, 2_dataID);
36 PtrData targetData = mesh->createData(
"TargetData", dimensions, 3_dataID);
37 std::vector<int> sourceDataIDs{sourceData1->getID(), sourceData2->getID(), sourceData3->getID()};
38 int targetDataID = targetData->getID();
39 mesh->createVertex(Eigen::Vector3d::Constant(0.0));
40 mesh->createVertex(Eigen::Vector3d::Constant(1.0));
41 mesh->createVertex(Eigen::Vector3d::Constant(2.0));
43 mesh->allocateDataValues();
45 Eigen::VectorXd v1(3), v2(3), v3(3);
49 sourceData1->setSampleAtTime(0,
time::Sample{dimensions, v1});
50 sourceData2->setSampleAtTime(0,
time::Sample{dimensions, v2});
51 sourceData3->setSampleAtTime(0,
time::Sample{dimensions, v3});
55 action::SummationAction::WRITE_MAPPING_POST, sourceDataIDs, targetDataID, mesh);
59 const auto &sourceValues1 = sourceData1->values();
60 const auto &sourceValues2 = sourceData2->values();
61 const auto &sourceValues3 = sourceData3->values();
62 const auto &targetValues = targetData->values();
63 BOOST_TEST(sourceValues1(0) == 2.0);
64 BOOST_TEST(sourceValues1(1) == 3.0);
65 BOOST_TEST(sourceValues1(2) == 4.0);
66 BOOST_TEST(sourceValues2(0) == 1.0);
67 BOOST_TEST(sourceValues2(1) == 2.0);
68 BOOST_TEST(sourceValues2(2) == 3.0);
69 BOOST_TEST(sourceValues3(0) == 2.0);
70 BOOST_TEST(sourceValues3(1) == 3.0);
71 BOOST_TEST(sourceValues3(2) == 4.0);
72 BOOST_TEST(targetValues(0) == 5.0);
73 BOOST_TEST(targetValues(1) == 8.0);
74 BOOST_TEST(targetValues(2) == 11.0);
84 PtrData sourceData1 = mesh->createData(
"SourceData1", dimensions, 0_dataID);
85 PtrData sourceData2 = mesh->createData(
"SourceData2", dimensions, 1_dataID);
86 PtrData targetData = mesh->createData(
"TargetData", dimensions, 2_dataID);
88 int targetDataID = targetData->getID();
89 mesh->createVertex(Eigen::Vector3d::Constant(0.0));
90 mesh->createVertex(Eigen::Vector3d::Constant(1.0));
91 mesh->createVertex(Eigen::Vector3d::Constant(2.0));
92 mesh->allocateDataValues();
94 Eigen::VectorXd v1(9), v2(9);
95 v1 << 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0;
96 v2 << 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0;
98 sourceData1->setSampleAtTime(0,
time::Sample{dimensions, v1});
99 sourceData2->setSampleAtTime(0,
time::Sample{dimensions, v2});
103 action::SummationAction::WRITE_MAPPING_POST, sourceDataIDs, targetDataID, mesh);
107 const auto &sourceValues1 = sourceData1->values();
108 const auto &sourceValues2 = sourceData2->values();
109 const auto &targetValues = targetData->values();
110 BOOST_TEST(sourceValues1(0) == 1.0);
111 BOOST_TEST(sourceValues2(0) == 2.0);
112 BOOST_TEST(targetValues(0) == 3.0);
114 BOOST_TEST(sourceValues1(1) == 2.0);
115 BOOST_TEST(sourceValues2(1) == 3.0);
116 BOOST_TEST(targetValues(1) == 5.0);
118 BOOST_TEST(sourceValues1(2) == 3.0);
119 BOOST_TEST(sourceValues2(2) == 4.0);
120 BOOST_TEST(targetValues(2) == 7.0);
122 BOOST_TEST(sourceValues1(3) == 4.0);
123 BOOST_TEST(sourceValues2(3) == 5.0);
124 BOOST_TEST(targetValues(3) == 9.0);
126 BOOST_TEST(sourceValues1(4) == 5.0);
127 BOOST_TEST(sourceValues2(4) == 6.0);
128 BOOST_TEST(targetValues(4) == 11.0);
130 BOOST_TEST(sourceValues1(5) == 6.0);
131 BOOST_TEST(sourceValues2(5) == 7.0);
132 BOOST_TEST(targetValues(5) == 13.0);
134 BOOST_TEST(sourceValues1(6) == 7.0);
135 BOOST_TEST(sourceValues2(6) == 8.0);
136 BOOST_TEST(targetValues(6) == 15.0);
138 BOOST_TEST(sourceValues1(7) == 8.0);
139 BOOST_TEST(sourceValues2(7) == 9.0);
140 BOOST_TEST(targetValues(7) == 17.0);
142 BOOST_TEST(sourceValues1(8) == 9.0);
143 BOOST_TEST(sourceValues2(8) == 10.0);
144 BOOST_TEST(targetValues(8) == 19.0);
151 using namespace mesh;
154 PtrData sourceData1 = mesh->createData(
"SourceData1", dimensions, 0_dataID);
155 PtrData sourceData2 = mesh->createData(
"SourceData2", dimensions, 1_dataID);
156 PtrData targetData = mesh->createData(
"TargetData", dimensions, 2_dataID);
158 int targetDataID = targetData->getID();
159 mesh->createVertex(Eigen::Vector3d::Constant(0.0));
160 mesh->createVertex(Eigen::Vector3d::Constant(1.0));
161 mesh->createVertex(Eigen::Vector3d::Constant(2.0));
162 mesh->allocateDataValues();
164 Eigen::VectorXd v1_05(9), v2_05(9), v1_1(9), v2_1(9);
165 v1_05 << 11.0, 22.0, 33.0, 44.0, 55.0, 66.0, 77.0, 88.0, 99.0;
166 v2_05 << 12.0, 23.0, 34.0, 45.0, 56.0, 67.0, 78.0, 89.0, 910.0;
167 v1_1 << 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0;
168 v2_1 << 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0;
170 sourceData1->setSampleAtTime(0.5,
time::Sample{dimensions, v1_05});
171 sourceData2->setSampleAtTime(0.5,
time::Sample{dimensions, v2_05});
172 sourceData1->setSampleAtTime(1.0,
time::Sample{dimensions, v1_1});
173 sourceData2->setSampleAtTime(1.0,
time::Sample{dimensions, v2_1});
176 action::SummationAction::WRITE_MAPPING_POST, sourceDataIDs, targetDataID, mesh);
180 const auto &sourceValues1 = sourceData1->values();
181 const auto &sourceValues2 = sourceData2->values();
182 const auto &targetValues = targetData->values();
183 BOOST_TEST(sourceValues1(0) == 1.0);
184 BOOST_TEST(sourceValues2(0) == 2.0);
185 BOOST_TEST(targetValues(0) == 3.0);
187 BOOST_TEST(sourceValues1(1) == 2.0);
188 BOOST_TEST(sourceValues2(1) == 3.0);
189 BOOST_TEST(targetValues(1) == 5.0);
191 BOOST_TEST(sourceValues1(2) == 3.0);
192 BOOST_TEST(sourceValues2(2) == 4.0);
193 BOOST_TEST(targetValues(2) == 7.0);
195 BOOST_TEST(sourceValues1(3) == 4.0);
196 BOOST_TEST(sourceValues2(3) == 5.0);
197 BOOST_TEST(targetValues(3) == 9.0);
199 BOOST_TEST(sourceValues1(4) == 5.0);
200 BOOST_TEST(sourceValues2(4) == 6.0);
201 BOOST_TEST(targetValues(4) == 11.0);
203 BOOST_TEST(sourceValues1(5) == 6.0);
204 BOOST_TEST(sourceValues2(5) == 7.0);
205 BOOST_TEST(targetValues(5) == 13.0);
207 BOOST_TEST(sourceValues1(6) == 7.0);
208 BOOST_TEST(sourceValues2(6) == 8.0);
209 BOOST_TEST(targetValues(6) == 15.0);
211 BOOST_TEST(sourceValues1(7) == 8.0);
212 BOOST_TEST(sourceValues2(7) == 9.0);
213 BOOST_TEST(targetValues(7) == 17.0);
215 BOOST_TEST(sourceValues1(8) == 9.0);
216 BOOST_TEST(sourceValues2(8) == 10.0);
217 BOOST_TEST(targetValues(8) == 19.0);
221 auto loadedStample1 = sourceData1->stamples().front();
222 BOOST_TEST(loadedStample1.timestamp == 0.5);
223 sourceData1->values() = loadedStample1.sample.values;
225 auto loadedStample2 = sourceData2->stamples().front();
226 BOOST_TEST(loadedStample2.timestamp == 0.5);
227 sourceData2->values() = loadedStample2.sample.values;
229 auto loadedStample3 = targetData->stamples().front();
230 BOOST_TEST(loadedStample3.timestamp == 0.5);
231 targetData->values() = loadedStample3.sample.values;
233 BOOST_TEST(sourceValues1(0) == 11.0);
234 BOOST_TEST(sourceValues2(0) == 12.0);
235 BOOST_TEST(targetValues(0) == 23.0);
237 BOOST_TEST(sourceValues1(1) == 22.0);
238 BOOST_TEST(sourceValues2(1) == 23.0);
239 BOOST_TEST(targetValues(1) == 45.0);
241 BOOST_TEST(sourceValues1(2) == 33.0);
242 BOOST_TEST(sourceValues2(2) == 34.0);
243 BOOST_TEST(targetValues(2) == 67.0);
245 BOOST_TEST(sourceValues1(3) == 44.0);
246 BOOST_TEST(sourceValues2(3) == 45.0);
247 BOOST_TEST(targetValues(3) == 89.0);
249 BOOST_TEST(sourceValues1(4) == 55.0);
250 BOOST_TEST(sourceValues2(4) == 56.0);
251 BOOST_TEST(targetValues(4) == 111.0);
253 BOOST_TEST(sourceValues1(5) == 66.0);
254 BOOST_TEST(sourceValues2(5) == 67.0);
255 BOOST_TEST(targetValues(5) == 133.0);
257 BOOST_TEST(sourceValues1(6) == 77.0);
258 BOOST_TEST(sourceValues2(6) == 78.0);
259 BOOST_TEST(targetValues(6) == 155.0);
261 BOOST_TEST(sourceValues1(7) == 88.0);
262 BOOST_TEST(sourceValues2(7) == 89.0);
263 BOOST_TEST(targetValues(7) == 177.0);
265 BOOST_TEST(sourceValues1(8) == 99.0);
266 BOOST_TEST(sourceValues2(8) == 910.0);
267 BOOST_TEST(targetValues(8) == 1009.0);