1- // / \file TestBarAcessor .cxx
2- // / \brief Tests for BarAccessor
1+ // / \file TestCruDataFormat .cxx
2+ // / \brief Tests for CruDataFormat
33// /
44// / \author Pascal Boeschoten ([email protected] )55
6- #define BOOST_TEST_MODULE RORC_TestBarAccessor
6+ #define BOOST_TEST_MODULE RORC_TestCruDataFormat
77#define BOOST_TEST_MAIN
88#define BOOST_TEST_DYN_LINK
99#include < boost/test/unit_test.hpp>
10- #include < assert.h>
11- #include " ReadoutCard/BarInterface.h"
12- #include " Cru/BarAccessor.h"
10+ #include " Cru/DataFormat.h"
1311
1412using namespace AliceO2 ::roc;
13+ using namespace Cru ::DataFormat;
1514
16- BOOST_AUTO_TEST_CASE (TestFirmwareFeatures)
15+ static const std::vector<uint32_t > link18Test1 = {
16+ 0xabcd , 0x0 , 0x212d , 0xead01001 , 0x0 , 0x0 , 0xda1e5afe , 0x0 ,
17+ 0x0 , 0x0 , 0x111caf , 0xebeef102 , 0x0 , 0x0 , 0x12345 , 0x67810000 ,
18+ };
19+
20+ static const std::vector<uint32_t > link18Test2 = {
21+ 0x85 , 0x0 , 0x212d , 0xead01001 , 0x0 , 0x0 , 0xda1e5afe , 0x3fb ,
22+ 0x0 , 0x0 , 0x111caf , 0xebeefbb7 , 0x0 , 0x0 , 0x12345 , 0x67810000 ,
23+ };
24+
25+ static const std::vector<uint32_t > link21Test1 = {
26+ 0x0 , 0x0 , 0x215d , 0xead01001 , 0x0 , 0x0 , 0xda1e5afe , 0x0 ,
27+ 0x0 , 0x0 , 0x111caf , 0xebeef405 , 0x0 , 0x0 , 0x12345 , 0x67810000 ,
28+ };
29+
30+ BOOST_AUTO_TEST_CASE (TestGetLinkId)
1731{
18- {
19- // Integrated firmware should have everything
20- FirmwareFeatures f = Cru::BarAccessor::convertToFirmwareFeatures (0x40000000 );
21- BOOST_CHECK (!f.standalone );
22- BOOST_CHECK (f.serial );
23- BOOST_CHECK (f.dataSelection );
24- BOOST_CHECK (f.temperature );
25- BOOST_CHECK (f.firmwareInfo );
26- }
27- {
28- // Standalone with everything enabled
29- FirmwareFeatures f = Cru::BarAccessor::convertToFirmwareFeatures (0x40005AFE );
30- BOOST_CHECK (f.standalone );
31- BOOST_CHECK (f.serial );
32- BOOST_CHECK (f.dataSelection );
33- BOOST_CHECK (f.temperature );
34- BOOST_CHECK (f.firmwareInfo );
35- }
36- {
37- // Standalone with everything disabled
38- FirmwareFeatures f = Cru::BarAccessor::convertToFirmwareFeatures (0x40005AFE + (0b1111 << 16 ));
39- BOOST_CHECK (f.standalone );
40- BOOST_CHECK (!f.serial );
41- BOOST_CHECK (!f.dataSelection );
42- BOOST_CHECK (!f.temperature );
43- BOOST_CHECK (!f.firmwareInfo );
44- }
45- {
46- // Standalone individual features disabled
47- BOOST_CHECK (!Cru::BarAccessor::convertToFirmwareFeatures (0x40005AFE + (1 << 16 )).dataSelection );
48- BOOST_CHECK (!Cru::BarAccessor::convertToFirmwareFeatures (0x40005AFE + (1 << 17 )).temperature );
49- BOOST_CHECK (!Cru::BarAccessor::convertToFirmwareFeatures (0x40005AFE + (1 << 18 )).serial );
50- BOOST_CHECK (!Cru::BarAccessor::convertToFirmwareFeatures (0x40005AFE + (1 << 19 )).firmwareInfo );
51- }
32+ BOOST_CHECK_EQUAL (getLinkId (reinterpret_cast <const char *>(link18Test1.data ())), 18 );
33+ BOOST_CHECK_EQUAL (getLinkId (reinterpret_cast <const char *>(link18Test2.data ())), 18 );
34+ BOOST_CHECK_EQUAL (getLinkId (reinterpret_cast <const char *>(link21Test1.data ())), 21 );
5235}
5336
54- BOOST_AUTO_TEST_CASE (TestDataGeneratorConfiguration )
37+ BOOST_AUTO_TEST_CASE (TestGetEventSize )
5538{
56- {
57- uint32_t bits = 0 ;
58- Cru::BarAccessor::setDataGeneratorEnableBits (bits, true );
59- BOOST_CHECK (bits == 0x1 );
60- Cru::BarAccessor::setDataGeneratorEnableBits (bits, false );
61- BOOST_CHECK (bits == 0x0 );
62- }
63- {
64- uint32_t bits = 0 ;
65- Cru::BarAccessor::setDataGeneratorRandomSizeBits (bits, true );
66- BOOST_CHECK (bits == (1 << 16 ));
67- Cru::BarAccessor::setDataGeneratorRandomSizeBits (bits, false );
68- BOOST_CHECK (bits != (1 << 16 ));
69- }
70- {
71- uint32_t bits = 0 ;
72- Cru::BarAccessor::setDataGeneratorEnableBits (bits, true );
73- BOOST_CHECK (bits == 0x1 );
74- Cru::BarAccessor::setDataGeneratorPatternBits (bits, GeneratorPattern::Incremental);
75- BOOST_CHECK (bits == 0x3 );
76- Cru::BarAccessor::setDataGeneratorSizeBits (bits, 8 *1024 );
77- BOOST_CHECK (bits == 0xff03 );
78- }
79- {
80- uint32_t bits = 0 ;
81- Cru::BarAccessor::setDataGeneratorEnableBits (bits, true );
82- Cru::BarAccessor::setDataGeneratorPatternBits (bits, GeneratorPattern::Incremental);
83- Cru::BarAccessor::setDataGeneratorSizeBits (bits, 32 );
84- BOOST_CHECK (bits == 0x0003 );
85- }
86- {
87- uint32_t bits = 0 ;
88- // Too high value
89- BOOST_CHECK_THROW (Cru::BarAccessor::setDataGeneratorSizeBits (bits, 8 *1024 + 1 ), std::exception);
90- // Not a multiple of 256 bits
91- BOOST_CHECK_THROW (Cru::BarAccessor::setDataGeneratorSizeBits (bits, 257 ), std::exception);
92- }
39+ BOOST_CHECK_EQUAL (getEventSize (reinterpret_cast <const char *>(link18Test1.data ())), 256 );
40+ BOOST_CHECK_EQUAL (getEventSize (reinterpret_cast <const char *>(link18Test2.data ())), 256 );
41+ BOOST_CHECK_EQUAL (getEventSize (reinterpret_cast <const char *>(link21Test1.data ())), 256 );
9342}
0 commit comments