32 BOOST_TEST(regs.hasRegister(
"/SomeTopLevelRegister"));
35 auto reg = regs.getBackendRegister(
"/SomeTopLevelRegister");
36 BOOST_TEST(reg.pathName ==
"/SomeTopLevelRegister");
37 BOOST_TEST(reg.nElements == 1);
38 BOOST_TEST(reg.elementPitchBits == 4 * 8);
39 BOOST_TEST(reg.bar == 0);
40 BOOST_TEST(reg.address == 32);
41 BOOST_CHECK(reg.registerAccess == NumericAddressedRegisterInfo::Access::READ_WRITE);
42 BOOST_REQUIRE(reg.channels.size() == 1);
43 BOOST_TEST(reg.channels[0].bitOffset == 0);
44 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
45 BOOST_TEST(reg.channels[0].width == 32);
46 BOOST_TEST(reg.channels[0].nFractionalBits == 8);
47 BOOST_TEST(reg.channels[0].signedFlag ==
true);
50 auto reg = regs.getBackendRegister(
"BSP.VERSION");
51 BOOST_TEST(reg.pathName ==
"/BSP/VERSION");
52 BOOST_TEST(reg.nElements == 1);
53 BOOST_TEST(reg.elementPitchBits == 4 * 8);
54 BOOST_TEST(reg.bar == 0);
55 BOOST_TEST(reg.address == 4);
56 BOOST_CHECK(reg.registerAccess == NumericAddressedRegisterInfo::Access::READ_ONLY);
57 BOOST_REQUIRE(reg.channels.size() == 1);
58 BOOST_TEST(reg.channels[0].bitOffset == 0);
59 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
60 BOOST_TEST(reg.channels[0].width == 32);
61 BOOST_TEST(reg.channels[0].nFractionalBits == 0);
62 BOOST_TEST(reg.channels[0].signedFlag ==
false);
65 auto reg = regs.getBackendRegister(
"BSP");
66 BOOST_TEST(reg.pathName ==
"/BSP");
67 BOOST_TEST(reg.nElements == 19201);
68 BOOST_TEST(reg.elementPitchBits == 4 * 8);
69 BOOST_TEST(reg.bar == 0);
70 BOOST_TEST(reg.address == 0);
71 BOOST_CHECK(reg.registerAccess == NumericAddressedRegisterInfo::Access::READ_WRITE);
72 BOOST_REQUIRE(reg.channels.size() == 1);
73 BOOST_TEST(reg.channels[0].bitOffset == 0);
74 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
75 BOOST_TEST(reg.channels[0].width == 32);
76 BOOST_TEST(reg.channels[0].nFractionalBits == 0);
77 BOOST_TEST(reg.channels[0].signedFlag ==
false);
80 auto reg = regs.getBackendRegister(
"APP.STATUS");
81 BOOST_TEST(reg.pathName ==
"/APP/STATUS");
82 BOOST_TEST(reg.nElements == 1);
83 BOOST_TEST(reg.elementPitchBits == 4 * 8);
84 BOOST_TEST(reg.bar == 2);
85 BOOST_TEST(reg.address == 0x8000);
86 BOOST_CHECK(reg.registerAccess == NumericAddressedRegisterInfo::Access::READ_ONLY);
87 BOOST_REQUIRE(reg.channels.size() == 1);
88 BOOST_TEST(reg.channels[0].bitOffset == 0);
89 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
90 BOOST_TEST(reg.channels[0].width == 32);
91 BOOST_TEST(reg.channels[0].nFractionalBits == 0);
92 BOOST_TEST(reg.channels[0].signedFlag ==
false);
95 auto reg = regs.getBackendRegister(
"APP.SomeTable");
96 BOOST_TEST(reg.pathName ==
"/APP/SomeTable");
97 BOOST_TEST(reg.nElements == 16384);
98 BOOST_TEST(reg.elementPitchBits == 2 * 8);
99 BOOST_TEST(reg.bar == 0);
100 BOOST_TEST(reg.address == 2048);
101 BOOST_CHECK(reg.registerAccess == NumericAddressedRegisterInfo::Access::WRITE_ONLY);
102 BOOST_REQUIRE(reg.channels.size() == 1);
103 BOOST_TEST(reg.channels[0].bitOffset == 0);
104 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
105 BOOST_TEST(reg.channels[0].width == 14);
106 BOOST_TEST(reg.channels[0].nFractionalBits == 10);
107 BOOST_TEST(reg.channels[0].signedFlag ==
true);
110 auto reg = regs.getBackendRegister(
"DAQ.CTRL");
111 BOOST_TEST(reg.pathName ==
"/DAQ/CTRL");
112 BOOST_TEST(reg.nElements == 16384);
113 BOOST_TEST(reg.elementPitchBits == 64 * 8);
114 BOOST_TEST(reg.bar == 13);
115 BOOST_TEST(reg.address == 0x80000000);
116 BOOST_CHECK(reg.registerAccess == NumericAddressedRegisterInfo::Access::INTERRUPT);
117 BOOST_TEST(reg.interruptId == std::vector<size_t>({3, 0, 1}), boost::test_tools::per_element());
119 BOOST_REQUIRE(reg.channels.size() == 5);
121 BOOST_TEST(reg.channels[0].bitOffset == 0);
122 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
123 BOOST_TEST(reg.channels[0].width == 16);
124 BOOST_TEST(reg.channels[0].nFractionalBits == -2);
125 BOOST_TEST(reg.channels[0].signedFlag ==
true);
127 BOOST_TEST(reg.channels[1].bitOffset == 2 * 8);
128 BOOST_CHECK(reg.channels[1].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
129 BOOST_TEST(reg.channels[1].width == 16);
130 BOOST_TEST(reg.channels[1].nFractionalBits == -2);
131 BOOST_TEST(reg.channels[1].signedFlag ==
true);
133 BOOST_TEST(reg.channels[2].bitOffset == 4 * 8);
134 BOOST_CHECK(reg.channels[2].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
135 BOOST_TEST(reg.channels[2].width == 32);
136 BOOST_TEST(reg.channels[2].nFractionalBits == 0);
137 BOOST_TEST(reg.channels[2].signedFlag ==
false);
140 auto reg = regs.getBackendRegister(
"DAQ.FD");
141 BOOST_TEST(reg.pathName ==
"/DAQ/FD");
142 BOOST_TEST(reg.nElements == 16384);
143 BOOST_TEST(reg.elementPitchBits == 64 * 8);
144 BOOST_TEST(reg.bar == 13);
145 BOOST_TEST(reg.address == 0x81000000);
146 BOOST_CHECK(reg.registerAccess == NumericAddressedRegisterInfo::Access::INTERRUPT);
147 BOOST_TEST(reg.interruptId == std::vector<size_t>({0}), boost::test_tools::per_element());
149 BOOST_REQUIRE(reg.channels.size() == 2);
151 BOOST_TEST(reg.channels[0].bitOffset == 0);
152 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
153 BOOST_TEST(reg.channels[0].width == 16);
154 BOOST_TEST(reg.channels[0].nFractionalBits == -2);
155 BOOST_TEST(reg.channels[0].signedFlag ==
true);
157 BOOST_TEST(reg.channels[1].bitOffset == 2 * 8);
158 BOOST_CHECK(reg.channels[1].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
159 BOOST_TEST(reg.channels[1].width == 16);
160 BOOST_TEST(reg.channels[1].nFractionalBits == -2);
161 BOOST_TEST(reg.channels[1].signedFlag ==
true);
164 auto reg = regs.getBackendRegister(
"DAQ.DOUBLE_BUF.ENA");
165 BOOST_TEST(reg.pathName ==
"/DAQ/DOUBLE_BUF/ENA");
166 BOOST_TEST(reg.nElements == 3);
167 BOOST_TEST(reg.elementPitchBits == 4 * 8);
168 BOOST_TEST(reg.bar == 0);
169 BOOST_TEST(reg.address == 1234);
170 BOOST_REQUIRE(reg.channels.size() == 1);
171 BOOST_TEST(reg.channels[0].bitOffset == 0);
172 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
173 BOOST_TEST(reg.channels[0].width == 1);
174 BOOST_TEST(reg.channels[0].nFractionalBits == 0);
175 BOOST_TEST(reg.channels[0].signedFlag ==
false);
178 auto reg = regs.getBackendRegister(
"DAQ.DOUBLE_BUF.INACTIVE_BUF_ID");
179 BOOST_TEST(reg.pathName ==
"/DAQ/DOUBLE_BUF/INACTIVE_BUF_ID");
180 BOOST_TEST(reg.nElements == 3);
181 BOOST_TEST(reg.elementPitchBits == 4 * 8);
182 BOOST_TEST(reg.bar == 0);
183 BOOST_TEST(reg.address == 1238);
184 BOOST_REQUIRE(reg.channels.size() == 1);
185 BOOST_TEST(reg.channels[0].bitOffset == 0);
186 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
187 BOOST_TEST(reg.channels[0].width == 1);
188 BOOST_TEST(reg.channels[0].nFractionalBits == 0);
189 BOOST_TEST(reg.channels[0].signedFlag ==
false);
192 auto reg = regs.getBackendRegister(
"DAQ.MUX_SEL");
193 BOOST_TEST(reg.pathName ==
"/DAQ/MUX_SEL");
194 BOOST_TEST(reg.nElements == 1);
195 BOOST_TEST(reg.elementPitchBits == 4 * 8);
196 BOOST_TEST(reg.bar == 0);
197 BOOST_TEST(reg.address == 1242);
198 BOOST_REQUIRE(reg.channels.size() == 1);
199 BOOST_TEST(reg.channels[0].bitOffset == 0);
200 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
201 BOOST_TEST(reg.channels[0].width == 2);
202 BOOST_TEST(reg.channels[0].nFractionalBits == 0);
203 BOOST_TEST(reg.channels[0].signedFlag ==
false);
206 auto reg = regs.getBackendRegister(
"DAQ.MACRO_PULSE_NUMBER");
207 BOOST_TEST(reg.pathName ==
"/DAQ/MACRO_PULSE_NUMBER");
208 BOOST_TEST(reg.nElements == 1);
209 BOOST_TEST(reg.elementPitchBits == 4 * 8);
210 BOOST_TEST(reg.bar == 13);
211 BOOST_TEST(reg.address == 0x8100003C);
212 BOOST_REQUIRE(reg.channels.size() == 1);
213 BOOST_TEST(reg.channels[0].bitOffset == 0);
214 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
215 BOOST_TEST(reg.channels[0].width == 32);
216 BOOST_TEST(reg.channels[0].nFractionalBits == 0);
217 BOOST_TEST(reg.channels[0].signedFlag ==
false);
220 auto reg = regs.getBackendRegister(
"BSP.SOME_INFO");
221 BOOST_TEST(reg.pathName ==
"/BSP/SOME_INFO");
222 BOOST_TEST(reg.nElements == 1);
223 BOOST_TEST(reg.elementPitchBits == 40 * 8);
224 BOOST_TEST(reg.bar == 0);
225 BOOST_TEST(reg.address == 8);
226 BOOST_REQUIRE(reg.channels.size() == 1);
227 BOOST_TEST(reg.channels[0].bitOffset == 0);
228 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::ASCII);
229 BOOST_TEST(reg.channels[0].width == 32);
230 BOOST_TEST(reg.channels[0].nFractionalBits == 0);
231 BOOST_TEST(reg.channels[0].signedFlag ==
false);
234 auto reg = regs.getBackendRegister(
"APP.SomeFloat");
235 BOOST_TEST(reg.pathName ==
"/APP/SomeFloat");
236 BOOST_TEST(reg.nElements == 1);
237 BOOST_TEST(reg.elementPitchBits == 4 * 8);
238 BOOST_TEST(reg.bar == 0);
239 BOOST_TEST(reg.address == 4096);
240 BOOST_REQUIRE(reg.channels.size() == 1);
241 BOOST_TEST(reg.channels[0].bitOffset == 0);
242 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::IEEE754);
243 BOOST_TEST(reg.channels[0].width == 32);
244 BOOST_TEST(reg.channels[0].nFractionalBits == 0);
245 BOOST_TEST(reg.channels[0].signedFlag ==
true);
248 auto reg = regs.getBackendRegister(
"BSP.VOID_INTERRUPT_0");
249 BOOST_TEST(reg.pathName ==
"/BSP/VOID_INTERRUPT_0");
250 BOOST_TEST(reg.nElements == 0);
251 BOOST_REQUIRE(reg.channels.size() == 1);
252 BOOST_TEST(reg.channels[0].bitOffset == 0);
253 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::VOID);
254 BOOST_TEST(reg.channels[0].width == 0);
255 BOOST_TEST(reg.channels[0].nFractionalBits == 0);
256 BOOST_TEST(reg.channels[0].signedFlag ==
false);
259 BOOST_TEST(metas.getNumberOfMetadata() == 6);
261 BOOST_TEST(metas.getMetadata(
"mapfileRevision") ==
"1.8.3-0-gdeadbeef");
262 BOOST_TEST(metas.getMetadata(
"someRandomEntry") ==
"some random value");
264 BOOST_TEST(metas.getMetadata(
"![0]") == R
"({"INTC":{"options":[],"path":"DAQ","version":1}})");
265 BOOST_TEST(metas.getMetadata("![3]") == R
"({"INTC":{"options":["MER"],"path":"MY_INTC","version":1}})");
266 BOOST_TEST(metas.getMetadata("![3,0]") == R
"({"INTC":{"options":[],"path":"MY_INTC.SUB0","version":1}})");
267 BOOST_TEST(metas.getMetadata("![3,1]") == R
"({"INTC":{"options":["MER"],"path":"MY_INTC.SUB1","version":1}})");
269 auto loi = regs.getListOfInterrupts();
270 BOOST_TEST(loi.size() == 2);
271 BOOST_CHECK(loi.find({0}) != loi.end());
272 BOOST_CHECK(loi.find({3, 0, 1}) != loi.end());