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);
108 BOOST_TEST(!reg.doubleBuffer.has_value());
111 auto reg = regs.getBackendRegister(
"DAQ.CTRL");
112 BOOST_TEST(reg.pathName ==
"/DAQ/CTRL");
113 BOOST_TEST(reg.nElements == 16384);
114 BOOST_TEST(reg.elementPitchBits == 64 * 8);
115 BOOST_TEST(reg.bar == 13);
116 BOOST_TEST(reg.address == 0x40000);
117 BOOST_CHECK(reg.registerAccess == NumericAddressedRegisterInfo::Access::INTERRUPT);
118 BOOST_TEST(reg.interruptId == std::vector<size_t>({3, 0, 1}), boost::test_tools::per_element());
119 BOOST_TEST(reg.doubleBuffer.has_value());
120 BOOST_TEST(reg.doubleBuffer->address == 0x40200);
121 BOOST_TEST(reg.doubleBuffer->inactiveBufferRegisterPath ==
"/DAQ.DOUBLE_BUF.INACTIVE_BUF_ID");
122 BOOST_TEST(reg.doubleBuffer->enableRegisterPath ==
"/DAQ.DOUBLE_BUF.ENA");
124 BOOST_REQUIRE(reg.channels.size() == 5);
126 BOOST_TEST(reg.channels[0].bitOffset == 0);
127 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
128 BOOST_TEST(reg.channels[0].width == 16);
129 BOOST_TEST(reg.channels[0].nFractionalBits == -2);
130 BOOST_TEST(reg.channels[0].signedFlag ==
true);
132 BOOST_TEST(reg.channels[1].bitOffset == 2 * 8);
133 BOOST_CHECK(reg.channels[1].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
134 BOOST_TEST(reg.channels[1].width == 16);
135 BOOST_TEST(reg.channels[1].nFractionalBits == -2);
136 BOOST_TEST(reg.channels[1].signedFlag ==
true);
138 BOOST_TEST(reg.channels[2].bitOffset == 4 * 8);
139 BOOST_CHECK(reg.channels[2].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
140 BOOST_TEST(reg.channels[2].width == 32);
141 BOOST_TEST(reg.channels[2].nFractionalBits == 0);
142 BOOST_TEST(reg.channels[2].signedFlag ==
false);
145 auto reg = regs.getBackendRegister(
"DAQ.FD");
146 BOOST_TEST(reg.pathName ==
"/DAQ/FD");
147 BOOST_TEST(reg.nElements == 16384);
148 BOOST_TEST(reg.elementPitchBits == 64 * 8);
149 BOOST_TEST(reg.bar == 13);
150 BOOST_TEST(reg.address == 0x81000000);
151 BOOST_CHECK(reg.registerAccess == NumericAddressedRegisterInfo::Access::INTERRUPT);
152 BOOST_TEST(reg.interruptId == std::vector<size_t>({0}), boost::test_tools::per_element());
154 BOOST_REQUIRE(reg.channels.size() == 2);
156 BOOST_TEST(reg.channels[0].bitOffset == 0);
157 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
158 BOOST_TEST(reg.channels[0].width == 16);
159 BOOST_TEST(reg.channels[0].nFractionalBits == -2);
160 BOOST_TEST(reg.channels[0].signedFlag ==
true);
162 BOOST_TEST(reg.channels[1].bitOffset == 2 * 8);
163 BOOST_CHECK(reg.channels[1].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
164 BOOST_TEST(reg.channels[1].width == 16);
165 BOOST_TEST(reg.channels[1].nFractionalBits == -2);
166 BOOST_TEST(reg.channels[1].signedFlag ==
true);
169 auto reg = regs.getBackendRegister(
"DAQ.DOUBLE_BUF.ENA");
170 BOOST_TEST(reg.pathName ==
"/DAQ/DOUBLE_BUF/ENA");
171 BOOST_TEST(reg.nElements == 3);
172 BOOST_TEST(reg.elementPitchBits == 4 * 8);
173 BOOST_TEST(reg.bar == 0);
174 BOOST_TEST(reg.address == 1234);
175 BOOST_REQUIRE(reg.channels.size() == 1);
176 BOOST_TEST(reg.channels[0].bitOffset == 0);
177 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
178 BOOST_TEST(reg.channels[0].width == 1);
179 BOOST_TEST(reg.channels[0].nFractionalBits == 0);
180 BOOST_TEST(reg.channels[0].signedFlag ==
false);
183 auto reg = regs.getBackendRegister(
"DAQ.DOUBLE_BUF.INACTIVE_BUF_ID");
184 BOOST_TEST(reg.pathName ==
"/DAQ/DOUBLE_BUF/INACTIVE_BUF_ID");
185 BOOST_TEST(reg.nElements == 3);
186 BOOST_TEST(reg.elementPitchBits == 4 * 8);
187 BOOST_TEST(reg.bar == 0);
188 BOOST_TEST(reg.address == 1238);
189 BOOST_REQUIRE(reg.channels.size() == 1);
190 BOOST_TEST(reg.channels[0].bitOffset == 0);
191 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
192 BOOST_TEST(reg.channels[0].width == 1);
193 BOOST_TEST(reg.channels[0].nFractionalBits == 0);
194 BOOST_TEST(reg.channels[0].signedFlag ==
false);
197 auto reg = regs.getBackendRegister(
"DAQ.FD.BUF0");
198 BOOST_TEST(reg.pathName ==
"/DAQ/FD/BUF0");
199 BOOST_TEST(reg.nElements == 16384);
200 BOOST_TEST(reg.elementPitchBits == 64 * 8);
201 BOOST_TEST(reg.bar == 13);
202 BOOST_TEST(reg.address == 0x81000000);
204 BOOST_REQUIRE(reg.channels.size() == 2);
206 BOOST_TEST(reg.channels[0].bitOffset == 0);
207 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
208 BOOST_TEST(reg.channels[0].width == 16);
209 BOOST_TEST(reg.channels[0].nFractionalBits == -2);
210 BOOST_TEST(reg.channels[0].signedFlag ==
true);
212 BOOST_TEST(reg.channels[1].bitOffset == 2 * 8);
213 BOOST_CHECK(reg.channels[1].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
214 BOOST_TEST(reg.channels[1].width == 16);
215 BOOST_TEST(reg.channels[1].nFractionalBits == -2);
216 BOOST_TEST(reg.channels[1].signedFlag ==
true);
219 auto reg = regs.getBackendRegister(
"DAQ.FD.BUF1");
220 BOOST_TEST(reg.pathName ==
"/DAQ/FD/BUF1");
221 BOOST_TEST(reg.nElements == 16384);
222 BOOST_TEST(reg.elementPitchBits == 64 * 8);
223 BOOST_TEST(reg.bar == 13);
225 BOOST_REQUIRE(reg.channels.size() == 2);
227 BOOST_TEST(reg.channels[0].bitOffset == 0);
228 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
229 BOOST_TEST(reg.channels[0].width == 16);
230 BOOST_TEST(reg.channels[0].nFractionalBits == -2);
231 BOOST_TEST(reg.channels[0].signedFlag ==
true);
233 BOOST_TEST(reg.channels[1].bitOffset == 2 * 8);
234 BOOST_CHECK(reg.channels[1].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
235 BOOST_TEST(reg.channels[1].width == 16);
236 BOOST_TEST(reg.channels[1].nFractionalBits == -2);
237 BOOST_TEST(reg.channels[1].signedFlag ==
true);
240 auto reg = regs.getBackendRegister(
"DAQ.MUX_SEL");
241 BOOST_TEST(reg.pathName ==
"/DAQ/MUX_SEL");
242 BOOST_TEST(reg.nElements == 1);
243 BOOST_TEST(reg.elementPitchBits == 4 * 8);
244 BOOST_TEST(reg.bar == 0);
245 BOOST_TEST(reg.address == 1242);
246 BOOST_REQUIRE(reg.channels.size() == 1);
247 BOOST_TEST(reg.channels[0].bitOffset == 0);
248 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
249 BOOST_TEST(reg.channels[0].width == 2);
250 BOOST_TEST(reg.channels[0].nFractionalBits == 0);
251 BOOST_TEST(reg.channels[0].signedFlag ==
false);
254 auto reg = regs.getBackendRegister(
"DAQ.MACRO_PULSE_NUMBER");
255 BOOST_TEST(reg.pathName ==
"/DAQ/MACRO_PULSE_NUMBER");
256 BOOST_TEST(reg.nElements == 1);
257 BOOST_TEST(reg.elementPitchBits == 4 * 8);
258 BOOST_TEST(reg.bar == 13);
259 BOOST_TEST(reg.address == 0x8100003C);
260 BOOST_REQUIRE(reg.channels.size() == 1);
261 BOOST_TEST(reg.channels[0].bitOffset == 0);
262 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::FIXED_POINT);
263 BOOST_TEST(reg.channels[0].width == 32);
264 BOOST_TEST(reg.channels[0].nFractionalBits == 0);
265 BOOST_TEST(reg.channels[0].signedFlag ==
false);
268 auto reg = regs.getBackendRegister(
"BSP.SOME_INFO");
269 BOOST_TEST(reg.pathName ==
"/BSP/SOME_INFO");
270 BOOST_TEST(reg.nElements == 1);
271 BOOST_TEST(reg.elementPitchBits == 40 * 8);
272 BOOST_TEST(reg.bar == 0);
273 BOOST_TEST(reg.address == 8);
274 BOOST_REQUIRE(reg.channels.size() == 1);
275 BOOST_TEST(reg.channels[0].bitOffset == 0);
276 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::ASCII);
277 BOOST_TEST(reg.channels[0].width == 32);
278 BOOST_TEST(reg.channels[0].nFractionalBits == 0);
279 BOOST_TEST(reg.channels[0].signedFlag ==
false);
282 auto reg = regs.getBackendRegister(
"APP.SomeFloat");
283 BOOST_TEST(reg.pathName ==
"/APP/SomeFloat");
284 BOOST_TEST(reg.nElements == 1);
285 BOOST_TEST(reg.elementPitchBits == 4 * 8);
286 BOOST_TEST(reg.bar == 0);
287 BOOST_TEST(reg.address == 4096);
288 BOOST_REQUIRE(reg.channels.size() == 1);
289 BOOST_TEST(reg.channels[0].bitOffset == 0);
290 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::IEEE754);
291 BOOST_TEST(reg.channels[0].width == 32);
292 BOOST_TEST(reg.channels[0].nFractionalBits == 0);
293 BOOST_TEST(reg.channels[0].signedFlag ==
true);
296 auto reg = regs.getBackendRegister(
"BSP.VOID_INTERRUPT_0");
297 BOOST_TEST(reg.pathName ==
"/BSP/VOID_INTERRUPT_0");
298 BOOST_TEST(reg.nElements == 0);
299 BOOST_REQUIRE(reg.channels.size() == 1);
300 BOOST_TEST(reg.channels[0].bitOffset == 0);
301 BOOST_CHECK(reg.channels[0].dataType == NumericAddressedRegisterInfo::Type::VOID);
302 BOOST_TEST(reg.channels[0].width == 0);
303 BOOST_TEST(reg.channels[0].nFractionalBits == 0);
304 BOOST_TEST(reg.channels[0].signedFlag ==
false);
307 BOOST_TEST(metas.getNumberOfMetadata() == 6);
309 BOOST_TEST(metas.getMetadata(
"mapfileRevision") ==
"1.8.3-0-gdeadbeef");
310 BOOST_TEST(metas.getMetadata(
"someRandomEntry") ==
"some random value");
312 BOOST_TEST(metas.getMetadata(
"![0]") == R
"({"INTC":{"options":[],"path":"DAQ","version":1}})");
313 BOOST_TEST(metas.getMetadata("![3]") == R
"({"INTC":{"options":["MER"],"path":"MY_INTC","version":1}})");
314 BOOST_TEST(metas.getMetadata("![3,0]") == R
"({"INTC":{"options":[],"path":"MY_INTC.SUB0","version":1}})");
315 BOOST_TEST(metas.getMetadata("![3,1]") == R
"({"INTC":{"options":["MER"],"path":"MY_INTC.SUB1","version":1}})");
317 auto loi = regs.getListOfInterrupts();
318 BOOST_TEST(loi.size() == 2);
319 BOOST_CHECK(loi.find({0}) != loi.end());
320 BOOST_CHECK(loi.find({3, 0, 1}) != loi.end());