Line data Source code
1 : /**
2 : * @file ListWrapper_test.cxx ListWrapper 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 "../src/ListWrapper.hpp"
10 :
11 : #include "serialization/Serialization.hpp"
12 :
13 : #define BOOST_TEST_MODULE ListWrapper_test // NOLINT
14 :
15 : #include "boost/test/unit_test.hpp"
16 :
17 : #include <string>
18 : #include <vector>
19 :
20 : using namespace dunedaq::listrev;
21 :
22 : BOOST_AUTO_TEST_SUITE(ListWrapper_test)
23 :
24 2 : BOOST_AUTO_TEST_CASE(BasicTests)
25 : {
26 1 : IntList intList;
27 1 : BOOST_REQUIRE_EQUAL(intList.list.size(), 0);
28 1 : ReversedList::Data reversedListData;
29 1 : BOOST_REQUIRE_EQUAL(reversedListData.original.list.size(), 0);
30 1 : BOOST_REQUIRE_EQUAL(reversedListData.reversed.list.size(), 0);
31 1 : ReversedList reversedList;
32 1 : BOOST_REQUIRE_EQUAL(reversedList.lists.size(), 0);
33 1 : CreateList createList;
34 1 : BOOST_REQUIRE_EQUAL(createList.list_size, 0);
35 0 : RequestList requestList;
36 0 : BOOST_REQUIRE_EQUAL(requestList.destination, "");
37 3 : }
38 :
39 2 : BOOST_AUTO_TEST_CASE(IntList_SerDes_MsgPack)
40 : {
41 1 : BOOST_REQUIRE(dunedaq::serialization::is_serializable<IntList>::value);
42 1 : BOOST_REQUIRE_EQUAL(dunedaq::datatype_to_string<IntList>(), "IntList");
43 :
44 1 : IntList intList;
45 1 : intList.list_id = 1;
46 1 : intList.generator_id = 2;
47 1 : intList.list = { 3, 4, 5, 6, 7 };
48 :
49 1 : IntList anotherList(8, 9, { 10, 11, 12 });
50 :
51 1 : auto bytes = dunedaq::serialization::serialize(intList, dunedaq::serialization::kMsgPack);
52 3 : TLOG(TLVL_INFO) << "MsgPack message size: " << bytes.size() << " bytes";
53 1 : IntList intList_deserialized = dunedaq::serialization::deserialize<IntList>(bytes);
54 :
55 1 : BOOST_REQUIRE_EQUAL(intList.list_id, intList_deserialized.list_id);
56 1 : BOOST_REQUIRE_EQUAL(intList.generator_id, intList_deserialized.generator_id);
57 1 : BOOST_REQUIRE_EQUAL(intList.list.size(), intList_deserialized.list.size());
58 1 : BOOST_REQUIRE_EQUAL(intList.list[0], intList_deserialized.list[0]);
59 :
60 1 : auto more_bytes = dunedaq::serialization::serialize(anotherList, dunedaq::serialization::kMsgPack);
61 3 : TLOG(TLVL_INFO) << "MsgPack message size: " << more_bytes.size() << " bytes";
62 1 : intList_deserialized = dunedaq::serialization::deserialize<IntList>(more_bytes);
63 :
64 1 : BOOST_REQUIRE_EQUAL(anotherList.list_id, intList_deserialized.list_id);
65 1 : BOOST_REQUIRE_EQUAL(anotherList.generator_id, intList_deserialized.generator_id);
66 1 : BOOST_REQUIRE_EQUAL(anotherList.list.size(), intList_deserialized.list.size());
67 1 : BOOST_REQUIRE_EQUAL(anotherList.list[0], intList_deserialized.list[0]);
68 1 : }
69 :
70 2 : BOOST_AUTO_TEST_CASE(ReversedListData_SerDes_MsgPack)
71 : {
72 1 : BOOST_REQUIRE(dunedaq::serialization::is_serializable<ReversedList::Data>::value);
73 1 : BOOST_REQUIRE_EQUAL(dunedaq::datatype_to_string<ReversedList::Data>(), "ReversedListData");
74 :
75 1 : IntList intList(1, 2, { 3, 4, 5, 6 });
76 1 : IntList reversed(1, 3, { 6, 5, 4, 3 });
77 1 : ReversedList::Data data;
78 1 : data.original = intList;
79 1 : data.reversed = reversed;
80 :
81 1 : auto bytes = dunedaq::serialization::serialize(data, dunedaq::serialization::kMsgPack);
82 3 : TLOG(TLVL_INFO) << "MsgPack message size: " << bytes.size() << " bytes";
83 1 : ReversedList::Data data_deserialized = dunedaq::serialization::deserialize<ReversedList::Data>(bytes);
84 :
85 1 : BOOST_REQUIRE_EQUAL(intList.list_id, data_deserialized.original.list_id);
86 1 : BOOST_REQUIRE_EQUAL(intList.generator_id, data_deserialized.original.generator_id);
87 1 : BOOST_REQUIRE_EQUAL(intList.list.size(), data_deserialized.original.list.size());
88 1 : BOOST_REQUIRE_EQUAL(intList.list[0], data_deserialized.original.list[0]);
89 :
90 1 : BOOST_REQUIRE_EQUAL(reversed.list_id, data_deserialized.reversed.list_id);
91 1 : BOOST_REQUIRE_EQUAL(reversed.generator_id, data_deserialized.reversed.generator_id);
92 1 : BOOST_REQUIRE_EQUAL(reversed.list.size(), data_deserialized.reversed.list.size());
93 1 : BOOST_REQUIRE_EQUAL(reversed.list[0], data_deserialized.reversed.list[0]);
94 1 : }
95 :
96 2 : BOOST_AUTO_TEST_CASE(ReversedList_SerDes_MsgPack)
97 : {
98 1 : BOOST_REQUIRE(dunedaq::serialization::is_serializable<ReversedList>::value);
99 1 : BOOST_REQUIRE_EQUAL(dunedaq::datatype_to_string<ReversedList>(), "ReversedList");
100 :
101 1 : IntList intList(1, 2, { 3, 4, 5, 6 });
102 1 : IntList reversed(1, 3, { 6, 5, 4, 3 });
103 1 : ReversedList::Data data;
104 1 : data.original = intList;
105 1 : data.reversed = reversed;
106 2 : ReversedList reversedList(1, 3, { data });
107 :
108 1 : auto bytes = dunedaq::serialization::serialize(reversedList, dunedaq::serialization::kMsgPack);
109 3 : TLOG(TLVL_INFO) << "MsgPack message size: " << bytes.size() << " bytes";
110 1 : ReversedList reversedList_deserialized = dunedaq::serialization::deserialize<ReversedList>(bytes);
111 :
112 1 : BOOST_REQUIRE_EQUAL(reversedList.list_id, reversedList_deserialized.list_id);
113 1 : BOOST_REQUIRE_EQUAL(reversedList.reverser_id, reversedList_deserialized.reverser_id);
114 1 : BOOST_REQUIRE_EQUAL(reversedList.lists.size(), reversedList_deserialized.lists.size());
115 :
116 1 : auto data_deserialized = reversedList_deserialized.lists[0];
117 :
118 1 : BOOST_REQUIRE_EQUAL(intList.list_id, data_deserialized.original.list_id);
119 1 : BOOST_REQUIRE_EQUAL(intList.generator_id, data_deserialized.original.generator_id);
120 1 : BOOST_REQUIRE_EQUAL(intList.list.size(), data_deserialized.original.list.size());
121 1 : BOOST_REQUIRE_EQUAL(intList.list[0], data_deserialized.original.list[0]);
122 :
123 1 : BOOST_REQUIRE_EQUAL(reversed.list_id, data_deserialized.reversed.list_id);
124 1 : BOOST_REQUIRE_EQUAL(reversed.generator_id, data_deserialized.reversed.generator_id);
125 1 : BOOST_REQUIRE_EQUAL(reversed.list.size(), data_deserialized.reversed.list.size());
126 1 : BOOST_REQUIRE_EQUAL(reversed.list[0], data_deserialized.reversed.list[0]);
127 2 : }
128 :
129 2 : BOOST_AUTO_TEST_CASE(CreateList_SerDes_MsgPack)
130 : {
131 1 : BOOST_REQUIRE(dunedaq::serialization::is_serializable<CreateList>::value);
132 1 : BOOST_REQUIRE_EQUAL(dunedaq::datatype_to_string<CreateList>(), "CreateList");
133 :
134 1 : CreateList create(2, 100);
135 :
136 1 : auto bytes = dunedaq::serialization::serialize(create, dunedaq::serialization::kMsgPack);
137 3 : TLOG(TLVL_INFO) << "MsgPack message size: " << bytes.size() << " bytes";
138 1 : CreateList create_deserialized = dunedaq::serialization::deserialize<CreateList>(bytes);
139 :
140 1 : BOOST_REQUIRE_EQUAL(create.list_id, create_deserialized.list_id);
141 1 : BOOST_REQUIRE_EQUAL(create.list_size, create_deserialized.list_size);
142 1 : }
143 :
144 2 : BOOST_AUTO_TEST_CASE(RequestList_SerDes_MsgPack)
145 : {
146 1 : BOOST_REQUIRE(dunedaq::serialization::is_serializable<RequestList>::value);
147 1 : BOOST_REQUIRE_EQUAL(dunedaq::datatype_to_string<RequestList>(), "RequestList");
148 :
149 1 : RequestList request(1, "test");
150 :
151 1 : auto bytes = dunedaq::serialization::serialize(request, dunedaq::serialization::kMsgPack);
152 3 : TLOG(TLVL_INFO) << "MsgPack message size: " << bytes.size() << " bytes";
153 1 : RequestList request_deserialized = dunedaq::serialization::deserialize<RequestList>(bytes);
154 :
155 1 : BOOST_REQUIRE_EQUAL(request.list_id, request_deserialized.list_id);
156 1 : BOOST_REQUIRE_EQUAL(request.destination, request_deserialized.destination);
157 1 : }
158 :
159 : BOOST_AUTO_TEST_SUITE_END()
|