63 std::cout <<
"testDeMultiplexing areaName = " << areaName
64 <<
" SequenceWordType = " <<
typeid(SequenceWordType).name() << std::endl;
71 std::vector<SequenceWordType> ioBuffer(15);
73 size_t nBytes = std::min(area.getNElements() *
sizeof(int32_t), 15 *
sizeof(SequenceWordType));
89 memcpy(&(area[0]), ioBuffer.data(), nBytes);
95 BOOST_TEST(deMultiplexer.
isReadOnly() ==
false);
101 BOOST_TEST(deMultiplexer[0][0] ==
'A');
102 BOOST_TEST(deMultiplexer[0][1] ==
'B');
103 BOOST_TEST(deMultiplexer[0][2] ==
'C');
104 BOOST_TEST(deMultiplexer[0][3] ==
'D');
105 BOOST_TEST(deMultiplexer[0][4] ==
'E');
106 BOOST_TEST(deMultiplexer[1][0] ==
'a');
107 BOOST_TEST(deMultiplexer[1][1] ==
'b');
108 BOOST_TEST(deMultiplexer[1][2] ==
'c');
109 BOOST_TEST(deMultiplexer[1][3] ==
'd');
110 BOOST_TEST(deMultiplexer[1][4] ==
'e');
111 BOOST_TEST(deMultiplexer[2][0] ==
'0');
112 BOOST_TEST(deMultiplexer[2][1] ==
'1');
113 BOOST_TEST(deMultiplexer[2][2] ==
'2');
114 BOOST_TEST(deMultiplexer[2][3] ==
'3');
115 BOOST_TEST(deMultiplexer[2][4] ==
'4');
117 for(
size_t sequenceIndex = 0; sequenceIndex < 3; ++sequenceIndex) {
118 for(
size_t i = 0; i < 5; ++i) {
119 deMultiplexer[sequenceIndex][i] += 5;
123 deMultiplexer.
write();
125 memcpy(ioBuffer.data(), &(area[0]), nBytes);
127 BOOST_TEST(ioBuffer[0] ==
'F');
128 BOOST_TEST(ioBuffer[1] ==
'f');
129 BOOST_TEST(ioBuffer[2] ==
'5');
130 BOOST_TEST(ioBuffer[3] ==
'G');
131 BOOST_TEST(ioBuffer[4] ==
'g');
132 BOOST_TEST(ioBuffer[5] ==
'6');
133 BOOST_TEST(ioBuffer[6] ==
'H');
134 BOOST_TEST(ioBuffer[7] ==
'h');
135 BOOST_TEST(ioBuffer[8] ==
'7');
136 BOOST_TEST(ioBuffer[9] ==
'I');
137 BOOST_TEST(ioBuffer[10] ==
'i');
138 BOOST_TEST(ioBuffer[11] ==
'8');
139 BOOST_TEST(ioBuffer[12] ==
'J');
140 BOOST_TEST(ioBuffer[13] ==
'j');
141 BOOST_TEST(ioBuffer[14] ==
'9');
163 std::vector<SequenceWordType> ioBuffer(15);
165 size_t nBytes = std::min(area.getNElements() *
sizeof(int32_t), 15 *
sizeof(SequenceWordType));
167 for(
size_t i = 0; i < ioBuffer.size(); ++i) {
170 memcpy(&(area[0]), ioBuffer.data(), nBytes);
177 BOOST_TEST(accessor[0][0] == 0);
178 BOOST_TEST(accessor[1][0] == 0.25);
179 BOOST_TEST(accessor[2][0] == 0.25);
180 BOOST_TEST(accessor[0][1] == 1.5);
181 BOOST_TEST(accessor[1][1] == 1);
182 BOOST_TEST(accessor[2][1] == 0.625);
183 BOOST_TEST(accessor[0][2] == 3.);
184 BOOST_TEST(accessor[1][2] == 1.75);
185 BOOST_TEST(accessor[2][2] == 1.);
186 BOOST_TEST(accessor[0][3] == 4.5);
187 BOOST_TEST(accessor[1][3] == 2.5);
188 BOOST_TEST(accessor[2][3] == 1.375);
189 BOOST_TEST(accessor[0][4] == 6.);
190 BOOST_TEST(accessor[1][4] == 3.25);
191 BOOST_TEST(accessor[2][4] == 1.75);
193 for(
size_t sequenceIndex = 0; sequenceIndex < 3; ++sequenceIndex) {
194 for(
size_t i = 0; i < 5; ++i) {
195 accessor[sequenceIndex][i] += 1.;
202 memcpy(ioBuffer.data(), &(area[0]), nBytes);
204 for(
size_t i = 0; i < 15; ++i) {
207 int addedValue = 1 << (i % 3 + 1);
208 std::stringstream message;
209 message <<
"ioBuffer[" << i <<
"] is " << ioBuffer[i] <<
", expected " << i + addedValue;
210 BOOST_CHECK_MESSAGE(ioBuffer[i] ==
static_cast<SequenceWordType
>(i + addedValue), message.str());
235 BOOST_TEST(myMixedData[0].size() == 372);
237 myMixedData[0][0] = -24673;
238 myMixedData[1][0] = -13724;
239 myMixedData[2][0] = 130495;
240 myMixedData[3][0] = 513;
241 myMixedData[4][0] = 1027;
242 myMixedData[5][0] = -56.4;
243 myMixedData[6][0] = 78;
244 myMixedData[7][0] = 45.2;
245 myMixedData[8][0] = -23.9;
246 myMixedData[9][0] = 61.3;
247 myMixedData[10][0] = -12;
252 BOOST_TEST(myRawData[0] == -899375201);
253 BOOST_TEST(myRawData[1] == 130495);
254 BOOST_TEST(myRawData[2] == 67305985);
255 BOOST_TEST(myRawData[3] == 5112008);
256 BOOST_TEST(myRawData[4] == -197269459);
260 BOOST_TEST(myMixedData[0][0] == -24673);
261 BOOST_TEST(myMixedData[1][0] == -13724);
262 BOOST_TEST(myMixedData[2][0] == 130495);
263 BOOST_TEST(myMixedData[3][0] == 513);
264 BOOST_TEST(myMixedData[4][0] == 1027);
265 BOOST_TEST(myMixedData[5][0] == -56);
266 BOOST_TEST(myMixedData[6][0] == 78);
267 BOOST_TEST(myMixedData[7][0] == 45);
268 BOOST_TEST(myMixedData[8][0] == -24);
269 BOOST_TEST(myMixedData[9][0] == 61);
270 BOOST_TEST(myMixedData[10][0] == -12);
293 const size_t nWordsPerBlock = 44 /
sizeof(int32_t);
298 "APP0/DAQ0_BAM.MULTIPLEXED_RAW", 300 * nWordsPerBlock, 42 * nWordsPerBlock, {AccessMode::raw});
302 BOOST_TEST(myMixedData[0].size() == 300);
305 myMixedData[0][i] = -24673;
306 myMixedData[1][i] = -13724;
307 myMixedData[2][i] = 130495;
308 myMixedData[3][i] = 513;
309 myMixedData[4][i] = 1027;
310 myMixedData[5][i] = -56.4;
311 myMixedData[6][i] = 78;
312 myMixedData[7][i] = 45.2;
313 myMixedData[8][i] = -23.9;
314 myMixedData[9][i] = 61.3;
315 myMixedData[10][i] = -12;
320 BOOST_TEST(myRawData[0 + i * nWordsPerBlock] == -899375201);
321 BOOST_TEST(myRawData[1 + i * nWordsPerBlock] == 130495);
322 BOOST_TEST(myRawData[2 + i * nWordsPerBlock] == 67305985);
323 BOOST_TEST(myRawData[3 + i * nWordsPerBlock] == 5112008);
324 BOOST_TEST(myRawData[4 + i * nWordsPerBlock] == -197269459);
328 BOOST_TEST(myMixedData[0][i] == -24673);
329 BOOST_TEST(myMixedData[1][i] == -13724);
330 BOOST_TEST(myMixedData[2][i] == 130495);
331 BOOST_TEST(myMixedData[3][i] == 513);
332 BOOST_TEST(myMixedData[4][i] == 1027);
333 BOOST_TEST(myMixedData[5][i] == -56);
334 BOOST_TEST(myMixedData[6][i] == 78);
335 BOOST_TEST(myMixedData[7][i] == 45);
336 BOOST_TEST(myMixedData[8][i] == -24);
337 BOOST_TEST(myMixedData[9][i] == 61);
338 BOOST_TEST(myMixedData[10][i] == -12);
340 myMixedData[0][i] = i;
341 myMixedData[1][i] = 0;
342 myMixedData[2][i] = 0;
343 myMixedData[3][i] = 0;
344 myMixedData[4][i] = 0;
345 myMixedData[5][i] = 0;
346 myMixedData[6][i] = 0;
347 myMixedData[7][i] = 0;
348 myMixedData[8][i] = 0;
349 myMixedData[9][i] = 0;
350 myMixedData[10][i] = 0;
355 BOOST_TEST(myRawData[0 + i * nWordsPerBlock] ==
static_cast<int>(i));
356 BOOST_TEST(myRawData[1 + i * nWordsPerBlock] == 0);
357 BOOST_TEST(myRawData[2 + i * nWordsPerBlock] == 0);
358 BOOST_TEST(myRawData[3 + i * nWordsPerBlock] == 0);
359 BOOST_TEST(myRawData[4 + i * nWordsPerBlock] == 0);
363 BOOST_TEST(myMixedData[0][i] == i);
364 BOOST_TEST(myMixedData[1][i] == 0);
365 BOOST_TEST(myMixedData[2][i] == 0);
366 BOOST_TEST(myMixedData[3][i] == 0);
367 BOOST_TEST(myMixedData[4][i] == 0);
368 BOOST_TEST(myMixedData[5][i] == 0);
369 BOOST_TEST(myMixedData[6][i] == 0);
370 BOOST_TEST(myMixedData[7][i] == 0);
371 BOOST_TEST(myMixedData[8][i] == 0);
372 BOOST_TEST(myMixedData[9][i] == 0);
373 BOOST_TEST(myMixedData[10][i] == 0);
383 const size_t nWordsPerBlock = 44 /
sizeof(int32_t);
390 BOOST_TEST(myMixedData[0].size() == 120);
393 myMixedData[0][i] = -24673;
394 myMixedData[1][i] = -13724;
395 myMixedData[2][i] = 130495;
396 myMixedData[3][i] = 513;
397 myMixedData[4][i] = 1027;
398 myMixedData[5][i] = -56.4;
399 myMixedData[6][i] = 78;
400 myMixedData[7][i] = 45.2;
401 myMixedData[8][i] = -23.9;
402 myMixedData[9][i] = 61.3;
403 myMixedData[10][i] = -12;
408 BOOST_TEST(myRawData[0 + i * nWordsPerBlock] == -899375201);
409 BOOST_TEST(myRawData[1 + i * nWordsPerBlock] == 130495);
410 BOOST_TEST(myRawData[2 + i * nWordsPerBlock] == 67305985);
411 BOOST_TEST(myRawData[3 + i * nWordsPerBlock] == 5112008);
412 BOOST_TEST(myRawData[4 + i * nWordsPerBlock] == -197269459);
416 BOOST_TEST(myMixedData[0][i] == -24673);
417 BOOST_TEST(myMixedData[1][i] == -13724);
418 BOOST_TEST(myMixedData[2][i] == 130495);
419 BOOST_TEST(myMixedData[3][i] == 513);
420 BOOST_TEST(myMixedData[4][i] == 1027);
421 BOOST_TEST(myMixedData[5][i] == -56);
422 BOOST_TEST(myMixedData[6][i] == 78);
423 BOOST_TEST(myMixedData[7][i] == 45);
424 BOOST_TEST(myMixedData[8][i] == -24);
425 BOOST_TEST(myMixedData[9][i] == 61);
426 BOOST_TEST(myMixedData[10][i] == -12);
428 myMixedData[0][i] = i;
429 myMixedData[1][i] = 0;
430 myMixedData[2][i] = 0;
431 myMixedData[3][i] = 0;
432 myMixedData[4][i] = 0;
433 myMixedData[5][i] = 0;
434 myMixedData[6][i] = 0;
435 myMixedData[7][i] = 0;
436 myMixedData[8][i] = 0;
437 myMixedData[9][i] = 0;
438 myMixedData[10][i] = 0;
443 BOOST_TEST(myRawData[0 + i * nWordsPerBlock] == (
int)i);
444 BOOST_TEST(myRawData[1 + i * nWordsPerBlock] == 0);
445 BOOST_TEST(myRawData[2 + i * nWordsPerBlock] == 0);
446 BOOST_TEST(myRawData[3 + i * nWordsPerBlock] == 0);
447 BOOST_TEST(myRawData[4 + i * nWordsPerBlock] == 0);
451 BOOST_TEST(myMixedData[0][i] == i);
452 BOOST_TEST(myMixedData[1][i] == 0);
453 BOOST_TEST(myMixedData[2][i] == 0);
454 BOOST_TEST(myMixedData[3][i] == 0);
455 BOOST_TEST(myMixedData[4][i] == 0);
456 BOOST_TEST(myMixedData[5][i] == 0);
457 BOOST_TEST(myMixedData[6][i] == 0);
458 BOOST_TEST(myMixedData[7][i] == 0);
459 BOOST_TEST(myMixedData[8][i] == 0);
460 BOOST_TEST(myMixedData[9][i] == 0);
461 BOOST_TEST(myMixedData[10][i] == 0);
TwoDRegisterAccessor< UserType > getTwoDRegisterAccessor(const RegisterPath ®isterPathName, size_t numberOfElements=0, size_t elementsOffset=0, const AccessModeFlags &flags=AccessModeFlags({})) const
Get a TwoDRegisterAccessor object for the given register.
OneDRegisterAccessor< UserType > getOneDRegisterAccessor(const RegisterPath ®isterPathName, size_t numberOfWords=0, size_t wordOffsetInRegister=0, const AccessModeFlags &flags=AccessModeFlags({})) const
Get a OneDRegisterAccessor object for the given register.