Line data Source code
1 : /**
2 : * @file FragmentHeader_test.cxx FragmentHeader class Unit Tests
3 : *
4 : * This is part of the DUNE DAQ Application Framework, copyright 2020.
5 : * Licensing/copyright details are in the COPYING file that you should have
6 : * received with this code.
7 : */
8 :
9 : #include "daqdataformats/FragmentHeader.hpp"
10 :
11 : /**
12 : * @brief Name of this test module
13 : */
14 : #define BOOST_TEST_MODULE FragmentHeader_test // NOLINT
15 :
16 : #include "boost/test/unit_test.hpp"
17 :
18 : #include <string>
19 : #include <vector>
20 :
21 : using namespace dunedaq::daqdataformats;
22 :
23 : BOOST_AUTO_TEST_SUITE(FragmentHeader_test)
24 :
25 2 : BOOST_AUTO_TEST_CASE(FragmentTypeConversion)
26 : {
27 1 : BOOST_REQUIRE_EQUAL(static_cast<fragment_type_t>(string_to_fragment_type("WIB")),
28 : static_cast<fragment_type_t>(FragmentType::kWIB));
29 1 : BOOST_REQUIRE_EQUAL(fragment_type_to_string(FragmentType::kWIB), "WIB");
30 :
31 1 : auto type_map = get_fragment_type_names();
32 : // sanity check
33 21 : for (auto& type_pair : type_map) {
34 20 : BOOST_TEST_MESSAGE("Fragment type" << int(type_pair.first) << " " << type_pair.second
35 : << " with converters: " << int(string_to_fragment_type(type_pair.second)) << " "
36 : << fragment_type_to_string(type_pair.first));
37 20 : BOOST_REQUIRE_EQUAL(static_cast<fragment_type_t>(string_to_fragment_type(type_pair.second)),
38 : static_cast<fragment_type_t>(type_pair.first));
39 20 : BOOST_REQUIRE_EQUAL(fragment_type_to_string(type_pair.first), type_pair.second);
40 : }
41 :
42 1 : BOOST_REQUIRE_EQUAL(static_cast<fragment_type_t>(string_to_fragment_type("thisIsABadFragmentType")),
43 : static_cast<fragment_type_t>(FragmentType::kUnknown));
44 1 : BOOST_REQUIRE_EQUAL(fragment_type_to_string(static_cast<FragmentType>(-10)), "Unknown");
45 1 : }
46 :
47 : /**
48 : * @brief Test that FragmentHeader::operator<< functions as expected
49 : */
50 2 : BOOST_AUTO_TEST_CASE(StreamOperator)
51 : {
52 1 : FragmentHeader header;
53 1 : header.size = sizeof(FragmentHeader) + 4;
54 1 : header.trigger_number = 1;
55 1 : header.trigger_timestamp = 2;
56 1 : header.run_number = 3;
57 1 : header.sequence_number = 4;
58 1 : header.detector_id = 1;
59 1 : header.element_id = { SourceID::Subsystem::kTrigger, 0x7766 };
60 :
61 1 : std::ostringstream ostr;
62 1 : ostr << header;
63 1 : std::string output = ostr.str();
64 1 : BOOST_TEST_MESSAGE("Stream operator: " << output);
65 :
66 1 : BOOST_REQUIRE(!output.empty());
67 1 : auto pos = output.find("trigger_number: 1,");
68 1 : BOOST_REQUIRE(pos != std::string::npos);
69 1 : pos = output.find("trigger_timestamp: 2,");
70 1 : BOOST_REQUIRE(pos != std::string::npos);
71 1 : pos = output.find("run_number: 3,");
72 1 : BOOST_REQUIRE(pos != std::string::npos);
73 :
74 : // std::istringstream iss(ostr.str());
75 : // FragmentHeader header_from_stream;
76 : // iss >> header_from_stream;
77 : // BOOST_REQUIRE_EQUAL(header_from_stream.run_number, header.run_number);
78 : // BOOST_REQUIRE_EQUAL(header_from_stream.trigger_number, header.trigger_number);
79 : // BOOST_REQUIRE_EQUAL(header_from_stream.trigger_timestamp, header.trigger_timestamp);
80 : // BOOST_REQUIRE_EQUAL(header_from_stream.sequence_number, header.sequence_number);
81 : // BOOST_REQUIRE_EQUAL(header_from_stream.detector_id, header.detector_id);
82 : // BOOST_REQUIRE_EQUAL(header_from_stream.element_id, header.element_id);
83 1 : }
84 :
85 : BOOST_AUTO_TEST_SUITE_END()
|