4 #define BOOST_TEST_DYN_LINK
5 #define BOOST_TEST_MODULE TransferGroupTest
6 #include <boost/test/unit_test.hpp>
7 using namespace boost::unit_test_framework;
17 using namespace boost::unit_test_framework;
21 return boost::make_shared<TransferElementTestAccessor<int32_t>>(flags);
35 std::cout <<
"test_B_12_1_3" << std::endl;
36 std::map<TransferElementID, bool> foundIds;
41 for(
size_t i = 0; i < 3; ++i) A->_internalElements.push_back(
makeTETA());
42 for(
size_t i = 0; i < 4; ++i) B->_internalElements.push_back(
makeTETA());
49 for(
auto&
id : A->_listReplacementElements) foundIds[id] =
true;
50 for(
auto& e : A->_internalElements) BOOST_CHECK(foundIds[e->getId()] ==
true);
56 for(
auto&
id : A->_listReplacementElements) foundIds[id] =
true;
57 for(
auto& e : A->_internalElements) BOOST_CHECK(foundIds[e->getId()] ==
true);
58 for(
auto& e : B->_internalElements) BOOST_CHECK(foundIds[e->getId()] ==
true);
60 for(
auto&
id : B->_listReplacementElements) foundIds[id] =
true;
61 for(
auto& e : A->_internalElements) BOOST_CHECK(foundIds[e->getId()] ==
true);
62 for(
auto& e : B->_internalElements) BOOST_CHECK(foundIds[e->getId()] ==
true);
72 std::cout <<
"test_B_12_3" << std::endl;
90 std::cout <<
"test_B_12_4" << std::endl;
106 B->_writeable =
false;
121 B->_throwRuntimeErrInTransfer =
true;
123 B->_writeable =
false;
124 B->_throwRuntimeErrInTransfer =
false;
136 std::cout <<
"test_B_12_5" << std::endl;
150 std::cout <<
"test_B_12_6" << std::endl;
165 std::cout <<
"test_B_12_7" << std::endl;
166 auto A =
makeTETA({AccessMode::wait_for_new_data});
178 std::cout <<
"test_B_12_8" << std::endl;
181 A->_listMayReplaceElements.insert(B->getId());
189 BOOST_CHECK(b.getHighLevelImplElement() != B);
191 A->_setPostReadData = 42;
193 BOOST_CHECK_EQUAL(a[0][0], 42);
194 BOOST_CHECK_EQUAL(b[0][0], 42);
201 #define CHECK_COUNTERS_HIGH_LEVEL(te, isWrite, expectedOrderPreMax, expectedOrderPostMin, expectTransfer) \
203 BOOST_CHECK_EQUAL(te->_preRead_counter, 1); \
204 BOOST_CHECK_EQUAL(te->_preWrite_counter, 0); \
205 BOOST_CHECK_EQUAL(te->_postRead_counter, 1); \
206 BOOST_CHECK_EQUAL(te->_postWrite_counter, 0); \
207 if(expectTransfer) { \
208 BOOST_CHECK_EQUAL(te->_readTransfer_counter, 1); \
212 BOOST_CHECK_EQUAL(te->_preRead_counter, 0); \
213 BOOST_CHECK_EQUAL(te->_preWrite_counter, 1); \
214 BOOST_CHECK_EQUAL(te->_postRead_counter, 0); \
215 BOOST_CHECK_EQUAL(te->_postWrite_counter, 1); \
216 if(expectTransfer) { \
217 BOOST_CHECK_EQUAL(te->_writeTransfer_counter, 1); \
220 if(!expectTransfer) { \
221 BOOST_CHECK_EQUAL(te->_readTransfer_counter, 0); \
222 BOOST_CHECK_EQUAL(te->_writeTransfer_counter, 0); \
225 BOOST_CHECK(te->_preIndex <= expectedOrderPreMax); \
226 BOOST_CHECK(te->_postIndex >= expectedOrderPostMin)
228 #define CHECK_COUNTERS_MID_LEVEL(te) \
229 BOOST_CHECK_EQUAL(te->_preRead_counter, 0); \
230 BOOST_CHECK_EQUAL(te->_preWrite_counter, 0); \
231 BOOST_CHECK_EQUAL(te->_readTransfer_counter, 0); \
232 BOOST_CHECK_EQUAL(te->_writeTransfer_counter, 0); \
233 BOOST_CHECK_EQUAL(te->_postRead_counter, 0); \
234 BOOST_CHECK_EQUAL(te->_postWrite_counter, 0)
236 #define CHECK_COUNTERS_LOW_LEVEL(te, isWrite, expectedOrderMin, expectedOrderMax) \
237 BOOST_CHECK_EQUAL(te->_preRead_counter, 0); \
238 BOOST_CHECK_EQUAL(te->_preWrite_counter, 0); \
240 BOOST_CHECK_EQUAL(te->_readTransfer_counter, 1); \
241 BOOST_CHECK_EQUAL(te->_writeTransfer_counter, 0); \
244 BOOST_CHECK_EQUAL(te->_readTransfer_counter, 0); \
245 BOOST_CHECK_EQUAL(te->_writeTransfer_counter, 1); \
247 BOOST_CHECK_EQUAL(te->_postRead_counter, 0); \
248 BOOST_CHECK_EQUAL(te->_postWrite_counter, 0); \
250 BOOST_CHECK(te->_transferIndex >= expectedOrderMin); \
251 BOOST_CHECK(te->_transferIndex <= expectedOrderMax)
260 std::cout <<
"test_B_12_9" << std::endl;
265 for(
size_t i = 0; i < 1; ++i) {
266 A->_internalElements.push_back(
makeTETA());
267 A->_hardwareAccessingElements.push_back(A->_internalElements[i]);
270 for(
size_t i = 0; i < 2; ++i) {
271 B->_internalElements.push_back(
makeTETA());
272 B->_hardwareAccessingElements.push_back(B->_internalElements[i]);
274 B->_internalElements.push_back(
makeTETA());
283 for(
auto& e : A->_internalElements) e->resetCounters();
284 for(
auto& e : B->_internalElements) e->resetCounters();
300 std::cout <<
"test_B_12_10_1_1" << std::endl;
302 A->_throwRuntimeErrInPreconditions =
true;
307 BOOST_CHECK_EQUAL(A->_preRead_counter, 0);
308 BOOST_CHECK_EQUAL(A->_preWrite_counter, 0);
309 BOOST_CHECK_EQUAL(A->_readTransfer_counter, 0);
310 BOOST_CHECK_EQUAL(A->_writeTransfer_counter, 0);
311 BOOST_CHECK_EQUAL(A->_writeTransferDestructively_counter, 0);
312 BOOST_CHECK_EQUAL(A->_postRead_counter, 0);
313 BOOST_CHECK_EQUAL(A->_postWrite_counter, 0);
323 std::cout <<
"test_B_12_10_1_2" << std::endl;
326 A->_readable =
false;
330 BOOST_CHECK_EQUAL(A->_preRead_counter, 0);
331 BOOST_CHECK_EQUAL(A->_preWrite_counter, 0);
332 BOOST_CHECK_EQUAL(A->_readTransfer_counter, 0);
333 BOOST_CHECK_EQUAL(A->_writeTransfer_counter, 0);
334 BOOST_CHECK_EQUAL(A->_writeTransferDestructively_counter, 0);
335 BOOST_CHECK_EQUAL(A->_postRead_counter, 0);
336 BOOST_CHECK_EQUAL(A->_postWrite_counter, 0);
337 BOOST_CHECK_NO_THROW(group.
write());
341 A->_writeable =
false;
345 BOOST_CHECK_EQUAL(A->_preRead_counter, 0);
346 BOOST_CHECK_EQUAL(A->_preWrite_counter, 0);
347 BOOST_CHECK_EQUAL(A->_readTransfer_counter, 0);
348 BOOST_CHECK_EQUAL(A->_writeTransfer_counter, 0);
349 BOOST_CHECK_EQUAL(A->_writeTransferDestructively_counter, 0);
350 BOOST_CHECK_EQUAL(A->_postRead_counter, 0);
351 BOOST_CHECK_EQUAL(A->_postWrite_counter, 0);
352 BOOST_CHECK_NO_THROW(group.
read());
365 std::cout <<
"test_B_12_10_3" << std::endl;
370 for(
size_t i = 0; i < 1; ++i) {
371 A->_internalElements.push_back(
makeTETA());
372 A->_hardwareAccessingElements.push_back(A->_internalElements[i]);
382 for(
auto& e : A->_internalElements) e->resetCounters();
383 A->_internalElements[0]->_throwRuntimeErrInTransfer =
true;
385 BOOST_CHECK(A->_seenActiveException == A->_internalElements[0]->_thrownException);
386 BOOST_CHECK(A->_internalElements[0]->_seenActiveException ==
nullptr);
396 std::cout <<
"test_B_12_10_4" << std::endl;
408 A->_throwRuntimeErrInTransfer =
true;
416 B->_throwRuntimeErrInTransfer =
true;
424 A->_throwRuntimeErrInTransfer =
true;
425 B->_throwRuntimeErrInTransfer =
true;
433 A->_throwRuntimeErrInTransfer =
true;
441 B->_throwRuntimeErrInTransfer =
true;
449 A->_throwRuntimeErrInTransfer =
true;
450 B->_throwRuntimeErrInTransfer =
true;
465 std::cout <<
"test_B_12_10_5" << std::endl;
477 A->_throwRuntimeErrInTransfer =
true;
478 B->_throwRuntimeErrInTransfer =
true;
479 std::exception_ptr e;
484 e = std::current_exception();
486 assert(A->_thrownException != B->_thrownException);
487 if(A->_transferIndex < B->_transferIndex) {
489 BOOST_CHECK(e == A->_thrownException);
493 BOOST_CHECK(e == B->_thrownException);
499 A->_throwRuntimeErrInTransfer =
true;
500 B->_throwRuntimeErrInTransfer =
true;
505 e = std::current_exception();
507 assert(A->_thrownException != B->_thrownException);
508 if(A->_transferIndex < B->_transferIndex) {
510 BOOST_CHECK(e == A->_thrownException);
514 BOOST_CHECK(e == B->_thrownException);
525 std::cout <<
"test_B_12_11_1" << std::endl;
537 A->_throwRuntimeErrInTransfer =
true;
539 BOOST_CHECK(A->_updateDataBuffer ==
false);
540 BOOST_CHECK(B->_updateDataBuffer ==
false);
545 A->_throwRuntimeErrInTransfer =
true;
547 BOOST_CHECK(A->_updateDataBuffer ==
false);
548 BOOST_CHECK(B->_updateDataBuffer ==
false);
554 BOOST_CHECK(A->_updateDataBuffer ==
true);
555 BOOST_CHECK(B->_updateDataBuffer ==
true);
561 BOOST_CHECK(A->_updateDataBuffer ==
true);
562 BOOST_CHECK(B->_updateDataBuffer ==
true);
572 const std::string EXCEPTION_DUMMY_CDD =
"(ExceptionDummy:1?map=test3.map)";
573 BackendFactory::getInstance().setDMapFilePath(
"dummies.dmap");
578 device1.
open(
"DUMMYD1");
579 auto exceptionDummy = boost::dynamic_pointer_cast<ChimeraTK::ExceptionDummy>(
581 device2.
open(EXCEPTION_DUMMY_CDD);
582 device3.
open(
"DUMMYD2");
598 tg.addAccessor(accessor3);
599 tg.addAccessor(accessor1);
600 tg.addAccessor(accessor4);
601 tg.addAccessor(accessor5);
609 accessor1w = int(0xdeadcafe);
612 accessor4w = 10101010;
613 accessor5w = int(0xc01dcafe);
623 BOOST_CHECK_EQUAL(
static_cast<int>(accessor1), 1);
624 BOOST_CHECK_EQUAL(
static_cast<int>(accessor2), 2);
625 BOOST_CHECK_EQUAL(
static_cast<int>(accessor3), 3);
626 BOOST_CHECK_EQUAL(
static_cast<int>(accessor4), 4);
627 BOOST_CHECK_EQUAL(
static_cast<int>(accessor5), 5);
633 BackendFactory::getInstance().setDMapFilePath(
"dummies.dmap");
649 BOOST_CHECK(a1[0] == 42);
653 BOOST_CHECK(a2[0] == 120);
654 BOOST_CHECK(a3[0] == 654);
655 BOOST_CHECK(a4[0] == 456);
657 BOOST_CHECK(a1[0] == 42);
658 BOOST_CHECK(a2[0] == 42);
659 BOOST_CHECK(a3[0] == 654);
660 BOOST_CHECK(a4[0] == 456);
662 BOOST_CHECK(a1[0] == 42);
663 BOOST_CHECK(a2[0] == 42);
664 BOOST_CHECK(a3[0] == 123);
665 BOOST_CHECK(a4[0] == 456);
667 BOOST_CHECK(a1[0] == 42);
668 BOOST_CHECK(a2[0] == 42);
669 BOOST_CHECK(a3[0] == 123);
670 BOOST_CHECK(a4[0] == 42);
694 BOOST_CHECK(a1[0] == 42);
695 BOOST_CHECK(a2[0] == 0);
696 BOOST_CHECK(a3[0] == 123);
697 BOOST_CHECK(a4[0] == 42);
702 BOOST_CHECK(a1[0] == 333);
703 BOOST_CHECK(a2[0] == 0);
704 BOOST_CHECK(a3[0] == 123);
705 BOOST_CHECK(a4[0] == 42);
707 BOOST_CHECK(a1[0] == 333);
708 BOOST_CHECK(a2[0] == 666);
709 BOOST_CHECK(a3[0] == 123);
710 BOOST_CHECK(a4[0] == 42);
712 BOOST_CHECK(a1[0] == 333);
713 BOOST_CHECK(a2[0] == 666);
714 BOOST_CHECK(a3[0] == 999);
715 BOOST_CHECK(a4[0] == 42);
717 BOOST_CHECK(a1[0] == 333);
718 BOOST_CHECK(a2[0] == 666);
719 BOOST_CHECK(a3[0] == 999);
720 BOOST_CHECK(a4[0] == 111);
731 CountingDecorator(
const boost::shared_ptr<ChimeraTK::TransferElement>& target,
bool _fakeLowLevel =
false)
733 fakeLowLevel(_fakeLowLevel) {
736 this->_name =
"CD:" + this->_name;
771 return {boost::enable_shared_from_this<TransferElement>::shared_from_this()};
779 if(fakeLowLevel)
return;
780 if(_target->mayReplaceOther(newElement)) {
781 _target = boost::static_pointer_cast<NDRegisterAccessor<T>>(newElement);
784 _target->replaceTransferElement(newElement);
797 bool mayReplaceOther(
const boost::shared_ptr<TransferElement const>& other)
const override {
798 auto casted = boost::dynamic_pointer_cast<CountingDecorator<T>
const>(other);
799 if(!casted)
return false;
800 if(_target == casted->_target)
return true;
801 if(_target->mayReplaceOther(casted->_target))
return true;
811 nReadNonBlocking = 0;
820 size_t nPostWrite{0};
822 size_t nReadNonBlocking{0};
823 size_t nReadLatest{0};
832 BackendFactory::getInstance().setDMapFilePath(
"dummies.dmap");
846 auto mux0d = boost::make_shared<CountingDecorator<int>>(mux0.getHighLevelImplElement());
847 auto mux0_2d = boost::make_shared<CountingDecorator<int>>(mux0_2.getHighLevelImplElement());
848 auto mux2d = boost::make_shared<CountingDecorator<int>>(mux2.getHighLevelImplElement());
849 auto mux3d = boost::make_shared<CountingDecorator<int>>(mux3.getHighLevelImplElement());
853 mux0_2.replace(mux0_2d);
863 BOOST_CHECK(mux0d->_target != mux0_2d->_target);
864 BOOST_CHECK(mux0.getHighLevelImplElement() == mux0d);
865 BOOST_CHECK(mux0_2.getHighLevelImplElement() == mux0_2d);
874 BOOST_CHECK(mux0.getHighLevelImplElement() == mux0d);
875 BOOST_CHECK(mux0_2.getHighLevelImplElement() != mux0_2d);
877 boost::dynamic_pointer_cast<ChimeraTK::CopyRegisterDecoratorTrait>(mux0_2.getHighLevelImplElement()) !=
nullptr);
890 BOOST_CHECK_EQUAL(
int(mux0), 18);
891 BOOST_CHECK_EQUAL(
int(mux0_2), 18);
895 BOOST_CHECK((mux0d->nPreRead == 1 && mux0_2d->nPreRead == 0) || (mux0d->nPreRead == 0 && mux0_2d->nPreRead == 1));
896 if(mux0d->nPreRead == 1) {
897 BOOST_CHECK_EQUAL(mux0d->nPostRead, 1);
898 BOOST_CHECK_EQUAL(mux0_2d->nPreRead, 0);
899 BOOST_CHECK_EQUAL(mux0_2d->nPostRead, 0);
902 BOOST_CHECK_EQUAL(mux0_2d->nPostRead, 1);
903 BOOST_CHECK_EQUAL(mux0d->nPreRead, 0);
904 BOOST_CHECK_EQUAL(mux0d->nPostRead, 0);
906 BOOST_CHECK_EQUAL(mux0d->nRead, 0);
907 BOOST_CHECK_EQUAL(mux0_2d->nRead, 0);
908 BOOST_CHECK_EQUAL(mux0d->nPreWrite, 0);
909 BOOST_CHECK_EQUAL(mux0d->nPostWrite, 0);
910 BOOST_CHECK_EQUAL(mux0d->nReadNonBlocking, 0);
911 BOOST_CHECK_EQUAL(mux0d->nReadLatest, 0);
912 BOOST_CHECK_EQUAL(mux0d->nWrite, 0);
913 BOOST_CHECK_EQUAL(mux0_2d->nPreWrite, 0);
914 BOOST_CHECK_EQUAL(mux0_2d->nPostWrite, 0);
915 BOOST_CHECK_EQUAL(mux0_2d->nReadNonBlocking, 0);
916 BOOST_CHECK_EQUAL(mux0_2d->nReadLatest, 0);
917 BOOST_CHECK_EQUAL(mux0_2d->nWrite, 0);
919 BOOST_CHECK_EQUAL(
int(mux2), 22);
920 BOOST_CHECK_EQUAL(mux2d->nPreRead, 1);
921 BOOST_CHECK_EQUAL(mux2d->nPostRead, 1);
922 BOOST_CHECK_EQUAL(mux2d->nPreWrite, 0);
923 BOOST_CHECK_EQUAL(mux2d->nPostWrite, 0);
924 BOOST_CHECK_EQUAL(mux2d->nRead, 0);
925 BOOST_CHECK_EQUAL(mux2d->nReadNonBlocking, 0);
926 BOOST_CHECK_EQUAL(mux2d->nReadLatest, 0);
927 BOOST_CHECK_EQUAL(mux2d->nWrite, 0);
929 BOOST_CHECK_EQUAL(
int(mux3), 23);
930 BOOST_CHECK_EQUAL(mux3d->nPreRead, 1);
931 BOOST_CHECK_EQUAL(mux3d->nPostRead, 1);
932 BOOST_CHECK_EQUAL(mux3d->nPreWrite, 0);
933 BOOST_CHECK_EQUAL(mux3d->nPostWrite, 0);
934 BOOST_CHECK_EQUAL(mux3d->nRead, 0);
935 BOOST_CHECK_EQUAL(mux3d->nReadNonBlocking, 0);
936 BOOST_CHECK_EQUAL(mux3d->nReadLatest, 0);
937 BOOST_CHECK_EQUAL(mux3d->nWrite, 0);
939 mux0d->resetCounters();
940 mux0_2d->resetCounters();
941 mux2d->resetCounters();
942 mux3d->resetCounters();
955 BackendFactory::getInstance().setDMapFilePath(
"dummies.dmap");
968 auto mux0d = boost::make_shared<CountingDecorator<int>>(mux0.getHighLevelImplElement(),
true);
969 auto mux0_2d = boost::make_shared<CountingDecorator<int>>(mux0_2.getHighLevelImplElement(),
true);
970 auto mux2d = boost::make_shared<CountingDecorator<int>>(mux2.getHighLevelImplElement(),
true);
971 auto mux3d = boost::make_shared<CountingDecorator<int>>(mux3.getHighLevelImplElement(),
true);
974 auto mux0d2 = boost::make_shared<CountingDecorator<int>>(mux0d);
975 auto mux0_2d2 = boost::make_shared<CountingDecorator<int>>(mux0_2d);
976 auto mux2d2 = boost::make_shared<CountingDecorator<int>>(mux2d);
977 auto mux3d2 = boost::make_shared<CountingDecorator<int>>(mux3d);
980 mux0.replace(mux0d2);
981 mux0_2.replace(mux0_2d2);
982 mux2.replace(mux2d2);
983 mux3.replace(mux3d2);
991 BOOST_CHECK(mux0d->_target == mux0_2d->_target);
992 BOOST_CHECK(mux0d2->_target == mux0d);
993 BOOST_CHECK(mux0_2d2->_target == mux0_2d);
994 BOOST_CHECK(mux2d2->_target == mux2d);
995 BOOST_CHECK(mux3d2->_target == mux3d);
1004 BOOST_CHECK(mux0d->_target == mux0_2d->_target);
1006 boost::dynamic_pointer_cast<ChimeraTK::CopyRegisterDecoratorTrait>(mux0_2.getHighLevelImplElement()) !=
nullptr);
1007 BOOST_CHECK(mux2d2->_target == mux2d);
1008 BOOST_CHECK(mux3d2->_target == mux3d);
1021 BOOST_CHECK_EQUAL(
int(mux0), 18);
1022 BOOST_CHECK_EQUAL(
int(mux0_2), 18);
1026 BOOST_CHECK((mux0d->nRead == 1 && mux0_2d->nRead == 0) || (mux0d->nRead == 0 && mux0_2d->nRead == 1));
1027 if(mux0d->nRead == 1) {
1028 BOOST_CHECK_EQUAL(mux0d->nPreRead, 1);
1029 BOOST_CHECK_EQUAL(mux0d->nPostRead, 1);
1030 BOOST_CHECK_EQUAL(mux0_2d->nPreRead, 0);
1031 BOOST_CHECK_EQUAL(mux0_2d->nPostRead, 0);
1034 BOOST_CHECK_EQUAL(mux0_2d->nPreRead, 1);
1035 BOOST_CHECK_EQUAL(mux0_2d->nPostRead, 1);
1036 BOOST_CHECK_EQUAL(mux0d->nPreRead, 0);
1037 BOOST_CHECK_EQUAL(mux0d->nPostRead, 0);
1039 BOOST_CHECK_EQUAL(mux0d->nPreWrite, 0);
1040 BOOST_CHECK_EQUAL(mux0d->nPostWrite, 0);
1041 BOOST_CHECK_EQUAL(mux0d->nReadNonBlocking, 0);
1042 BOOST_CHECK_EQUAL(mux0d->nReadLatest, 0);
1043 BOOST_CHECK_EQUAL(mux0d->nWrite, 0);
1044 BOOST_CHECK_EQUAL(mux0_2d->nPreWrite, 0);
1045 BOOST_CHECK_EQUAL(mux0_2d->nPostWrite, 0);
1046 BOOST_CHECK_EQUAL(mux0_2d->nReadNonBlocking, 0);
1047 BOOST_CHECK_EQUAL(mux0_2d->nReadLatest, 0);
1048 BOOST_CHECK_EQUAL(mux0_2d->nWrite, 0);
1050 BOOST_CHECK_EQUAL(
int(mux2), 22);
1051 BOOST_CHECK_EQUAL(mux2d->nPreRead, 1);
1052 BOOST_CHECK_EQUAL(mux2d->nPostRead, 1);
1053 BOOST_CHECK_EQUAL(mux2d->nPreWrite, 0);
1054 BOOST_CHECK_EQUAL(mux2d->nPostWrite, 0);
1055 BOOST_CHECK_EQUAL(mux2d->nRead, 1);
1056 BOOST_CHECK_EQUAL(mux2d->nReadNonBlocking, 0);
1057 BOOST_CHECK_EQUAL(mux2d->nReadLatest, 0);
1058 BOOST_CHECK_EQUAL(mux2d->nWrite, 0);
1060 BOOST_CHECK_EQUAL(
int(mux3), 23);
1061 BOOST_CHECK_EQUAL(mux3d->nPreRead, 1);
1062 BOOST_CHECK_EQUAL(mux3d->nPostRead, 1);
1063 BOOST_CHECK_EQUAL(mux3d->nPreWrite, 0);
1064 BOOST_CHECK_EQUAL(mux3d->nPostWrite, 0);
1065 BOOST_CHECK_EQUAL(mux3d->nRead, 1);
1066 BOOST_CHECK_EQUAL(mux3d->nReadNonBlocking, 0);
1067 BOOST_CHECK_EQUAL(mux3d->nReadLatest, 0);
1068 BOOST_CHECK_EQUAL(mux3d->nWrite, 0);
1070 mux0d->resetCounters();
1071 mux0_2d->resetCounters();
1072 mux2d->resetCounters();
1073 mux3d->resetCounters();
1086 BackendFactory::getInstance().setDMapFilePath(
"dummies.dmap");
1093 auto b =
device.
getBackend()->getRegisterAccessor<int32_t>(
"BOARD.WORD_FIRMWARE", 1, 0, {});
1102 BOOST_CHECK_EQUAL(a, 12);
1109 BOOST_CHECK_EQUAL(a, 13);
1110 BOOST_CHECK_EQUAL(b->accessChannel(0)[0], 13);