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);
403 std::cout <<
"test_B_12_10_5" << std::endl;
415 A->_throwRuntimeErrInTransfer =
true;
416 B->_throwRuntimeErrInTransfer =
true;
417 std::exception_ptr e;
422 e = std::current_exception();
424 assert(A->_thrownException != B->_thrownException);
425 if(A->_transferIndex < B->_transferIndex) {
427 BOOST_CHECK(e == A->_thrownException);
431 BOOST_CHECK(e == B->_thrownException);
437 A->_throwRuntimeErrInTransfer =
true;
438 B->_throwRuntimeErrInTransfer =
true;
443 e = std::current_exception();
445 assert(A->_thrownException != B->_thrownException);
446 if(A->_transferIndex < B->_transferIndex) {
448 BOOST_CHECK(e == A->_thrownException);
452 BOOST_CHECK(e == B->_thrownException);
587 BOOST_CHECK(a1[0] == 42);
591 BOOST_CHECK(a2[0] == 120);
592 BOOST_CHECK(a3[0] == 654);
593 BOOST_CHECK(a4[0] == 456);
595 BOOST_CHECK(a1[0] == 42);
596 BOOST_CHECK(a2[0] == 42);
597 BOOST_CHECK(a3[0] == 654);
598 BOOST_CHECK(a4[0] == 456);
600 BOOST_CHECK(a1[0] == 42);
601 BOOST_CHECK(a2[0] == 42);
602 BOOST_CHECK(a3[0] == 123);
603 BOOST_CHECK(a4[0] == 456);
605 BOOST_CHECK(a1[0] == 42);
606 BOOST_CHECK(a2[0] == 42);
607 BOOST_CHECK(a3[0] == 123);
608 BOOST_CHECK(a4[0] == 42);
632 BOOST_CHECK(a1[0] == 42);
633 BOOST_CHECK(a2[0] == 0);
634 BOOST_CHECK(a3[0] == 123);
635 BOOST_CHECK(a4[0] == 42);
640 BOOST_CHECK(a1[0] == 333);
641 BOOST_CHECK(a2[0] == 0);
642 BOOST_CHECK(a3[0] == 123);
643 BOOST_CHECK(a4[0] == 42);
645 BOOST_CHECK(a1[0] == 333);
646 BOOST_CHECK(a2[0] == 666);
647 BOOST_CHECK(a3[0] == 123);
648 BOOST_CHECK(a4[0] == 42);
650 BOOST_CHECK(a1[0] == 333);
651 BOOST_CHECK(a2[0] == 666);
652 BOOST_CHECK(a3[0] == 999);
653 BOOST_CHECK(a4[0] == 42);
655 BOOST_CHECK(a1[0] == 333);
656 BOOST_CHECK(a2[0] == 666);
657 BOOST_CHECK(a3[0] == 999);
658 BOOST_CHECK(a4[0] == 111);
787 auto mux0d = boost::make_shared<CountingDecorator<int>>(mux0.getHighLevelImplElement());
788 auto mux0_2d = boost::make_shared<CountingDecorator<int>>(mux0_2.getHighLevelImplElement());
789 auto mux2d = boost::make_shared<CountingDecorator<int>>(mux2.getHighLevelImplElement());
790 auto mux3d = boost::make_shared<CountingDecorator<int>>(mux3.getHighLevelImplElement());
794 mux0_2.replace(mux0_2d);
804 BOOST_CHECK(mux0d->_target != mux0_2d->_target);
805 BOOST_CHECK(mux0.getHighLevelImplElement() == mux0d);
806 BOOST_CHECK(mux0_2.getHighLevelImplElement() == mux0_2d);
815 BOOST_CHECK(mux0.getHighLevelImplElement() == mux0d);
816 BOOST_CHECK(mux0_2.getHighLevelImplElement() != mux0_2d);
818 boost::dynamic_pointer_cast<ChimeraTK::CopyRegisterDecoratorTrait>(mux0_2.getHighLevelImplElement()) !=
nullptr);
831 BOOST_CHECK_EQUAL(
int(mux0), 18);
832 BOOST_CHECK_EQUAL(
int(mux0_2), 18);
836 BOOST_CHECK((mux0d->nPreRead == 1 && mux0_2d->nPreRead == 0) || (mux0d->nPreRead == 0 && mux0_2d->nPreRead == 1));
837 if(mux0d->nPreRead == 1) {
838 BOOST_CHECK_EQUAL(mux0d->nPostRead, 1);
839 BOOST_CHECK_EQUAL(mux0_2d->nPreRead, 0);
840 BOOST_CHECK_EQUAL(mux0_2d->nPostRead, 0);
843 BOOST_CHECK_EQUAL(mux0_2d->nPostRead, 1);
844 BOOST_CHECK_EQUAL(mux0d->nPreRead, 0);
845 BOOST_CHECK_EQUAL(mux0d->nPostRead, 0);
847 BOOST_CHECK_EQUAL(mux0d->nRead, 0);
848 BOOST_CHECK_EQUAL(mux0_2d->nRead, 0);
849 BOOST_CHECK_EQUAL(mux0d->nPreWrite, 0);
850 BOOST_CHECK_EQUAL(mux0d->nPostWrite, 0);
851 BOOST_CHECK_EQUAL(mux0d->nReadNonBlocking, 0);
852 BOOST_CHECK_EQUAL(mux0d->nReadLatest, 0);
853 BOOST_CHECK_EQUAL(mux0d->nWrite, 0);
854 BOOST_CHECK_EQUAL(mux0_2d->nPreWrite, 0);
855 BOOST_CHECK_EQUAL(mux0_2d->nPostWrite, 0);
856 BOOST_CHECK_EQUAL(mux0_2d->nReadNonBlocking, 0);
857 BOOST_CHECK_EQUAL(mux0_2d->nReadLatest, 0);
858 BOOST_CHECK_EQUAL(mux0_2d->nWrite, 0);
860 BOOST_CHECK_EQUAL(
int(mux2), 22);
861 BOOST_CHECK_EQUAL(mux2d->nPreRead, 1);
862 BOOST_CHECK_EQUAL(mux2d->nPostRead, 1);
863 BOOST_CHECK_EQUAL(mux2d->nPreWrite, 0);
864 BOOST_CHECK_EQUAL(mux2d->nPostWrite, 0);
865 BOOST_CHECK_EQUAL(mux2d->nRead, 0);
866 BOOST_CHECK_EQUAL(mux2d->nReadNonBlocking, 0);
867 BOOST_CHECK_EQUAL(mux2d->nReadLatest, 0);
868 BOOST_CHECK_EQUAL(mux2d->nWrite, 0);
870 BOOST_CHECK_EQUAL(
int(mux3), 23);
871 BOOST_CHECK_EQUAL(mux3d->nPreRead, 1);
872 BOOST_CHECK_EQUAL(mux3d->nPostRead, 1);
873 BOOST_CHECK_EQUAL(mux3d->nPreWrite, 0);
874 BOOST_CHECK_EQUAL(mux3d->nPostWrite, 0);
875 BOOST_CHECK_EQUAL(mux3d->nRead, 0);
876 BOOST_CHECK_EQUAL(mux3d->nReadNonBlocking, 0);
877 BOOST_CHECK_EQUAL(mux3d->nReadLatest, 0);
878 BOOST_CHECK_EQUAL(mux3d->nWrite, 0);
880 mux0d->resetCounters();
881 mux0_2d->resetCounters();
882 mux2d->resetCounters();
883 mux3d->resetCounters();
909 auto mux0d = boost::make_shared<CountingDecorator<int>>(mux0.getHighLevelImplElement(),
true);
910 auto mux0_2d = boost::make_shared<CountingDecorator<int>>(mux0_2.getHighLevelImplElement(),
true);
911 auto mux2d = boost::make_shared<CountingDecorator<int>>(mux2.getHighLevelImplElement(),
true);
912 auto mux3d = boost::make_shared<CountingDecorator<int>>(mux3.getHighLevelImplElement(),
true);
915 auto mux0d2 = boost::make_shared<CountingDecorator<int>>(mux0d);
916 auto mux0_2d2 = boost::make_shared<CountingDecorator<int>>(mux0_2d);
917 auto mux2d2 = boost::make_shared<CountingDecorator<int>>(mux2d);
918 auto mux3d2 = boost::make_shared<CountingDecorator<int>>(mux3d);
921 mux0.replace(mux0d2);
922 mux0_2.replace(mux0_2d2);
923 mux2.replace(mux2d2);
924 mux3.replace(mux3d2);
932 BOOST_CHECK(mux0d->_target == mux0_2d->_target);
933 BOOST_CHECK(mux0d2->_target == mux0d);
934 BOOST_CHECK(mux0_2d2->_target == mux0_2d);
935 BOOST_CHECK(mux2d2->_target == mux2d);
936 BOOST_CHECK(mux3d2->_target == mux3d);
945 BOOST_CHECK(mux0d->_target == mux0_2d->_target);
947 boost::dynamic_pointer_cast<ChimeraTK::CopyRegisterDecoratorTrait>(mux0_2.getHighLevelImplElement()) !=
nullptr);
948 BOOST_CHECK(mux2d2->_target == mux2d);
949 BOOST_CHECK(mux3d2->_target == mux3d);
962 BOOST_CHECK_EQUAL(
int(mux0), 18);
963 BOOST_CHECK_EQUAL(
int(mux0_2), 18);
967 BOOST_CHECK((mux0d->nRead == 1 && mux0_2d->nRead == 0) || (mux0d->nRead == 0 && mux0_2d->nRead == 1));
968 if(mux0d->nRead == 1) {
969 BOOST_CHECK_EQUAL(mux0d->nPreRead, 1);
970 BOOST_CHECK_EQUAL(mux0d->nPostRead, 1);
971 BOOST_CHECK_EQUAL(mux0_2d->nPreRead, 0);
972 BOOST_CHECK_EQUAL(mux0_2d->nPostRead, 0);
975 BOOST_CHECK_EQUAL(mux0_2d->nPreRead, 1);
976 BOOST_CHECK_EQUAL(mux0_2d->nPostRead, 1);
977 BOOST_CHECK_EQUAL(mux0d->nPreRead, 0);
978 BOOST_CHECK_EQUAL(mux0d->nPostRead, 0);
980 BOOST_CHECK_EQUAL(mux0d->nPreWrite, 0);
981 BOOST_CHECK_EQUAL(mux0d->nPostWrite, 0);
982 BOOST_CHECK_EQUAL(mux0d->nReadNonBlocking, 0);
983 BOOST_CHECK_EQUAL(mux0d->nReadLatest, 0);
984 BOOST_CHECK_EQUAL(mux0d->nWrite, 0);
985 BOOST_CHECK_EQUAL(mux0_2d->nPreWrite, 0);
986 BOOST_CHECK_EQUAL(mux0_2d->nPostWrite, 0);
987 BOOST_CHECK_EQUAL(mux0_2d->nReadNonBlocking, 0);
988 BOOST_CHECK_EQUAL(mux0_2d->nReadLatest, 0);
989 BOOST_CHECK_EQUAL(mux0_2d->nWrite, 0);
991 BOOST_CHECK_EQUAL(
int(mux2), 22);
992 BOOST_CHECK_EQUAL(mux2d->nPreRead, 1);
993 BOOST_CHECK_EQUAL(mux2d->nPostRead, 1);
994 BOOST_CHECK_EQUAL(mux2d->nPreWrite, 0);
995 BOOST_CHECK_EQUAL(mux2d->nPostWrite, 0);
996 BOOST_CHECK_EQUAL(mux2d->nRead, 1);
997 BOOST_CHECK_EQUAL(mux2d->nReadNonBlocking, 0);
998 BOOST_CHECK_EQUAL(mux2d->nReadLatest, 0);
999 BOOST_CHECK_EQUAL(mux2d->nWrite, 0);
1001 BOOST_CHECK_EQUAL(
int(mux3), 23);
1002 BOOST_CHECK_EQUAL(mux3d->nPreRead, 1);
1003 BOOST_CHECK_EQUAL(mux3d->nPostRead, 1);
1004 BOOST_CHECK_EQUAL(mux3d->nPreWrite, 0);
1005 BOOST_CHECK_EQUAL(mux3d->nPostWrite, 0);
1006 BOOST_CHECK_EQUAL(mux3d->nRead, 1);
1007 BOOST_CHECK_EQUAL(mux3d->nReadNonBlocking, 0);
1008 BOOST_CHECK_EQUAL(mux3d->nReadLatest, 0);
1009 BOOST_CHECK_EQUAL(mux3d->nWrite, 0);
1011 mux0d->resetCounters();
1012 mux0_2d->resetCounters();
1013 mux2d->resetCounters();
1014 mux3d->resetCounters();