9 #include "../../../dump.h"
10 #include "../../../dump.icc"
21 const std::string&
name,
22 const IInterface*
parent) :
32 return StatusCode::SUCCESS;
48 os <<
"test counts. nInputPorts: " << tc.nInputPorts
49 <<
" nOutputTobs: " << tc.nOutputTobs
50 <<
" nOutputTobs_pass: " << tc.nOutputTobs_pass
51 <<
" nCounts: " << tc.nCounts
52 <<
" nCounts_pass: " << tc.nCounts_pass;
75 CHECK(ports_out.isValid());
78 tcounts.nInputPorts =
fifo->size();
81 ss <<
"eEmTobs from FIFO:\n";
82 for (
const auto&
i : *
fifo) {
92 CHECK(expectations.isValid());
94 const auto& exp_tob_bitstr = expectations->m_expected_tob_bits;
95 auto sz = exp_tob_bitstr.size();
98 std::vector<std::bitset<32>> exp_tobs;
99 exp_tobs.reserve(
sz/8);
101 std::stringstream
ss;
103 for (std::size_t
i = 2;
i <
sz;
i += 8) {
105 << std::string(
"0x" + std::string(std::cbegin(exp_tob_bitstr)+
i,
106 std::cbegin(exp_tob_bitstr)+
i+8));
109 exp_tobs.push_back(std::bitset<32>(
n));
115 auto ntobs = exp_tobs.size();
116 if (ntobs != ports_out->m_O_eEmGenTob.size()) {
118 " port tobs size : " << ports_out->m_O_eEmGenTob.size());
119 return StatusCode::FAILURE;
128 auto fnd_tobs = ports_out->m_O_eEmGenTob;
134 auto ss = std::stringstream();
135 for (;
idx != fnd_tobs.size(); ++
idx) {
138 const auto& f_tob = fnd_tobs[
idx];
139 bool pass{(f_tob->as_bits().to_ulong() == exp_tobs[
idx].to_ulong())};
140 ss <<
'\n' <<
idx <<
" found " << f_tob->as_bits() <<
' '
141 << std::hex << f_tob->as_bits().to_ulong()
142 <<
" expected " << exp_tobs[
idx] <<
' '
143 << exp_tobs[
idx].to_ulong()
144 <<
' ' << std::boolalpha
147 tcounts.nOutputTobs += 1;
148 if (pass) {tcounts.nOutputTobs_pass +=1;}
155 const auto& mult_bits = ports_out-> m_O_Multiplicity;
157 auto found = mult_bits->to_string();
158 auto exp_str =
hexStrToBinStr((*expectations).m_expected_multiplicity_bits);
164 if (
found == exp_str) {
165 tcounts.nCounts_pass +=1;
169 if (!tcounts.success()) {
171 return StatusCode::FAILURE;
176 return StatusCode::SUCCESS;
182 std::stringstream
ss;
183 ss <<
"eEmSortSelectCountContainerComparator.name: " <<
name() <<
'\n'