1 | /* |
2 | * meta_cc_unit_tests.hpp |
3 | * |
4 | * Created on: Oct 31, 2015 |
5 | * Author: i-bird |
6 | */ |
7 | |
8 | #ifndef OPENFPM_DATA_SRC_UTIL_META_CC_UNIT_TESTS_HPP_ |
9 | #define OPENFPM_DATA_SRC_UTIL_META_CC_UNIT_TESTS_HPP_ |
10 | |
11 | #include "meta_copy.hpp" |
12 | #include "meta_compare.hpp" |
13 | #include "data_type/aggregate.hpp" |
14 | #include "Point_test.hpp" |
15 | |
16 | BOOST_AUTO_TEST_SUITE( util_test ) |
17 | |
18 | BOOST_AUTO_TEST_CASE( meta_copy_compare_test ) |
19 | { |
20 | { |
21 | //! [Usage of meta copy and compare for primitives] |
22 | |
23 | float f_src = 1.0; |
24 | float f_dst; |
25 | |
26 | meta_copy<float>::meta_copy_(f_src,f_dst); |
27 | |
28 | BOOST_REQUIRE_EQUAL(f_src,f_dst); |
29 | |
30 | bool ret = meta_compare<float>::meta_compare_f(f_src,f_dst); |
31 | |
32 | BOOST_REQUIRE_EQUAL(ret,true); |
33 | |
34 | //! [Usage of meta copy and compare for primitives] |
35 | |
36 | f_dst = 2.0; |
37 | ret = meta_compare<float>::meta_compare_f(f_src,f_dst); |
38 | BOOST_REQUIRE_EQUAL(ret,false); |
39 | |
40 | } |
41 | |
42 | { |
43 | //! [Usage of meta copy and compare for array of primitives] |
44 | |
45 | float f_src[2][3] = {{1.0,2.9,4.0},{2.3,4.4,9.0}}; |
46 | float f_dst[2][3]; |
47 | |
48 | meta_copy<float[2][3]>::meta_copy_(f_src,f_dst); |
49 | |
50 | bool ret = meta_compare<float[2][3]>::meta_compare_f(f_src,f_dst); |
51 | |
52 | BOOST_REQUIRE_EQUAL(ret,true); |
53 | |
54 | //! [Usage of meta copy and compare for array of primitives] |
55 | |
56 | f_dst[1][2] = 5.0; |
57 | ret = meta_compare<float[2][3]>::meta_compare_f(f_src,f_dst); |
58 | BOOST_REQUIRE_EQUAL(ret,false); |
59 | |
60 | } |
61 | |
62 | { |
63 | //! [Usage of meta copy and compare for openfpm aggregates] |
64 | |
65 | aggregate<float,int,float[3]> agg1; |
66 | aggregate<float,int,float[3]> agg2; |
67 | |
68 | boost::fusion::at_c<0>(agg1.data) = 1.0; |
69 | boost::fusion::at_c<1>(agg1.data) = 2.0; |
70 | boost::fusion::at_c<2>(agg1.data)[0] = 3.0; |
71 | boost::fusion::at_c<2>(agg1.data)[1] = 4.0; |
72 | boost::fusion::at_c<2>(agg1.data)[2] = 5.0; |
73 | |
74 | meta_copy<aggregate<float,int,float[3]>>::meta_copy_(agg1,agg2); |
75 | |
76 | bool ret = meta_compare<aggregate<float,int,float[3]>>::meta_compare_f(agg1,agg2); |
77 | |
78 | BOOST_REQUIRE_EQUAL(ret,true); |
79 | |
80 | //! [Usage of meta copy and compare for openfpm aggregates] |
81 | |
82 | boost::fusion::at_c<2>(agg2.data)[2] = 2.0; |
83 | ret = meta_compare<aggregate<float,int,float[3]>>::meta_compare_f(agg1,agg2); |
84 | |
85 | BOOST_REQUIRE_EQUAL(ret,false); |
86 | |
87 | } |
88 | |
89 | { |
90 | //! [Usage of meta copy and compare for complex object] |
91 | |
92 | std::string s_src("Test string" ); |
93 | std::string s_dst; |
94 | |
95 | meta_copy<std::string>::meta_copy_(s_src,s_dst); |
96 | |
97 | BOOST_REQUIRE_EQUAL(s_src,s_dst); |
98 | |
99 | bool ret = meta_compare<std::string>::meta_compare_f(s_src,s_dst); |
100 | |
101 | BOOST_REQUIRE_EQUAL(ret,true); |
102 | |
103 | //! [Usage of meta copy and compare for complex object] |
104 | |
105 | s_dst = std::string("Test string2" ); |
106 | ret = meta_compare<std::string>::meta_compare_f(s_src,s_dst); |
107 | BOOST_REQUIRE_EQUAL(ret,false); |
108 | |
109 | } |
110 | |
111 | { |
112 | //! [Usage of meta copy and compare for complex aggregates object] |
113 | |
114 | aggregate<std::string,std::vector<float>,std::map<size_t,std::string>,std::string[3]> a_src; |
115 | |
116 | // fill the complex aggregates |
117 | a_src.template get<0>() = std::string("Test string" ); |
118 | |
119 | a_src.template get<1>().push_back(5.0); |
120 | a_src.template get<1>().push_back(15.0); |
121 | a_src.template get<1>().push_back(45.0); |
122 | a_src.template get<1>().push_back(7.0); |
123 | |
124 | a_src.template get<2>()[0] = std::string("Test string 2" ); |
125 | a_src.template get<2>()[10] = std::string("Test string 3" ); |
126 | a_src.template get<2>()[9] = std::string("Test string 4" ); |
127 | a_src.template get<2>()[1] = std::string("Test string 5" ); |
128 | |
129 | a_src.template get<3>()[0] = std::string("Last string 9" ); |
130 | a_src.template get<3>()[1] = std::string("Last string 10" ); |
131 | a_src.template get<3>()[2] = std::string("Last string 11" ); |
132 | |
133 | aggregate<std::string,std::vector<float>,std::map<size_t,std::string>,std::string[3]> a_dst; |
134 | |
135 | meta_copy<aggregate<std::string,std::vector<float>,std::map<size_t,std::string>,std::string[3]>>::meta_copy_(a_src,a_dst); |
136 | |
137 | bool ret = meta_compare<aggregate<std::string,std::vector<float>,std::map<size_t,std::string>,std::string[3]>>::meta_compare_f(a_src,a_dst); |
138 | |
139 | BOOST_REQUIRE_EQUAL(ret,true); |
140 | |
141 | //! [Usage of meta copy and compare for complex aggregates object] |
142 | |
143 | a_dst.template get<3>()[1] = std::string("Last string 20" ); |
144 | ret = meta_compare<aggregate<std::string,std::vector<float>,std::map<size_t,std::string>,std::string[3]>>::meta_compare_f(a_src,a_dst); |
145 | BOOST_REQUIRE_EQUAL(ret,false); |
146 | |
147 | } |
148 | |
149 | |
150 | { |
151 | |
152 | //! [Usage of meta copy and compare for Point_test] |
153 | |
154 | typedef Point_test<float> p; |
155 | |
156 | Point_test<float> p_src; |
157 | Point_test<float> p_dst; |
158 | |
159 | // fill p_src |
160 | p_src.template get<p::x>() = 1; |
161 | p_src.template get<p::y>() = 567; |
162 | p_src.template get<p::z>() = 341; |
163 | p_src.template get<p::s>() = 5670; |
164 | p_src.template get<p::v>()[0] = 921; |
165 | p_src.template get<p::v>()[1] = 5675; |
166 | p_src.template get<p::v>()[2] = 117; |
167 | p_src.template get<p::t>()[0][0] = 1921; |
168 | p_src.template get<p::t>()[0][1] = 25675; |
169 | p_src.template get<p::t>()[0][2] = 3117; |
170 | p_src.template get<p::t>()[1][0] = 4921; |
171 | p_src.template get<p::t>()[1][1] = 55675; |
172 | p_src.template get<p::t>()[1][2] = 6117; |
173 | p_src.template get<p::t>()[2][0] = 7921; |
174 | p_src.template get<p::t>()[2][1] = 85675; |
175 | p_src.template get<p::t>()[2][2] = 9117; |
176 | |
177 | meta_copy<Point_test<float>>::meta_copy_(p_src,p_dst); |
178 | |
179 | bool ret = meta_compare<Point_test<float>>::meta_compare_f(p_src,p_dst); |
180 | BOOST_REQUIRE_EQUAL(ret,true); |
181 | |
182 | //! [Usage of meta copy and compare for Point_test] |
183 | |
184 | p_dst.template get<p::t>()[2][2] = 9317; |
185 | ret = meta_compare<Point_test<float>>::meta_compare_f(p_src,p_dst); |
186 | BOOST_REQUIRE_EQUAL(ret,false); |
187 | |
188 | } |
189 | } |
190 | |
191 | |
192 | BOOST_AUTO_TEST_CASE( meta_copy_test_op ) |
193 | { |
194 | { |
195 | //! [Usage of meta copy with operation] |
196 | |
197 | float f_src = 1.0; |
198 | float f_dst = 2.0; |
199 | |
200 | meta_copy_op<add_,float>::meta_copy_op_(f_src,f_dst); |
201 | |
202 | BOOST_REQUIRE_EQUAL(f_dst,3.0); |
203 | |
204 | //! [Usage of meta copy with operation] |
205 | |
206 | } |
207 | |
208 | { |
209 | //! [Usage of meta copy with operation for array of primitives] |
210 | |
211 | float f_src[2][3] = {{1.0,2.5,4.0},{2.5,4.5,9.0}}; |
212 | float f_dst[2][3] = {{1.0,2.0,3.0},{1.0,2.0,3.0}}; |
213 | |
214 | meta_copy_op<add_,float[2][3]>::meta_copy_op_(f_src,f_dst); |
215 | |
216 | BOOST_REQUIRE_EQUAL(f_dst[0][0],2.0); |
217 | BOOST_REQUIRE_EQUAL(f_dst[0][1],4.5); |
218 | BOOST_REQUIRE_EQUAL(f_dst[0][2],7.0); |
219 | |
220 | BOOST_REQUIRE_EQUAL(f_dst[1][0],3.5); |
221 | BOOST_REQUIRE_EQUAL(f_dst[1][1],6.5); |
222 | BOOST_REQUIRE_EQUAL(f_dst[1][2],12.0); |
223 | |
224 | //! [Usage of meta copy with operation for array of primitives] |
225 | |
226 | } |
227 | |
228 | { |
229 | //! [Usage of meta copy with operation for openfpm aggregates] |
230 | |
231 | aggregate<float,int,float[3]> agg1; |
232 | aggregate<float,int,float[3]> agg2; |
233 | |
234 | boost::fusion::at_c<0>(agg1.data) = 1.0; |
235 | boost::fusion::at_c<1>(agg1.data) = 2.0; |
236 | boost::fusion::at_c<2>(agg1.data)[0] = 3.0; |
237 | boost::fusion::at_c<2>(agg1.data)[1] = 4.0; |
238 | boost::fusion::at_c<2>(agg1.data)[2] = 5.0; |
239 | |
240 | boost::fusion::at_c<0>(agg2.data) = 1.0; |
241 | boost::fusion::at_c<1>(agg2.data) = 2.0; |
242 | boost::fusion::at_c<2>(agg2.data)[0] = 3.0; |
243 | boost::fusion::at_c<2>(agg2.data)[1] = 4.0; |
244 | boost::fusion::at_c<2>(agg2.data)[2] = 5.0; |
245 | |
246 | meta_copy_op<add_,aggregate<float,int,float[3]>>::meta_copy_op_(agg1,agg2); |
247 | |
248 | BOOST_REQUIRE_EQUAL(boost::fusion::at_c<0>(agg2.data),2.0); |
249 | BOOST_REQUIRE_EQUAL(boost::fusion::at_c<1>(agg2.data),4.0); |
250 | BOOST_REQUIRE_EQUAL(boost::fusion::at_c<2>(agg2.data)[0],6.0); |
251 | BOOST_REQUIRE_EQUAL(boost::fusion::at_c<2>(agg2.data)[1],8.0); |
252 | BOOST_REQUIRE_EQUAL(boost::fusion::at_c<2>(agg2.data)[2],10.0); |
253 | |
254 | //! [Usage of meta copy with operation for openfpm aggregates] |
255 | |
256 | |
257 | } |
258 | |
259 | { |
260 | //! [Usage of meta copy with operation for complex object] |
261 | |
262 | std::string s_src("Test string" ); |
263 | std::string s_dst("Test string2" ); |
264 | |
265 | meta_copy_op<add_,std::string>::meta_copy_op_(s_src,s_dst); |
266 | |
267 | BOOST_REQUIRE_EQUAL(s_dst,std::string("Test string2Test string" )); |
268 | |
269 | //! [Usage of meta copy with operation for complex object] |
270 | |
271 | } |
272 | |
273 | |
274 | { |
275 | |
276 | //! [Usage of meta copy with operation for Point_test] |
277 | |
278 | typedef Point_test<float> p; |
279 | |
280 | Point_test<float> p_src; |
281 | Point_test<float> p_dst; |
282 | |
283 | // fill p_src |
284 | p_src.template get<p::x>() = 1; |
285 | p_src.template get<p::y>() = 567; |
286 | p_src.template get<p::z>() = 341; |
287 | p_src.template get<p::s>() = 5670; |
288 | p_src.template get<p::v>()[0] = 921; |
289 | p_src.template get<p::v>()[1] = 5675; |
290 | p_src.template get<p::v>()[2] = 117; |
291 | p_src.template get<p::t>()[0][0] = 1921; |
292 | p_src.template get<p::t>()[0][1] = 25675; |
293 | p_src.template get<p::t>()[0][2] = 3117; |
294 | p_src.template get<p::t>()[1][0] = 4921; |
295 | p_src.template get<p::t>()[1][1] = 55675; |
296 | p_src.template get<p::t>()[1][2] = 6117; |
297 | p_src.template get<p::t>()[2][0] = 7921; |
298 | p_src.template get<p::t>()[2][1] = 85675; |
299 | p_src.template get<p::t>()[2][2] = 9117; |
300 | |
301 | // fill p_dst |
302 | p_dst.template get<p::x>() = 2; |
303 | p_dst.template get<p::y>() = 568; |
304 | p_dst.template get<p::z>() = 342; |
305 | p_dst.template get<p::s>() = 5671; |
306 | p_dst.template get<p::v>()[0] = 922; |
307 | p_dst.template get<p::v>()[1] = 5676; |
308 | p_dst.template get<p::v>()[2] = 118; |
309 | p_dst.template get<p::t>()[0][0] = 1922; |
310 | p_dst.template get<p::t>()[0][1] = 25676; |
311 | p_dst.template get<p::t>()[0][2] = 3118; |
312 | p_dst.template get<p::t>()[1][0] = 4922; |
313 | p_dst.template get<p::t>()[1][1] = 55676; |
314 | p_dst.template get<p::t>()[1][2] = 6118; |
315 | p_dst.template get<p::t>()[2][0] = 7922; |
316 | p_dst.template get<p::t>()[2][1] = 85676; |
317 | p_dst.template get<p::t>()[2][2] = 9118; |
318 | |
319 | meta_copy_op<add_,Point_test<float>>::meta_copy_op_(p_src,p_dst); |
320 | |
321 | BOOST_REQUIRE_EQUAL(p_dst.template get<p::x>(),3); |
322 | BOOST_REQUIRE_EQUAL(p_dst.template get<p::y>(),1135); |
323 | BOOST_REQUIRE_EQUAL(p_dst.template get<p::z>(),683); |
324 | BOOST_REQUIRE_EQUAL(p_dst.template get<p::v>()[0],1843); |
325 | BOOST_REQUIRE_EQUAL(p_dst.template get<p::v>()[1],11351); |
326 | BOOST_REQUIRE_EQUAL(p_dst.template get<p::v>()[2],235); |
327 | BOOST_REQUIRE_EQUAL(p_dst.template get<p::t>()[0][0],3843); |
328 | BOOST_REQUIRE_EQUAL(p_dst.template get<p::t>()[0][1],51351); |
329 | BOOST_REQUIRE_EQUAL(p_dst.template get<p::t>()[0][2],6235); |
330 | BOOST_REQUIRE_EQUAL(p_dst.template get<p::t>()[1][0],9843); |
331 | BOOST_REQUIRE_EQUAL(p_dst.template get<p::t>()[1][1],111351); |
332 | BOOST_REQUIRE_EQUAL(p_dst.template get<p::t>()[1][2],12235); |
333 | BOOST_REQUIRE_EQUAL(p_dst.template get<p::t>()[2][0],15843); |
334 | BOOST_REQUIRE_EQUAL(p_dst.template get<p::t>()[2][1],171351); |
335 | BOOST_REQUIRE_EQUAL(p_dst.template get<p::t>()[2][2],18235); |
336 | |
337 | //! [Usage of meta copy with operation for complex aggregates object] |
338 | |
339 | } |
340 | } |
341 | |
342 | BOOST_AUTO_TEST_CASE( meta_copy_d_compare_test ) |
343 | { |
344 | { |
345 | //! [Usage of meta_copy_d for primitives] |
346 | |
347 | float f_src = 1.0; |
348 | float f_dst; |
349 | |
350 | meta_copy_d<float,float>::meta_copy_d_(f_src,f_dst); |
351 | |
352 | BOOST_REQUIRE_EQUAL(f_src,f_dst); |
353 | |
354 | //! [Usage of meta_copy_d for primitives] |
355 | |
356 | } |
357 | |
358 | { |
359 | //! [Usage of meta_copy_d for array of primitives] |
360 | |
361 | float f_src[2][3] = {{1.0,2.9,4.0},{2.3,4.4,9.0}}; |
362 | float f_dst[2][3]; |
363 | |
364 | meta_copy_d<float[2][3],float[2][3]>::meta_copy_d_(f_src,f_dst); |
365 | |
366 | BOOST_REQUIRE_EQUAL(f_src[0][0],f_dst[0][0]); |
367 | BOOST_REQUIRE_EQUAL(f_src[0][1],f_dst[0][1]); |
368 | BOOST_REQUIRE_EQUAL(f_src[0][2],f_dst[0][2]); |
369 | BOOST_REQUIRE_EQUAL(f_src[1][0],f_dst[1][0]); |
370 | BOOST_REQUIRE_EQUAL(f_src[1][1],f_dst[1][1]); |
371 | BOOST_REQUIRE_EQUAL(f_src[1][2],f_dst[1][2]); |
372 | |
373 | //! [Usage of meta_copy_d for array of primitives] |
374 | |
375 | } |
376 | |
377 | { |
378 | //! [Usage of meta_copy_d for openfpm aggregates] |
379 | |
380 | aggregate<float,int,float[3]> agg1; |
381 | aggregate<float,int,float[3]> agg2; |
382 | |
383 | boost::fusion::at_c<0>(agg1.data) = 1.0; |
384 | boost::fusion::at_c<1>(agg1.data) = 2.0; |
385 | boost::fusion::at_c<2>(agg1.data)[0] = 3.0; |
386 | boost::fusion::at_c<2>(agg1.data)[1] = 4.0; |
387 | boost::fusion::at_c<2>(agg1.data)[2] = 5.0; |
388 | |
389 | meta_copy_d<aggregate<float,int,float[3]>,aggregate<float,int,float[3]>>::meta_copy_d_(agg1,agg2); |
390 | |
391 | BOOST_REQUIRE_EQUAL(boost::fusion::at_c<0>(agg1.data),boost::fusion::at_c<0>(agg2.data)); |
392 | BOOST_REQUIRE_EQUAL(boost::fusion::at_c<1>(agg1.data),boost::fusion::at_c<1>(agg2.data)); |
393 | BOOST_REQUIRE_EQUAL(boost::fusion::at_c<2>(agg1.data)[0],boost::fusion::at_c<2>(agg2.data)[0]); |
394 | BOOST_REQUIRE_EQUAL(boost::fusion::at_c<2>(agg1.data)[1],boost::fusion::at_c<2>(agg2.data)[1]); |
395 | BOOST_REQUIRE_EQUAL(boost::fusion::at_c<2>(agg1.data)[2],boost::fusion::at_c<2>(agg2.data)[2]); |
396 | |
397 | //! [Usage of meta_copy_d for openfpm aggregates] |
398 | |
399 | } |
400 | |
401 | { |
402 | //! [Usage of meta_copy_d for complex object] |
403 | |
404 | std::string s_src("Test string" ); |
405 | std::string s_dst; |
406 | |
407 | meta_copy_d<std::string,std::string>::meta_copy_d_(s_src,s_dst); |
408 | |
409 | BOOST_REQUIRE_EQUAL(s_src,s_dst); |
410 | |
411 | //! [Usage of meta_copy_d and compare for complex object] |
412 | |
413 | } |
414 | |
415 | { |
416 | //! [Usage of meta_copy_d for complex aggregates object] |
417 | |
418 | aggregate<std::string,std::vector<float>,std::map<size_t,std::string>,std::string[3]> a_src; |
419 | |
420 | // fill the complex aggregates |
421 | a_src.template get<0>() = std::string("Test string" ); |
422 | |
423 | a_src.template get<1>().push_back(5.0); |
424 | a_src.template get<1>().push_back(15.0); |
425 | a_src.template get<1>().push_back(45.0); |
426 | a_src.template get<1>().push_back(7.0); |
427 | |
428 | a_src.template get<2>()[0] = std::string("Test string 2" ); |
429 | a_src.template get<2>()[10] = std::string("Test string 3" ); |
430 | a_src.template get<2>()[9] = std::string("Test string 4" ); |
431 | a_src.template get<2>()[1] = std::string("Test string 5" ); |
432 | |
433 | a_src.template get<3>()[0] = std::string("Last string 9" ); |
434 | a_src.template get<3>()[1] = std::string("Last string 10" ); |
435 | a_src.template get<3>()[2] = std::string("Last string 11" ); |
436 | |
437 | aggregate<std::string,std::vector<float>,std::map<size_t,std::string>,std::string[3]> a_dst; |
438 | |
439 | meta_copy_d<aggregate<std::string,std::vector<float>,std::map<size_t,std::string>,std::string[3]>, |
440 | aggregate<std::string,std::vector<float>,std::map<size_t,std::string>,std::string[3]>>::meta_copy_d_(a_src,a_dst); |
441 | |
442 | |
443 | BOOST_REQUIRE_EQUAL(a_src.template get<0>(),a_dst.template get<0>()); |
444 | BOOST_REQUIRE_EQUAL(a_src.template get<1>()[0],a_dst.template get<1>()[0]); |
445 | BOOST_REQUIRE_EQUAL(a_src.template get<1>()[1],a_dst.template get<1>()[1]); |
446 | BOOST_REQUIRE_EQUAL(a_src.template get<1>()[2],a_dst.template get<1>()[2]); |
447 | BOOST_REQUIRE_EQUAL(a_src.template get<1>()[3],a_dst.template get<1>()[3]); |
448 | |
449 | BOOST_REQUIRE_EQUAL(a_src.template get<2>()[0],a_dst.template get<2>()[0]); |
450 | BOOST_REQUIRE_EQUAL(a_src.template get<2>()[10],a_dst.template get<2>()[10]); |
451 | BOOST_REQUIRE_EQUAL(a_src.template get<2>()[9],a_dst.template get<2>()[9]); |
452 | BOOST_REQUIRE_EQUAL(a_src.template get<2>()[1],a_dst.template get<2>()[1]); |
453 | |
454 | BOOST_REQUIRE_EQUAL(a_src.template get<3>()[0],a_dst.template get<3>()[0]); |
455 | BOOST_REQUIRE_EQUAL(a_src.template get<3>()[1],a_dst.template get<3>()[1]); |
456 | BOOST_REQUIRE_EQUAL(a_src.template get<3>()[2],a_dst.template get<3>()[2]); |
457 | |
458 | //! [Usage of meta_copy_d for complex aggregates object] |
459 | |
460 | } |
461 | |
462 | |
463 | { |
464 | |
465 | //! [Usage of meta_copy_d and compare for Point_test] |
466 | |
467 | typedef Point_test<float> p; |
468 | |
469 | Point_test<float> p_src; |
470 | Point_test<float> p_dst; |
471 | |
472 | // fill p_src |
473 | p_src.template get<p::x>() = 1; |
474 | p_src.template get<p::y>() = 567; |
475 | p_src.template get<p::z>() = 341; |
476 | p_src.template get<p::s>() = 5670; |
477 | p_src.template get<p::v>()[0] = 921; |
478 | p_src.template get<p::v>()[1] = 5675; |
479 | p_src.template get<p::v>()[2] = 117; |
480 | p_src.template get<p::t>()[0][0] = 1921; |
481 | p_src.template get<p::t>()[0][1] = 25675; |
482 | p_src.template get<p::t>()[0][2] = 3117; |
483 | p_src.template get<p::t>()[1][0] = 4921; |
484 | p_src.template get<p::t>()[1][1] = 55675; |
485 | p_src.template get<p::t>()[1][2] = 6117; |
486 | p_src.template get<p::t>()[2][0] = 7921; |
487 | p_src.template get<p::t>()[2][1] = 85675; |
488 | p_src.template get<p::t>()[2][2] = 9117; |
489 | |
490 | meta_copy_d<Point_test<float>,Point_test<float>>::meta_copy_d_(p_src,p_dst); |
491 | |
492 | BOOST_REQUIRE_EQUAL(p_src.template get<p::x>(),p_dst.template get<p::x>()); |
493 | BOOST_REQUIRE_EQUAL(p_src.template get<p::y>(),p_dst.template get<p::y>()); |
494 | BOOST_REQUIRE_EQUAL(p_src.template get<p::z>(),p_dst.template get<p::z>()); |
495 | BOOST_REQUIRE_EQUAL(p_src.template get<p::s>(),p_dst.template get<p::s>()); |
496 | |
497 | BOOST_REQUIRE_EQUAL(p_src.template get<p::v>()[0],p_dst.template get<p::v>()[0]); |
498 | BOOST_REQUIRE_EQUAL(p_src.template get<p::v>()[1],p_dst.template get<p::v>()[1]); |
499 | BOOST_REQUIRE_EQUAL(p_src.template get<p::v>()[2],p_dst.template get<p::v>()[2]); |
500 | |
501 | BOOST_REQUIRE_EQUAL(p_src.template get<p::t>()[0][0],p_dst.template get<p::t>()[0][0]); |
502 | BOOST_REQUIRE_EQUAL(p_src.template get<p::t>()[0][1],p_dst.template get<p::t>()[0][1]); |
503 | BOOST_REQUIRE_EQUAL(p_src.template get<p::t>()[0][2],p_dst.template get<p::t>()[0][2]); |
504 | BOOST_REQUIRE_EQUAL(p_src.template get<p::t>()[1][0],p_dst.template get<p::t>()[1][0]); |
505 | BOOST_REQUIRE_EQUAL(p_src.template get<p::t>()[1][1],p_dst.template get<p::t>()[1][1]); |
506 | BOOST_REQUIRE_EQUAL(p_src.template get<p::t>()[1][2],p_dst.template get<p::t>()[1][2]); |
507 | BOOST_REQUIRE_EQUAL(p_src.template get<p::t>()[2][0],p_dst.template get<p::t>()[2][0]); |
508 | BOOST_REQUIRE_EQUAL(p_src.template get<p::t>()[2][1],p_dst.template get<p::t>()[2][1]); |
509 | BOOST_REQUIRE_EQUAL(p_src.template get<p::t>()[2][2],p_dst.template get<p::t>()[2][2]); |
510 | |
511 | //! [Usage of meta_copy_d and compare for Point_test] |
512 | |
513 | } |
514 | } |
515 | |
516 | BOOST_AUTO_TEST_SUITE_END() |
517 | |
518 | #endif /* OPENFPM_DATA_SRC_UTIL_META_CC_UNIT_TESTS_HPP_ */ |
519 | |