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 1 : RequestList requestList;
36 1 : BOOST_REQUIRE_EQUAL(requestList.destination, "");
37 1 : }
38 :
39 2 : BOOST_AUTO_TEST_CASE(IntList_SerDes_MsgPack) {
40 1 : BOOST_REQUIRE(dunedaq::serialization::is_serializable<IntList>::value);
41 1 : BOOST_REQUIRE_EQUAL(dunedaq::datatype_to_string<IntList>(), "IntList");
42 :
43 1 : IntList intList;
44 1 : intList.list_id = 1;
45 1 : intList.generator_id = 2;
46 1 : intList.list = { 3, 4, 5, 6, 7 };
47 :
48 1 : IntList anotherList(8, 9, { 10, 11, 12 });
49 :
50 1 : auto bytes = dunedaq::serialization::serialize(intList, dunedaq::serialization::kMsgPack);
51 3 : TLOG(TLVL_INFO) << "MsgPack message size: " << bytes.size() << " bytes";
52 1 : IntList intList_deserialized = dunedaq::serialization::deserialize<IntList>(bytes);
53 :
54 1 : BOOST_REQUIRE_EQUAL(intList.list_id, intList_deserialized.list_id);
55 1 : BOOST_REQUIRE_EQUAL(intList.generator_id, intList_deserialized.generator_id);
56 1 : BOOST_REQUIRE_EQUAL(intList.list.size(), intList_deserialized.list.size());
57 1 : BOOST_REQUIRE_EQUAL(intList.list[0], intList_deserialized.list[0]);
58 :
59 1 : auto more_bytes = dunedaq::serialization::serialize(anotherList, dunedaq::serialization::kMsgPack);
60 3 : TLOG(TLVL_INFO) << "MsgPack message size: " << more_bytes.size() << " bytes";
61 1 : intList_deserialized = dunedaq::serialization::deserialize<IntList>(more_bytes);
62 :
63 1 : BOOST_REQUIRE_EQUAL(anotherList.list_id, intList_deserialized.list_id);
64 1 : BOOST_REQUIRE_EQUAL(anotherList.generator_id, intList_deserialized.generator_id);
65 1 : BOOST_REQUIRE_EQUAL(anotherList.list.size(), intList_deserialized.list.size());
66 1 : BOOST_REQUIRE_EQUAL(anotherList.list[0], intList_deserialized.list[0]);
67 1 : }
68 :
69 2 : BOOST_AUTO_TEST_CASE(ReversedListData_SerDes_MsgPack)
70 : {
71 1 : BOOST_REQUIRE(dunedaq::serialization::is_serializable<ReversedList::Data>::value);
72 1 : BOOST_REQUIRE_EQUAL(dunedaq::datatype_to_string<ReversedList::Data>(), "ReversedListData");
73 :
74 1 : IntList intList(1, 2, {3,4,5,6});
75 1 : IntList reversed(1, 3, { 6, 5, 4, 3 });
76 1 : ReversedList::Data data;
77 1 : data.original = intList;
78 1 : data.reversed = reversed;
79 :
80 1 : auto bytes = dunedaq::serialization::serialize(data, dunedaq::serialization::kMsgPack);
81 3 : TLOG(TLVL_INFO) << "MsgPack message size: " << bytes.size() << " bytes";
82 1 : ReversedList::Data data_deserialized = dunedaq::serialization::deserialize<ReversedList::Data>(bytes);
83 :
84 1 : BOOST_REQUIRE_EQUAL(intList.list_id, data_deserialized.original.list_id);
85 1 : BOOST_REQUIRE_EQUAL(intList.generator_id, data_deserialized.original.generator_id);
86 1 : BOOST_REQUIRE_EQUAL(intList.list.size(), data_deserialized.original.list.size());
87 1 : BOOST_REQUIRE_EQUAL(intList.list[0], data_deserialized.original.list[0]);
88 :
89 1 : BOOST_REQUIRE_EQUAL(reversed.list_id, data_deserialized.reversed.list_id);
90 1 : BOOST_REQUIRE_EQUAL(reversed.generator_id, data_deserialized.reversed.generator_id);
91 1 : BOOST_REQUIRE_EQUAL(reversed.list.size(), data_deserialized.reversed.list.size());
92 1 : BOOST_REQUIRE_EQUAL(reversed.list[0], data_deserialized.reversed.list[0]);
93 1 : }
94 :
95 2 : BOOST_AUTO_TEST_CASE(ReversedList_SerDes_MsgPack)
96 : {
97 1 : BOOST_REQUIRE(dunedaq::serialization::is_serializable<ReversedList>::value);
98 1 : BOOST_REQUIRE_EQUAL(dunedaq::datatype_to_string<ReversedList>(), "ReversedList");
99 :
100 1 : IntList intList(1, 2, { 3, 4, 5, 6 });
101 1 : IntList reversed(1, 3, { 6, 5, 4, 3 });
102 1 : ReversedList::Data data;
103 1 : data.original = intList;
104 1 : data.reversed = reversed;
105 2 : ReversedList reversedList(1, 3, { data });
106 :
107 1 : auto bytes = dunedaq::serialization::serialize(reversedList, dunedaq::serialization::kMsgPack);
108 3 : TLOG(TLVL_INFO) << "MsgPack message size: " << bytes.size() << " bytes";
109 1 : ReversedList reversedList_deserialized = dunedaq::serialization::deserialize<ReversedList>(bytes);
110 :
111 1 : BOOST_REQUIRE_EQUAL(reversedList.list_id, reversedList_deserialized.list_id);
112 1 : BOOST_REQUIRE_EQUAL(reversedList.reverser_id, reversedList_deserialized.reverser_id);
113 1 : BOOST_REQUIRE_EQUAL(reversedList.lists.size(), reversedList_deserialized.lists.size());
114 :
115 1 : auto data_deserialized = reversedList_deserialized.lists[0];
116 :
117 1 : BOOST_REQUIRE_EQUAL(intList.list_id, data_deserialized.original.list_id);
118 1 : BOOST_REQUIRE_EQUAL(intList.generator_id, data_deserialized.original.generator_id);
119 1 : BOOST_REQUIRE_EQUAL(intList.list.size(), data_deserialized.original.list.size());
120 1 : BOOST_REQUIRE_EQUAL(intList.list[0], data_deserialized.original.list[0]);
121 :
122 1 : BOOST_REQUIRE_EQUAL(reversed.list_id, data_deserialized.reversed.list_id);
123 1 : BOOST_REQUIRE_EQUAL(reversed.generator_id, data_deserialized.reversed.generator_id);
124 1 : BOOST_REQUIRE_EQUAL(reversed.list.size(), data_deserialized.reversed.list.size());
125 1 : BOOST_REQUIRE_EQUAL(reversed.list[0], data_deserialized.reversed.list[0]);
126 2 : }
127 :
128 2 : BOOST_AUTO_TEST_CASE(CreateList_SerDes_MsgPack)
129 : {
130 1 : BOOST_REQUIRE(dunedaq::serialization::is_serializable<CreateList>::value);
131 1 : BOOST_REQUIRE_EQUAL(dunedaq::datatype_to_string<CreateList>(), "CreateList");
132 :
133 1 : CreateList create(2, 100);
134 :
135 1 : auto bytes = dunedaq::serialization::serialize(create, dunedaq::serialization::kMsgPack);
136 3 : TLOG(TLVL_INFO) << "MsgPack message size: " << bytes.size() << " bytes";
137 1 : CreateList create_deserialized = dunedaq::serialization::deserialize<CreateList>(bytes);
138 :
139 1 : BOOST_REQUIRE_EQUAL(create.list_id, create_deserialized.list_id);
140 1 : BOOST_REQUIRE_EQUAL(create.list_size, create_deserialized.list_size);
141 1 : }
142 :
143 2 : BOOST_AUTO_TEST_CASE(RequestList_SerDes_MsgPack)
144 : {
145 1 : BOOST_REQUIRE(dunedaq::serialization::is_serializable<RequestList>::value);
146 1 : BOOST_REQUIRE_EQUAL(dunedaq::datatype_to_string<RequestList>(), "RequestList");
147 :
148 1 : RequestList request(1, "test");
149 :
150 1 : auto bytes = dunedaq::serialization::serialize(request, dunedaq::serialization::kMsgPack);
151 3 : TLOG(TLVL_INFO) << "MsgPack message size: " << bytes.size() << " bytes";
152 1 : RequestList request_deserialized = dunedaq::serialization::deserialize<RequestList>(bytes);
153 :
154 1 : BOOST_REQUIRE_EQUAL(request.list_id, request_deserialized.list_id);
155 1 : BOOST_REQUIRE_EQUAL(request.destination, request_deserialized.destination);
156 1 : }
157 :
158 : BOOST_AUTO_TEST_SUITE_END()
|