Line data Source code
1 : /**
2 : * @file DAPHNEFrame_test.cxx - Comprehensive unit tests for DAPHNEFrame
3 : *
4 : * This is part of the DUNE DAQ Application Framework, copyright 2022.
5 : * Licensing/copyright details are in the COPYING file that you should have
6 : * received with this code.
7 : *
8 : */
9 :
10 : #include "fddetdataformats/DAPHNEFrame.hpp"
11 :
12 : #define BOOST_TEST_MODULE DAPHNEFrame_test // NOLINT
13 :
14 : #include "boost/test/unit_test.hpp"
15 :
16 : #include <algorithm>
17 : #include <random>
18 : #include <vector>
19 :
20 : // NOLINTBEGIN(build/unsigned)
21 :
22 : BOOST_AUTO_TEST_SUITE(DAPHNEFrame_test)
23 :
24 2 : BOOST_AUTO_TEST_CASE(DAPHNEFrame_AllFieldsTest)
25 : {
26 1 : constexpr int n_adcs = 320;
27 :
28 1 : std::random_device rd;
29 1 : std::mt19937 gen(rd());
30 1 : std::uniform_int_distribution<uint16_t> adc_dist(1, (1 << 14) - 1);
31 1 : std::uniform_int_distribution<uint16_t> u10bit(0, 0x3FF);
32 1 : std::uniform_int_distribution<uint16_t> u9bit(0, 0x1FF);
33 1 : std::uniform_int_distribution<uint16_t> u4bit(0, 0xF);
34 1 : std::uniform_int_distribution<uint32_t> u23bit(0, 0x7FFFFF);
35 1 : std::uniform_int_distribution<uint16_t> u14bit(0, 0x3FFF);
36 1 : std::uniform_int_distribution<uint8_t> u1bit(0, 1);
37 :
38 1 : dunedaq::fddetdataformats::DAPHNEFrame frame{};
39 :
40 : // ─── Test ADC Values ──────────────────────────────────────────────
41 1 : std::vector<uint16_t> adcs(n_adcs);
42 321 : std::generate(adcs.begin(), adcs.end(), [&]() { return adc_dist(gen); });
43 :
44 321 : for (int i = 0; i < n_adcs; ++i)
45 320 : frame.set_adc(i, adcs[i]);
46 :
47 1 : frame.set_adc(0, adcs[0]);
48 :
49 321 : for (int i = 0; i < n_adcs; ++i)
50 320 : BOOST_CHECK_EQUAL(frame.get_adc(i), adcs[i]);
51 :
52 :
53 1 : }
54 :
55 : BOOST_AUTO_TEST_SUITE_END()
56 :
57 : // NOLINTEND(build/unsigned)
|