1#include <catch2/catch_test_macros.hpp>
3#include "Framework/Configure/Parameters.h"
6#include "Framework/RunHeader.h"
7#include "Packing/RawDataFile/EventPacket.h"
8#include "Packing/RawDataFile/File.h"
9#include "Packing/RawDataFile/SubsystemPacket.h"
10#include "Packing/Utility/Reader.h"
11#include "Packing/Utility/Writer.h"
20TEST_CASE(
"BinaryIO",
"[Packing][functionality]") {
21 SECTION(
"Unformatted Data") {
22 std::string test_file{
"test.raw"};
25 std::vector<uint16_t> test_vec = {0xFFFF, 0x00FF, 0xFF00, 0xF0F0};
26 uint64_t test_wide = 0xFFFF00FFFF00F0F0;
32 CHECK(w << test_wide);
38 std::vector<uint16_t> read_vec;
39 uint64_t read_wide, dummy;
40 CHECK(r.read(read_vec, 4));
41 CHECK(r >> read_wide);
42 CHECK_FALSE(r >> dummy);
44 CHECK(read_vec == test_vec);
45 CHECK(read_wide == test_wide);
49 SECTION(
"Subsystem Packet") {
50 std::string test_file{
"subsystem_packet_test.raw"};
54 std::vector<uint32_t> data = {0xAAAAAAAA, 0xBBBBBBBB, 0xCCCCCCCC,
55 0xDDDDDDDD, 0xDEDEDEDE, 0xFEDCBA98};
71 CHECK(sp.
data() == data);
75 SECTION(
"Event Packet") {
76 std::string test_file{
"event_packet_test.raw"};
79 std::map<uint16_t, std::vector<uint32_t>> unwrapped_data = {
81 {0xAAAAAAAA, 0xBBBBBBBB, 0xCCCCCCCC, 0xDDDDDDDD, 0xDEDEDEDE,
83 {0xACDC, {0xFEBBBBEF, 0x00112233}}};
98 CHECK(ep.id() == event);
100 for (
auto& subsys : ep.data()) {
101 REQUIRE(unwrapped_data.find(subsys.id()) != unwrapped_data.end());
102 CHECK(unwrapped_data.at(subsys.id()) == subsys.data());
107 SECTION(
"Entire File") {
108 std::string ecal_object_name(
"ecalDummyRaw"),
109 hcal_object_name(
"hcalDummyRaw"),
110 tracker_object_name(
"trackerDummyRaw"),
111 triggerpad_object_name(
"triggerpadDummyRaw");
113 ps.
add<std::string>(
"filename",
"file_test.raw");
114 ps.
add(
"ecal_object_name", ecal_object_name);
115 ps.
add(
"hcal_object_name", hcal_object_name);
116 ps.
add(
"tracker_object_name", tracker_object_name);
117 ps.
add(
"triggerpad_object_name", triggerpad_object_name);
118 ps.
add<std::string>(
"pass_name",
"");
119 ps.
add(
"skip_unavailable",
true);
120 ps.
add(
"verify_checksum",
false);
122 std::vector<uint32_t> data = {0xAAAAAAAA, 0xBBBBBBBB, 0xCCCCCCCC,
123 0xDDDDDDDD, 0xDEDEDEDE, 0xFEDCBA98};
129 ps.addParameter(
"is_output",
true);
133 f.writeRunHeader(rh);
138 for (
int i{0}; i < n_events; i++) {
139 event.getEventHeader().setEventNumber(i_event + i);
141 event.add(ecal_object_name, data);
142 event.add(hcal_object_name, data);
143 event.add(triggerpad_object_name, data);
145 REQUIRE(f.nextEvent());
148 event.onEndOfEvent();
155 std::cout <<
"starting Read" << std::endl;
156 ps.addParameter(
"is_output",
false);
160 f.writeRunHeader(rh);
161 CHECK(rh.getIntParameter(
"raw_run") == run);
166 for (
int i{0}; i < n_events; i++) {
167 event.getEventHeader().setEventNumber(i);
169 REQUIRE(f.nextEvent());
171 CHECK(event.getEventNumber() == i_event + i);
172 CHECK(data == event.getCollection<uint32_t>(ecal_object_name,
""));
173 CHECK(data == event.getCollection<uint32_t>(hcal_object_name,
""));
175 event.getCollection<uint32_t>(triggerpad_object_name,
""));
176 CHECK_FALSE(event.exists(tracker_object_name,
""));
179 event.onEndOfEvent();
182 REQUIRE_FALSE(f.nextEvent());
Class implementing an event buffer system for storing event data.
Implements an event buffer system for storing event data.
Class encapsulating parameters for configuring a processor.
void add(const std::string &name, const T &value)
Add a parameter to the parameter list.
The raw data file object.
SubsystemPacket structure.
std::vector< uint32_t > & data()
Get data.
Parameters run(const std::string &root_object, const std::string &pythonScript, char *args[], int nargs)
run the python script and extract the parameters