94 ChimeraTK::Device device;
96 BOOST_TEST(device.isOpened() ==
false);
98 BOOST_TEST(device.isOpened() ==
true);
100 TwoDRegisterAccessor<int32_t> acc_someInt_as_int(device.getTwoDRegisterAccessor<int32_t>(
"MYDUMMY/SOME_INT"));
101 BOOST_TEST(acc_someInt_as_int.getVersionNumber() == VersionNumber{nullptr});
103 BOOST_TEST(acc_someInt_as_int.getNChannels() == 1);
104 BOOST_TEST(acc_someInt_as_int.getNElementsPerChannel() == 1);
105 acc_someInt_as_int.read();
106 BOOST_TEST(acc_someInt_as_int[0][0] == 42);
108 DoocsServerTestHelper::doocsSet(
"//MYDUMMY/SOME_INT", 120);
110 BOOST_TEST(acc_someInt_as_int[0][0] == 42);
112 acc_someInt_as_int.read();
113 BOOST_TEST(acc_someInt_as_int[0][0] == 120);
117 acc_someInt_as_int[0][0] = 1234;
118 BOOST_TEST(DoocsServerTestHelper::doocsGet<int>(
"//MYDUMMY/SOME_INT") == 120);
119 VersionNumber nextVersion;
120 acc_someInt_as_int.write(nextVersion);
121 BOOST_TEST(DoocsServerTestHelper::doocsGet<int>(
"//MYDUMMY/SOME_INT") == 1234);
122 BOOST_TEST(acc_someInt_as_int.getVersionNumber() == nextVersion);
124 DoocsServerTestHelper::doocsSet(
"//MYDUMMY/SOME_INT", 42);
126 TwoDRegisterAccessor<double> acc_someInt_as_double(device.getTwoDRegisterAccessor<
double>(
"MYDUMMY/SOME_INT"));
127 BOOST_TEST(acc_someInt_as_double.getNChannels() == 1);
128 BOOST_TEST(acc_someInt_as_double.getNElementsPerChannel() == 1);
129 acc_someInt_as_double.read();
130 BOOST_CHECK_CLOSE(acc_someInt_as_double[0][0], 42, 0.001);
132 DoocsServerTestHelper::doocsSet(
"//MYDUMMY/SOME_INT", 120);
134 BOOST_CHECK_CLOSE(acc_someInt_as_double[0][0], 42, 0.001);
135 acc_someInt_as_double.read();
136 BOOST_CHECK_CLOSE(acc_someInt_as_double[0][0], 120, 0.001);
138 acc_someInt_as_double[0][0] = 1234.3;
139 BOOST_TEST(DoocsServerTestHelper::doocsGet<int>(
"//MYDUMMY/SOME_INT") == 120);
140 acc_someInt_as_double.write();
141 BOOST_TEST(DoocsServerTestHelper::doocsGet<int>(
"//MYDUMMY/SOME_INT") == 1234);
143 DoocsServerTestHelper::doocsSet(
"//MYDUMMY/SOME_INT", 42);
145 TwoDRegisterAccessor<float> acc_someInt_as_float(device.getTwoDRegisterAccessor<
float>(
"MYDUMMY/SOME_INT"));
146 BOOST_TEST(acc_someInt_as_float.getNChannels() == 1);
147 BOOST_TEST(acc_someInt_as_float.getNElementsPerChannel() == 1);
148 acc_someInt_as_float.read();
149 BOOST_CHECK_CLOSE(acc_someInt_as_float[0][0], 42, 0.001);
151 DoocsServerTestHelper::doocsSet(
"//MYDUMMY/SOME_INT", 120);
153 BOOST_CHECK_CLOSE(acc_someInt_as_float[0][0], 42, 0.001);
154 acc_someInt_as_float.read();
155 BOOST_CHECK_CLOSE(acc_someInt_as_float[0][0], 120, 0.001);
157 acc_someInt_as_float[0][0] = 1233.9;
158 BOOST_TEST(DoocsServerTestHelper::doocsGet<int>(
"//MYDUMMY/SOME_INT") == 120);
159 acc_someInt_as_float.write();
160 BOOST_TEST(DoocsServerTestHelper::doocsGet<int>(
"//MYDUMMY/SOME_INT") == 1234);
162 DoocsServerTestHelper::doocsSet(
"//MYDUMMY/SOME_INT", 42);
164 TwoDRegisterAccessor<std::string> acc_someInt_as_string(
165 device.getTwoDRegisterAccessor<std::string>(
"MYDUMMY/SOME_INT"));
166 BOOST_TEST(acc_someInt_as_string.getNChannels() == 1);
167 BOOST_TEST(acc_someInt_as_string.getNElementsPerChannel() == 1);
168 acc_someInt_as_string.read();
169 BOOST_TEST(acc_someInt_as_string[0][0] ==
"42");
171 DoocsServerTestHelper::doocsSet(
"//MYDUMMY/SOME_INT", 120);
173 BOOST_TEST(acc_someInt_as_string[0][0] ==
"42");
174 acc_someInt_as_string.read();
175 BOOST_TEST(acc_someInt_as_string[0][0] ==
"120");
177 acc_someInt_as_string[0][0] =
"1234";
178 BOOST_TEST(DoocsServerTestHelper::doocsGet<int>(
"//MYDUMMY/SOME_INT") == 120);
179 acc_someInt_as_string.write();
180 BOOST_TEST(DoocsServerTestHelper::doocsGet<int>(
"//MYDUMMY/SOME_INT") == 1234);
183 BOOST_TEST(device.isOpened() ==
false);
189 ChimeraTK::Device device;
192 TwoDRegisterAccessor<float> acc_someFloat_as_float(device.getTwoDRegisterAccessor<
float>(
"MYDUMMY/SOME_FLOAT"));
193 BOOST_TEST(acc_someFloat_as_float.getNChannels() == 1);
194 BOOST_TEST(acc_someFloat_as_float.getNElementsPerChannel() == 1);
195 acc_someFloat_as_float.read();
196 BOOST_CHECK_CLOSE(acc_someFloat_as_float[0][0], 3.1415, 0.00001);
198 DoocsServerTestHelper::doocsSet(
"//MYDUMMY/SOME_FLOAT", 123.456);
200 BOOST_CHECK_CLOSE(acc_someFloat_as_float[0][0], 3.1415, 0.00001);
202 acc_someFloat_as_float.read();
203 BOOST_CHECK_CLOSE(acc_someFloat_as_float[0][0], 123.456, 0.00001);
207 acc_someFloat_as_float[0][0] = 666.333;
208 BOOST_CHECK_CLOSE(DoocsServerTestHelper::doocsGet<float>(
"//MYDUMMY/SOME_FLOAT"), 123.456, 0.00001);
209 VersionNumber nextVersion;
210 acc_someFloat_as_float.write(nextVersion);
211 BOOST_CHECK_CLOSE(DoocsServerTestHelper::doocsGet<float>(
"//MYDUMMY/SOME_FLOAT"), 666.333, 0.00001);
212 BOOST_TEST(acc_someFloat_as_float.getVersionNumber() == nextVersion);
214 DoocsServerTestHelper::doocsSet(
"//MYDUMMY/SOME_FLOAT", 3.1415);
216 TwoDRegisterAccessor<double> acc_someFloat_as_double(device.getTwoDRegisterAccessor<
double>(
"MYDUMMY/SOME_FLOAT"));
217 BOOST_TEST(acc_someFloat_as_double.getNChannels() == 1);
218 BOOST_TEST(acc_someFloat_as_double.getNElementsPerChannel() == 1);
219 acc_someFloat_as_double.read();
220 BOOST_CHECK_CLOSE(acc_someFloat_as_double[0][0], 3.1415, 0.00001);
222 DoocsServerTestHelper::doocsSet(
"//MYDUMMY/SOME_FLOAT", 123.456);
224 BOOST_CHECK_CLOSE(acc_someFloat_as_double[0][0], 3.1415, 0.00001);
225 acc_someFloat_as_double.read();
226 BOOST_CHECK_CLOSE(acc_someFloat_as_double[0][0], 123.456, 0.00001);
228 acc_someFloat_as_double[0][0] = 1234.3;
229 BOOST_CHECK_CLOSE(DoocsServerTestHelper::doocsGet<float>(
"//MYDUMMY/SOME_FLOAT"), 123.456, 0.00001);
230 acc_someFloat_as_double.write();
231 BOOST_CHECK_CLOSE(DoocsServerTestHelper::doocsGet<float>(
"//MYDUMMY/SOME_FLOAT"), 1234.3, 0.00001);
233 DoocsServerTestHelper::doocsSet(
"//MYDUMMY/SOME_FLOAT", 3.1415);
235 TwoDRegisterAccessor<int> acc_someFloat_as_int(device.getTwoDRegisterAccessor<
int>(
"MYDUMMY/SOME_FLOAT"));
236 BOOST_TEST(acc_someFloat_as_int.getNChannels() == 1);
237 BOOST_TEST(acc_someFloat_as_int.getNElementsPerChannel() == 1);
238 acc_someFloat_as_int.read();
239 BOOST_TEST(acc_someFloat_as_int[0][0] == 3);
241 DoocsServerTestHelper::doocsSet(
"//MYDUMMY/SOME_FLOAT", 119.9);
243 BOOST_TEST(acc_someFloat_as_int[0][0] == 3);
244 acc_someFloat_as_int.read();
245 BOOST_TEST(acc_someFloat_as_int[0][0] == 120);
247 acc_someFloat_as_int[0][0] = 1234;
248 BOOST_CHECK_CLOSE(DoocsServerTestHelper::doocsGet<float>(
"//MYDUMMY/SOME_FLOAT"), 119.9, 0.00001);
249 acc_someFloat_as_int.write();
250 BOOST_CHECK_CLOSE(DoocsServerTestHelper::doocsGet<float>(
"//MYDUMMY/SOME_FLOAT"), 1234.0, 0.00001);
252 DoocsServerTestHelper::doocsSet(
"//MYDUMMY/SOME_FLOAT", 3.1415);
254 TwoDRegisterAccessor<std::string> acc_someFloat_as_string(
255 device.getTwoDRegisterAccessor<std::string>(
"MYDUMMY/SOME_FLOAT"));
256 BOOST_TEST(acc_someFloat_as_string.getNChannels() == 1);
257 BOOST_TEST(acc_someFloat_as_string.getNElementsPerChannel() == 1);
258 acc_someFloat_as_string.read();
259 BOOST_CHECK_CLOSE(std::stod(acc_someFloat_as_string[0][0]), 3.1415, 0.00001);
261 DoocsServerTestHelper::doocsSet(
"//MYDUMMY/SOME_FLOAT", 120);
263 BOOST_CHECK_CLOSE(std::stod(acc_someFloat_as_string[0][0]), 3.1415, 0.00001);
264 acc_someFloat_as_string.read();
265 BOOST_TEST(acc_someFloat_as_string[0][0] ==
"120.000000");
267 acc_someFloat_as_string[0][0] =
"1234.5678";
268 BOOST_CHECK_CLOSE(DoocsServerTestHelper::doocsGet<float>(
"//MYDUMMY/SOME_FLOAT"), 120, 0.00001);
269 acc_someFloat_as_string.write();
270 BOOST_CHECK_CLOSE(DoocsServerTestHelper::doocsGet<float>(
"//MYDUMMY/SOME_FLOAT"), 1234.5678, 0.00001);
278 ChimeraTK::Device device;
281 TwoDRegisterAccessor<float> acc_someDouble_as_float(device.getTwoDRegisterAccessor<
float>(
"MYDUMMY/SOME_DOUBLE"));
282 BOOST_TEST(acc_someDouble_as_float.getNChannels() == 1);
283 BOOST_TEST(acc_someDouble_as_float.getNElementsPerChannel() == 1);
284 acc_someDouble_as_float.read();
285 BOOST_CHECK_CLOSE(acc_someDouble_as_float[0][0], 2.8, 0.00001);
287 DoocsServerTestHelper::doocsSet(
"//MYDUMMY/SOME_DOUBLE", 123.456);
289 BOOST_CHECK_CLOSE(acc_someDouble_as_float[0][0], 2.8, 0.00001);
291 acc_someDouble_as_float.read();
292 BOOST_CHECK_CLOSE(acc_someDouble_as_float[0][0], 123.456, 0.00001);
296 acc_someDouble_as_float[0][0] = 666.333;
297 BOOST_CHECK_CLOSE(DoocsServerTestHelper::doocsGet<float>(
"//MYDUMMY/SOME_DOUBLE"), 123.456, 0.00001);
298 VersionNumber nextVersion;
299 acc_someDouble_as_float.write(nextVersion);
300 BOOST_CHECK_CLOSE(DoocsServerTestHelper::doocsGet<float>(
"//MYDUMMY/SOME_DOUBLE"), 666.333, 0.00001);
301 BOOST_TEST(acc_someDouble_as_float.getVersionNumber() == nextVersion);
303 DoocsServerTestHelper::doocsSet(
"//MYDUMMY/SOME_DOUBLE", 3.1415);
305 TwoDRegisterAccessor<double> acc_someDouble_as_double(device.getTwoDRegisterAccessor<
double>(
"MYDUMMY/SOME_DOUBLE"));
306 BOOST_TEST(acc_someDouble_as_double.getNChannels() == 1);
307 BOOST_TEST(acc_someDouble_as_double.getNElementsPerChannel() == 1);
308 acc_someDouble_as_double.read();
309 BOOST_CHECK_CLOSE(acc_someDouble_as_double[0][0], 3.1415, 0.00001);
311 DoocsServerTestHelper::doocsSet(
"//MYDUMMY/SOME_DOUBLE", 123.456);
313 BOOST_CHECK_CLOSE(acc_someDouble_as_double[0][0], 3.1415, 0.00001);
314 acc_someDouble_as_double.read();
315 BOOST_CHECK_CLOSE(acc_someDouble_as_double[0][0], 123.456, 0.00001);
317 acc_someDouble_as_double[0][0] = 1234.3;
318 BOOST_CHECK_CLOSE(DoocsServerTestHelper::doocsGet<float>(
"//MYDUMMY/SOME_DOUBLE"), 123.456, 0.00001);
319 acc_someDouble_as_double.write();
320 BOOST_CHECK_CLOSE(DoocsServerTestHelper::doocsGet<float>(
"//MYDUMMY/SOME_DOUBLE"), 1234.3, 0.00001);
322 DoocsServerTestHelper::doocsSet(
"//MYDUMMY/SOME_FLOAT", 3.1415);
324 TwoDRegisterAccessor<int> acc_someDouble_as_int(device.getTwoDRegisterAccessor<
int>(
"MYDUMMY/SOME_FLOAT"));
325 BOOST_TEST(acc_someDouble_as_int.getNChannels() == 1);
326 BOOST_TEST(acc_someDouble_as_int.getNElementsPerChannel() == 1);
327 acc_someDouble_as_int.read();
328 BOOST_TEST(acc_someDouble_as_int[0][0] == 3);
330 DoocsServerTestHelper::doocsSet(
"//MYDUMMY/SOME_FLOAT", 119.9);
332 BOOST_TEST(acc_someDouble_as_int[0][0] == 3);
333 acc_someDouble_as_int.read();
334 BOOST_TEST(acc_someDouble_as_int[0][0] == 120);
336 acc_someDouble_as_int[0][0] = 1234;
337 BOOST_CHECK_CLOSE(DoocsServerTestHelper::doocsGet<float>(
"//MYDUMMY/SOME_FLOAT"), 119.9, 0.00001);
338 acc_someDouble_as_int.write();
339 BOOST_CHECK_CLOSE(DoocsServerTestHelper::doocsGet<float>(
"//MYDUMMY/SOME_FLOAT"), 1234.0, 0.00001);
341 DoocsServerTestHelper::doocsSet(
"//MYDUMMY/SOME_FLOAT", 3.1415);
343 TwoDRegisterAccessor<std::string> acc_someDouble_as_string(
344 device.getTwoDRegisterAccessor<std::string>(
"MYDUMMY/SOME_FLOAT"));
345 BOOST_TEST(acc_someDouble_as_string.getNChannels() == 1);
346 BOOST_TEST(acc_someDouble_as_string.getNElementsPerChannel() == 1);
347 acc_someDouble_as_string.read();
348 BOOST_CHECK_CLOSE(std::stod(acc_someDouble_as_string[0][0]), 3.1415, 0.00001);
350 DoocsServerTestHelper::doocsSet(
"//MYDUMMY/SOME_FLOAT", 120);
352 BOOST_CHECK_CLOSE(std::stod(acc_someDouble_as_string[0][0]), 3.1415, 0.00001);
353 acc_someDouble_as_string.read();
354 BOOST_TEST(acc_someDouble_as_string[0][0] ==
"120.000000");
356 acc_someDouble_as_string[0][0] =
"1234.5678";
357 BOOST_CHECK_CLOSE(DoocsServerTestHelper::doocsGet<float>(
"//MYDUMMY/SOME_FLOAT"), 120, 0.00001);
358 acc_someDouble_as_string.write();
359 BOOST_CHECK_CLOSE(DoocsServerTestHelper::doocsGet<float>(
"//MYDUMMY/SOME_FLOAT"), 1234.5678, 0.00001);
397 ChimeraTK::Device device;
400 TwoDRegisterAccessor<int> acc_someArray(device.getTwoDRegisterAccessor<
int>(
"MYDUMMY/SOME_INT_ARRAY"));
401 BOOST_TEST(acc_someArray.getNChannels() == 1);
402 BOOST_TEST(acc_someArray.getNElementsPerChannel() == 42);
403 acc_someArray.read();
404 for(
int i = 0; i < 42; i++) BOOST_TEST(acc_someArray[0][i] == 3 * i + 120);
406 std::vector<int> vals(42);
407 for(
int i = 0; i < 42; i++) vals[i] = -55 * i;
408 DoocsServerTestHelper::doocsSet(
"//MYDUMMY/SOME_INT_ARRAY", vals);
410 for(
int i = 0; i < 42; i++) BOOST_TEST(acc_someArray[0][i] == 3 * i + 120);
412 acc_someArray.read();
413 for(
int i = 0; i < 42; i++) BOOST_TEST(acc_someArray[0][i] == -55 * i);
417 for(
int i = 0; i < 42; i++) acc_someArray[0][i] = i - 21;
418 vals = DoocsServerTestHelper::doocsGetArray<int>(
"//MYDUMMY/SOME_INT_ARRAY");
419 for(
int i = 0; i < 42; i++) BOOST_TEST(vals[i] == -55 * i);
420 VersionNumber nextVersion;
421 acc_someArray.write(nextVersion);
422 vals = DoocsServerTestHelper::doocsGetArray<int>(
"//MYDUMMY/SOME_INT_ARRAY");
423 for(
int i = 0; i < 42; i++) BOOST_TEST(vals[i] == i - 21);
424 BOOST_TEST(acc_someArray.getVersionNumber() == nextVersion);
427 TwoDRegisterAccessor<double> acc_someArrayAsDouble(device.getTwoDRegisterAccessor<
double>(
"MYDUMMY/SOME_INT_ARRAY"));
428 acc_someArrayAsDouble.read();
429 for(
int i = 0; i < 5; i++) BOOST_CHECK_CLOSE(acc_someArrayAsDouble[0][i], i - 21, 0.00001);
430 for(
int i = 0; i < 5; i++) acc_someArrayAsDouble[0][i] = 2.4 * i;
431 acc_someArrayAsDouble.write();
432 vals = DoocsServerTestHelper::doocsGetArray<int>(
"//MYDUMMY/SOME_INT_ARRAY");
433 for(
int i = 0; i < 5; i++) BOOST_CHECK_CLOSE(vals[i], round(2.4 * i), 0.00001);
436 TwoDRegisterAccessor<std::string> acc_someArrayAsString(
437 device.getTwoDRegisterAccessor<std::string>(
"MYDUMMY/SOME_INT_ARRAY"));
438 acc_someArrayAsString.read();
439 for(
int i = 0; i < 5; i++) BOOST_CHECK_CLOSE(std::stod(acc_someArrayAsString[0][i]), round(2.4 * i), 0.00001);
440 for(
int i = 0; i < 5; i++) acc_someArrayAsString[0][i] = std::to_string(3 * i);
441 acc_someArrayAsString.write();
442 vals = DoocsServerTestHelper::doocsGetArray<int>(
"//MYDUMMY/SOME_INT_ARRAY");
443 for(
int i = 0; i < 5; i++) BOOST_TEST(vals[i] == 3 * i);
523 ChimeraTK::Device device;
526 TwoDRegisterAccessor<float> acc_someArray(device.getTwoDRegisterAccessor<
float>(
"MYDUMMY/SOME_FLOAT_ARRAY"));
527 BOOST_TEST(acc_someArray.getNChannels() == 1);
528 BOOST_TEST(acc_someArray.getNElementsPerChannel() == 5);
529 auto oldVersion = acc_someArray.getVersionNumber();
530 acc_someArray.read();
531 for(
int i = 0; i < 5; i++) BOOST_CHECK_CLOSE(acc_someArray[0][i], i / 1000., 0.00001);
532 BOOST_TEST(acc_someArray.getVersionNumber() != oldVersion);
534 std::vector<float> vals(5);
535 for(
int i = 0; i < 5; i++) vals[i] = -3.14159265 * i;
536 DoocsServerTestHelper::doocsSet(
"//MYDUMMY/SOME_FLOAT_ARRAY", vals);
538 for(
int i = 0; i < 5; i++) BOOST_CHECK_CLOSE(acc_someArray[0][i], i / 1000., 0.00001);
539 acc_someArray.read();
540 for(
int i = 0; i < 5; i++) BOOST_CHECK_CLOSE(acc_someArray[0][i], -3.14159265 * i, 0.00001);
542 for(
int i = 0; i < 5; i++) acc_someArray[0][i] = 2. / (i + 0.01);
543 vals = DoocsServerTestHelper::doocsGetArray<float>(
"//MYDUMMY/SOME_FLOAT_ARRAY");
544 for(
int i = 0; i < 5; i++) BOOST_CHECK_CLOSE(vals[i], -3.14159265 * i, 0.00001);
545 VersionNumber nextVersion;
546 acc_someArray.write(nextVersion);
547 vals = DoocsServerTestHelper::doocsGetArray<float>(
"//MYDUMMY/SOME_FLOAT_ARRAY");
548 for(
int i = 0; i < 5; i++) BOOST_CHECK_CLOSE(vals[i], 2. / (i + 0.01), 0.00001);
549 BOOST_TEST(acc_someArray.getVersionNumber() == nextVersion);
557 ChimeraTK::Device device;
560 TwoDRegisterAccessor<double> acc_someArray(device.getTwoDRegisterAccessor<
double>(
"MYDUMMY/SOME_DOUBLE_ARRAY"));
561 BOOST_TEST(acc_someArray.getNChannels() == 1);
562 BOOST_TEST(acc_someArray.getNElementsPerChannel() == 5);
563 auto oldVersion = acc_someArray.getVersionNumber();
564 acc_someArray.read();
565 for(
int i = 0; i < 5; i++) BOOST_CHECK_CLOSE(acc_someArray[0][i], i / 333., 0.00001);
566 BOOST_TEST(acc_someArray.getVersionNumber() != oldVersion);
568 std::vector<double> vals(5);
569 for(
int i = 0; i < 5; i++) vals[i] = -3.14159265 * i;
570 DoocsServerTestHelper::doocsSet(
"//MYDUMMY/SOME_DOUBLE_ARRAY", vals);
572 for(
int i = 0; i < 5; i++) BOOST_CHECK_CLOSE(acc_someArray[0][i], i / 333., 0.00001);
573 acc_someArray.read();
574 for(
int i = 0; i < 5; i++) BOOST_CHECK_CLOSE(acc_someArray[0][i], -3.14159265 * i, 0.00001);
576 for(
int i = 0; i < 5; i++) acc_someArray[0][i] = 2. / (i + 0.01);
577 vals = DoocsServerTestHelper::doocsGetArray<double>(
"//MYDUMMY/SOME_DOUBLE_ARRAY");
578 for(
int i = 0; i < 5; i++) BOOST_CHECK_CLOSE(vals[i], -3.14159265 * i, 0.00001);
579 VersionNumber nextVersion;
580 acc_someArray.write(nextVersion);
581 vals = DoocsServerTestHelper::doocsGetArray<double>(
"//MYDUMMY/SOME_DOUBLE_ARRAY");
582 for(
int i = 0; i < 5; i++) BOOST_CHECK_CLOSE(vals[i], 2. / (i + 0.01), 0.00001);
583 BOOST_TEST(acc_someArray.getVersionNumber() == nextVersion);
586 TwoDRegisterAccessor<int> acc_someArrayAsInt(device.getTwoDRegisterAccessor<
int>(
"MYDUMMY/SOME_DOUBLE_ARRAY"));
587 acc_someArrayAsInt.read();
588 for(
int i = 0; i < 5; i++) BOOST_TEST(acc_someArrayAsInt[0][i] == round(2. / (i + 0.01)));
589 for(
int i = 0; i < 5; i++) acc_someArrayAsInt[0][i] = 2 * i;
590 acc_someArrayAsInt.write();
591 vals = DoocsServerTestHelper::doocsGetArray<double>(
"//MYDUMMY/SOME_DOUBLE_ARRAY");
592 for(
int i = 0; i < 5; i++) BOOST_CHECK_CLOSE(vals[i], 2 * i, 0.00001);
595 TwoDRegisterAccessor<std::string> acc_someArrayAsString(
596 device.getTwoDRegisterAccessor<std::string>(
"MYDUMMY/SOME_DOUBLE_ARRAY"));
597 acc_someArrayAsString.read();
598 for(
int i = 0; i < 5; i++) BOOST_CHECK_CLOSE(std::stod(acc_someArrayAsString[0][i]), 2 * i, 0.00001);
599 for(
int i = 0; i < 5; i++) acc_someArrayAsString[0][i] = std::to_string(2.1 * i);
600 acc_someArrayAsString.write();
601 vals = DoocsServerTestHelper::doocsGetArray<double>(
"//MYDUMMY/SOME_DOUBLE_ARRAY");
602 for(
int i = 0; i < 5; i++) BOOST_CHECK_CLOSE(vals[i], 2.1 * i, 0.00001);
627 ChimeraTK::Device device;
630 TwoDRegisterAccessor<int> acc_someArray(device.getTwoDRegisterAccessor<
int>(
"MYDUMMY/SOME_IIII"));
631 BOOST_TEST(acc_someArray.getNChannels() == 1);
632 BOOST_TEST(acc_someArray.getNElementsPerChannel() == 4);
633 acc_someArray.read();
634 for(
int i = 0; i < 4; i++) BOOST_TEST(acc_someArray[0][i] == 10 + i);
636 std::vector<int> vals(4);
637 for(
int i = 0; i < 4; i++) vals[i] = -55 * i;
638 DoocsServerTestHelper::doocsSetIIII(
"//MYDUMMY/SOME_IIII", vals);
640 for(
int i = 0; i < 4; i++) BOOST_TEST(acc_someArray[0][i] == 10 + i);
642 acc_someArray.read();
643 for(
int i = 0; i < 4; i++) BOOST_TEST(acc_someArray[0][i] == -55 * i);
647 for(
int i = 0; i < 4; i++) acc_someArray[0][i] = i - 21;
648 vals = DoocsServerTestHelper::doocsGetArray<int>(
"//MYDUMMY/SOME_IIII");
649 for(
int i = 0; i < 4; i++) BOOST_TEST(vals[i] == -55 * i);
650 VersionNumber nextVersion;
651 acc_someArray.write(nextVersion);
652 vals = DoocsServerTestHelper::doocsGetArray<int>(
"//MYDUMMY/SOME_IIII");
653 for(
int i = 0; i < 4; i++) BOOST_TEST(vals[i] == i - 21);
654 BOOST_TEST(acc_someArray.getVersionNumber() == nextVersion);
657 TwoDRegisterAccessor<double> acc_someArrayAsDouble(device.getTwoDRegisterAccessor<
double>(
"MYDUMMY/SOME_IIII"));
658 acc_someArrayAsDouble.read();
659 for(
int i = 0; i < 4; i++) BOOST_CHECK_CLOSE(acc_someArrayAsDouble[0][i], i - 21, 0.00001);
660 for(
int i = 0; i < 4; i++) acc_someArrayAsDouble[0][i] = 2.4 * i;
661 acc_someArrayAsDouble.write();
662 vals = DoocsServerTestHelper::doocsGetArray<int>(
"//MYDUMMY/SOME_IIII");
663 for(
int i = 0; i < 4; i++) BOOST_CHECK_CLOSE(vals[i], round(2.4 * i), 0.00001);
666 TwoDRegisterAccessor<std::string> acc_someArrayAsString(
667 device.getTwoDRegisterAccessor<std::string>(
"MYDUMMY/SOME_IIII"));
668 acc_someArrayAsString.read();
669 for(
int i = 0; i < 4; i++) BOOST_CHECK_CLOSE(std::stod(acc_someArrayAsString[0][i]), round(2.4 * i), 0.00001);
670 for(
int i = 0; i < 4; i++) acc_someArrayAsString[0][i] = std::to_string(3 * i);
671 acc_someArrayAsString.write();
672 vals = DoocsServerTestHelper::doocsGetArray<int>(
"//MYDUMMY/SOME_IIII");
673 for(
int i = 0; i < 4; i++) BOOST_TEST(vals[i] == 3 * i);
681 ChimeraTK::Device device;
685 auto catalogue = device.getRegisterCatalogue();
686 auto regI = catalogue.getRegister(
"MYDUMMY/SOME_IFFF/I");
687 auto regF1 = catalogue.getRegister(
"MYDUMMY/SOME_IFFF/F1");
688 auto regF2 = catalogue.getRegister(
"MYDUMMY/SOME_IFFF/F2");
689 auto regF3 = catalogue.getRegister(
"MYDUMMY/SOME_IFFF/F3");
690 BOOST_TEST(regI.getDataDescriptor().isIntegral());
691 BOOST_TEST(regI.getDataDescriptor().isSigned());
692 BOOST_TEST(regI.getDataDescriptor().nDigits() == 11);
693 BOOST_TEST(!regF1.getDataDescriptor().isIntegral());
694 BOOST_TEST(regF1.getDataDescriptor().isSigned());
695 BOOST_TEST(!regF2.getDataDescriptor().isIntegral());
696 BOOST_TEST(regF2.getDataDescriptor().isSigned());
697 BOOST_TEST(!regF3.getDataDescriptor().isIntegral());
698 BOOST_TEST(regF3.getDataDescriptor().isSigned());
702 auto acc_I = device.getScalarRegisterAccessor<
int>(
"MYDUMMY/SOME_IFFF/I");
703 auto acc_F1 = device.getScalarRegisterAccessor<
float>(
"MYDUMMY/SOME_IFFF/F1");
704 auto acc_F2 = device.getScalarRegisterAccessor<
float>(
"MYDUMMY/SOME_IFFF/F2");
705 auto acc_F3 = device.getScalarRegisterAccessor<
float>(
"MYDUMMY/SOME_IFFF/F3");
708 BOOST_CHECK_EQUAL(
int(acc_I), 10);
710 BOOST_CHECK_CLOSE(
float(acc_F1), 2.71828, 0.00001);
712 BOOST_CHECK_CLOSE(
float(acc_F2), 3.14159, 0.00001);
714 BOOST_CHECK_CLOSE(
float(acc_F3), 197.327, 0.00001);
719 auto acc_I = device.getScalarRegisterAccessor<std::string>(
"MYDUMMY/SOME_IFFF/I");
720 auto acc_F1 = device.getScalarRegisterAccessor<std::string>(
"MYDUMMY/SOME_IFFF/F1");
721 auto acc_F2 = device.getScalarRegisterAccessor<std::string>(
"MYDUMMY/SOME_IFFF/F2");
722 auto acc_F3 = device.getScalarRegisterAccessor<std::string>(
"MYDUMMY/SOME_IFFF/F3");
725 BOOST_CHECK_EQUAL(std::string(acc_I),
"10");
727 BOOST_CHECK_CLOSE(std::stod(acc_F1), 2.71828, 0.00001);
729 BOOST_CHECK_CLOSE(std::stod(acc_F2), 3.14159, 0.00001);
731 BOOST_CHECK_CLOSE(std::stod(acc_F3), 197.327, 0.00001);
736 auto acc_I = device.getScalarRegisterAccessor<
int>(
"MYDUMMY/SOME_IFFF/I");
737 auto acc_F1 = device.getScalarRegisterAccessor<
float>(
"MYDUMMY/SOME_IFFF/F1");
738 auto acc_F2 = device.getScalarRegisterAccessor<
float>(
"MYDUMMY/SOME_IFFF/F2");
739 auto acc_F3 = device.getScalarRegisterAccessor<
float>(
"MYDUMMY/SOME_IFFF/F3");
745 BOOST_CHECK_EQUAL(
int(acc_I), 42);
747 BOOST_CHECK_CLOSE(
float(acc_F1), 2.71828, 0.00001);
749 BOOST_CHECK_CLOSE(
float(acc_F2), 3.14159, 0.00001);
751 BOOST_CHECK_CLOSE(
float(acc_F3), 197.327, 0.00001);
760 BOOST_CHECK_EQUAL(
int(acc_I), 42);
762 BOOST_CHECK_CLOSE(
float(acc_F1), 2.71828, 0.00001);
764 BOOST_CHECK_CLOSE(
float(acc_F2), 123.456, 0.00001);
766 BOOST_CHECK_CLOSE(
float(acc_F3), -666.666, 0.00001);
775 ChimeraTK::Device device;
779 OneDRegisterAccessor<std::uint8_t> acc_someImage(device.getOneDRegisterAccessor<std::uint8_t>(
"MYDUMMY/SOME_IMAGE"));
780 BOOST_TEST(acc_someImage.getNElements() == 640 * 460 +
sizeof(ChimeraTK::ImgHeader));
782 acc_someImage.read();
783 ChimeraTK::MappedImage im(acc_someImage);
784 BOOST_TEST(im.header()->width == 200);
785 BOOST_TEST(im.header()->height == 100);
786 BOOST_CHECK(im.header()->image_format == ChimeraTK::ImgFormat::Gray16);
787 auto imv = im.interpretedView<std::uint16_t>();
788 BOOST_TEST(imv(0, 0) == 0x101);
791 OneDRegisterAccessor<std::uint8_t> acc_someImage_padded(
792 device.getOneDRegisterAccessor<std::uint8_t>(
"MYDUMMY/SOME_IMAGE", 200 * 1000));
793 BOOST_TEST(acc_someImage_padded.getNElements() == 200 * 1000);
794 acc_someImage_padded.read();
796 for(
unsigned i = 0; i < im.header()->totalLength; i++) {
797 BOOST_TEST(acc_someImage[i] == acc_someImage_padded[i]);
800 OneDRegisterAccessor<std::uint8_t> acc_someImage_truncated(
801 device.getOneDRegisterAccessor<std::uint8_t>(
"MYDUMMY/SOME_IMAGE", 200 * 51 * 2));
802 acc_someImage_truncated.read();
803 ChimeraTK::MappedImage im1(acc_someImage_truncated);
804 BOOST_TEST(im1.header()->width == 200);
805 BOOST_TEST(im1.header()->height == 50);
806 BOOST_CHECK(im1.header()->image_format == ChimeraTK::ImgFormat::Gray16);
852 ChimeraTK::Device device;
857 OneDRegisterAccessor<int> acc_someArray(device.getOneDRegisterAccessor<
int>(
"MYDUMMY/SOME_INT_ARRAY", 20, 1));
858 BOOST_TEST(acc_someArray.getNElements() == 20);
860 std::vector<int> vals(42);
861 for(
int i = 0; i < 42; i++) vals[i] = -55 * i;
862 DoocsServerTestHelper::doocsSet(
"//MYDUMMY/SOME_INT_ARRAY", vals);
864 acc_someArray.read();
865 for(
int i = 0; i < 20; i++) BOOST_TEST(acc_someArray[i] == -55 * (i + 1));
867 for(
int i = 0; i < 20; i++) acc_someArray[i] = i;
868 acc_someArray.write();
869 vals = DoocsServerTestHelper::doocsGetArray<int>(
"//MYDUMMY/SOME_INT_ARRAY");
870 for(
int i = 0; i < 42; i++) {
871 if(i == 0 || i > 20) {
872 BOOST_TEST(vals[i] == -55 * i);
875 BOOST_TEST(vals[i] == i - 1);
882 OneDRegisterAccessor<int> acc_someArray(device.getOneDRegisterAccessor<
int>(
"MYDUMMY/SOME_INT_ARRAY", 1, 10));
883 BOOST_TEST(acc_someArray.getNElements() == 1);
885 std::vector<int> vals(42);
886 for(
int i = 0; i < 42; i++) vals[i] = 33 * i;
887 DoocsServerTestHelper::doocsSet(
"//MYDUMMY/SOME_INT_ARRAY", vals);
889 acc_someArray.read();
890 BOOST_TEST(acc_someArray[0] == 33 * 10);
892 acc_someArray[0] = 42;
893 acc_someArray.write();
894 vals = DoocsServerTestHelper::doocsGetArray<int>(
"//MYDUMMY/SOME_INT_ARRAY");
895 for(
int i = 0; i < 42; i++) {
897 BOOST_TEST(vals[i] == 42);
900 BOOST_TEST(vals[i] == 33 * i);
907 OneDRegisterAccessor<float> acc_someArray(device.getOneDRegisterAccessor<
float>(
"MYDUMMY/SOME_DOUBLE_ARRAY", 3, 2));
908 BOOST_TEST(acc_someArray.getNElements() == 3);
910 std::vector<double> vals(5);
911 for(
int i = 0; i < 5; i++) vals[i] = 3.14 * i;
912 DoocsServerTestHelper::doocsSet(
"//MYDUMMY/SOME_DOUBLE_ARRAY", vals);
914 acc_someArray.read();
915 for(
int i = 0; i < 3; i++) BOOST_CHECK_CLOSE(acc_someArray[i], 3.14 * (i + 2), 0.00001);
917 for(
int i = 0; i < 3; i++) acc_someArray[i] = 1.2 - i;
918 acc_someArray.write();
919 vals = DoocsServerTestHelper::doocsGetArray<double>(
"//MYDUMMY/SOME_DOUBLE_ARRAY");
920 for(
int i = 0; i < 5; i++) {
922 BOOST_CHECK_CLOSE(vals[i], 1.2 - (i - 2), 0.00001);
925 BOOST_CHECK_CLOSE(vals[i], 3.14 * i, 0.00001);
932 ScalarRegisterAccessor<std::string> acc_someArray(
933 device.getScalarRegisterAccessor<std::string>(
"MYDUMMY/SOME_FLOAT_ARRAY", 0));
935 std::vector<float> vals(5);
936 for(
int i = 0; i < 5; i++) vals[i] = 2.82 * (i + 1);
937 DoocsServerTestHelper::doocsSet(
"//MYDUMMY/SOME_FLOAT_ARRAY", vals);
939 acc_someArray.read();
940 BOOST_CHECK_CLOSE(std::stod(acc_someArray), 2.82, 0.00001);
942 acc_someArray =
"-11.111";
943 acc_someArray.write();
944 vals = DoocsServerTestHelper::doocsGetArray<float>(
"//MYDUMMY/SOME_FLOAT_ARRAY");
945 for(
int i = 0; i < 5; i++) {
947 BOOST_CHECK_CLOSE(vals[i], -11.111, 0.00001);
950 BOOST_CHECK_CLOSE(vals[i], 2.82 * (i + 1), 0.00001);
1008 ChimeraTK::Device device;
1011 ChimeraTK::Device device_cached;
1014 std::vector<ChimeraTK::RegisterCatalogue> catalogueList2;
1015 catalogueList2.push_back(device.getRegisterCatalogue());
1016 catalogueList2.push_back(device_cached.getRegisterCatalogue());
1018 for(
auto& catalogue : catalogueList2) {
1020 BOOST_TEST(catalogue.getNumberOfRegisters() > 13);
1023 BOOST_TEST(catalogue.hasRegister(
"SOME_INT"));
1024 BOOST_TEST(catalogue.hasRegister(
"SOME_FLOAT"));
1025 BOOST_TEST(catalogue.hasRegister(
"SOME_DOUBLE"));
1026 BOOST_TEST(catalogue.hasRegister(
"SOME_STRING"));
1027 BOOST_TEST(catalogue.hasRegister(
"SOME_BIT"));
1028 BOOST_TEST(catalogue.hasRegister(
"SOME_INT_ARRAY"));
1029 BOOST_TEST(catalogue.hasRegister(
"SOME_SHORT_ARRAY"));
1030 BOOST_TEST(catalogue.hasRegister(
"SOME_LONG_ARRAY"));
1031 BOOST_TEST(catalogue.hasRegister(
"SOME_FLOAT_ARRAY"));
1032 BOOST_TEST(catalogue.hasRegister(
"SOME_DOUBLE_ARRAY"));
1033 BOOST_TEST(catalogue.hasRegister(
"SOME_SPECTRUM"));
1034 BOOST_TEST(catalogue.hasRegister(
"SOME_IFFF/I"));
1035 BOOST_TEST(catalogue.hasRegister(
"SOME_IFFF/F1"));
1036 BOOST_TEST(catalogue.hasRegister(
"SOME_IFFF/F2"));
1037 BOOST_TEST(catalogue.hasRegister(
"SOME_IFFF/F3"));
1040 auto r1 = catalogue.getRegister(
"SOME_INT");
1041 BOOST_TEST(r1.getRegisterName() ==
"SOME_INT");
1042 BOOST_TEST(r1.getNumberOfElements() == 1);
1043 BOOST_TEST(r1.getNumberOfChannels() == 1);
1044 BOOST_TEST(r1.getNumberOfDimensions() == 0);
1045 BOOST_TEST(not r1.getSupportedAccessModes().has(ChimeraTK::AccessMode::wait_for_new_data));
1047 auto r2 = catalogue.getRegister(
"SOME_STRING");
1048 BOOST_TEST(r2.getRegisterName() ==
"SOME_STRING");
1049 BOOST_TEST(r2.getNumberOfElements() == 1);
1050 BOOST_TEST(r2.getNumberOfChannels() == 1);
1051 BOOST_TEST(r2.getNumberOfDimensions() == 0);
1052 BOOST_TEST(not r2.getSupportedAccessModes().has(ChimeraTK::AccessMode::wait_for_new_data));
1054 auto r3 = catalogue.getRegister(
"SOME_INT_ARRAY");
1055 BOOST_TEST(r3.getRegisterName() ==
"SOME_INT_ARRAY");
1056 BOOST_TEST(r3.getNumberOfElements() == 42);
1057 BOOST_TEST(r3.getNumberOfChannels() == 1);
1058 BOOST_TEST(r3.getNumberOfDimensions() == 1);
1059 BOOST_TEST(not r3.getSupportedAccessModes().has(ChimeraTK::AccessMode::wait_for_new_data));
1061 auto r4 = catalogue.getRegister(
"SOME_FLOAT_ARRAY");
1062 BOOST_TEST(r4.getRegisterName() ==
"SOME_FLOAT_ARRAY");
1063 BOOST_TEST(r4.getNumberOfElements() == 5);
1064 BOOST_TEST(r4.getNumberOfChannels() == 1);
1065 BOOST_TEST(r4.getNumberOfDimensions() == 1);
1066 BOOST_TEST(not r4.getSupportedAccessModes().has(ChimeraTK::AccessMode::wait_for_new_data));
1068 auto r5 = catalogue.getRegister(
"SOME_SPECTRUM");
1069 BOOST_TEST(r5.getRegisterName() ==
"SOME_SPECTRUM");
1070 BOOST_TEST(r5.getNumberOfElements() == 100);
1071 BOOST_TEST(r5.getNumberOfChannels() == 1);
1072 BOOST_TEST(r5.getNumberOfDimensions() == 1);
1073 BOOST_TEST(not r5.getSupportedAccessModes().has(ChimeraTK::AccessMode::wait_for_new_data));
1075 auto r6 = catalogue.getRegister(
"SOME_ZMQINT");
1076 BOOST_TEST(r6.getRegisterName() ==
"SOME_ZMQINT");
1077 BOOST_TEST(r6.getNumberOfElements() == 1);
1078 BOOST_TEST(r6.getNumberOfChannels() == 1);
1079 BOOST_TEST(r6.getNumberOfDimensions() == 0);
1080 BOOST_TEST(r6.getSupportedAccessModes().has(ChimeraTK::AccessMode::wait_for_new_data));
1082 auto r7 = catalogue.getRegister(
"SOME_IIII");
1083 BOOST_TEST(r7.getRegisterName() ==
"SOME_IIII");
1084 BOOST_TEST(r7.getNumberOfElements() == 4);
1085 BOOST_TEST(r7.getNumberOfChannels() == 1);
1086 BOOST_TEST(r7.getNumberOfDimensions() == 1);
1087 BOOST_TEST(not r7.getSupportedAccessModes().has(ChimeraTK::AccessMode::wait_for_new_data));
1089 auto regI = catalogue.getRegister(
"SOME_IFFF/I");
1090 auto regF1 = catalogue.getRegister(
"SOME_IFFF/F1");
1091 auto regF2 = catalogue.getRegister(
"SOME_IFFF/F2");
1092 auto regF3 = catalogue.getRegister(
"SOME_IFFF/F3");
1093 BOOST_TEST(regI.getDataDescriptor().isIntegral());
1094 BOOST_TEST(regI.getDataDescriptor().isSigned());
1095 BOOST_TEST(regI.getDataDescriptor().nDigits() == 11);
1096 BOOST_TEST(!regF1.getDataDescriptor().isIntegral());
1097 BOOST_TEST(regF1.getDataDescriptor().isSigned());
1098 BOOST_TEST(!regF2.getDataDescriptor().isIntegral());
1099 BOOST_TEST(regF2.getDataDescriptor().isSigned());
1100 BOOST_TEST(!regF3.getDataDescriptor().isIntegral());
1101 BOOST_TEST(regF3.getDataDescriptor().isSigned());
1104 device_cached.close();
1110 std::vector<ChimeraTK::RegisterCatalogue> catalogueList1;
1111 catalogueList1.push_back(device.getRegisterCatalogue());
1112 catalogueList1.push_back(device_cached.getRegisterCatalogue());
1114 for(
auto& catalogue : catalogueList1) {
1116 BOOST_TEST(catalogue.getNumberOfRegisters() > 13);
1119 BOOST_TEST(catalogue.hasRegister(
"MYDUMMY/SOME_INT"));
1120 BOOST_TEST(catalogue.hasRegister(
"MYDUMMY/SOME_ZMQINT"));
1121 BOOST_TEST(catalogue.hasRegister(
"DUMMY._SVR/SVR.BPN"));
1122 BOOST_TEST(catalogue.hasRegister(
"MYDUMMY/SOME_IFFF/I"));
1123 BOOST_TEST(catalogue.hasRegister(
"MYDUMMY/SOME_IFFF/F1"));
1124 BOOST_TEST(catalogue.hasRegister(
"MYDUMMY/SOME_IFFF/F2"));
1125 BOOST_TEST(catalogue.hasRegister(
"MYDUMMY/SOME_IFFF/F3"));
1128 auto r8 = catalogue.getRegister(
"MYDUMMY/SOME_INT");
1129 BOOST_TEST(r8.getRegisterName() ==
"MYDUMMY/SOME_INT");
1130 BOOST_TEST(r8.getNumberOfElements() == 1);
1131 BOOST_TEST(r8.getNumberOfChannels() == 1);
1132 BOOST_TEST(r8.getNumberOfDimensions() == 0);
1133 BOOST_TEST(not r8.getSupportedAccessModes().has(ChimeraTK::AccessMode::wait_for_new_data));
1135 auto r9 = catalogue.getRegister(
"DUMMY._SVR/SVR.BPN");
1136 BOOST_TEST(r9.getRegisterName() ==
"DUMMY._SVR/SVR.BPN");
1137 BOOST_TEST(r9.getNumberOfElements() == 1);
1138 BOOST_TEST(r9.getNumberOfChannels() == 1);
1139 BOOST_TEST(r9.getNumberOfDimensions() == 0);
1140 BOOST_TEST(not r9.getSupportedAccessModes().has(ChimeraTK::AccessMode::wait_for_new_data));
1142 auto r10 = catalogue.getRegister(
"MYDUMMY/SOME_ZMQINT");
1143 BOOST_TEST(r10.getRegisterName() ==
"MYDUMMY/SOME_ZMQINT");
1144 BOOST_TEST(r10.getNumberOfElements() == 1);
1145 BOOST_TEST(r10.getNumberOfChannels() == 1);
1146 BOOST_TEST(r10.getNumberOfDimensions() == 0);
1147 BOOST_TEST(r10.getSupportedAccessModes().has(ChimeraTK::AccessMode::wait_for_new_data));
1149 auto regI = catalogue.getRegister(
"MYDUMMY/SOME_IFFF/I");
1150 auto regF1 = catalogue.getRegister(
"MYDUMMY/SOME_IFFF/F1");
1151 auto regF2 = catalogue.getRegister(
"MYDUMMY/SOME_IFFF/F2");
1152 auto regF3 = catalogue.getRegister(
"MYDUMMY/SOME_IFFF/F3");
1153 BOOST_TEST(regI.getDataDescriptor().isIntegral());
1154 BOOST_TEST(regI.getDataDescriptor().isSigned());
1155 BOOST_TEST(regI.getDataDescriptor().nDigits() == 11);
1156 BOOST_TEST(!regF1.getDataDescriptor().isIntegral());
1157 BOOST_TEST(regF1.getDataDescriptor().isSigned());
1158 BOOST_TEST(!regF2.getDataDescriptor().isIntegral());
1159 BOOST_TEST(regF2.getDataDescriptor().isSigned());
1160 BOOST_TEST(!regF3.getDataDescriptor().isIntegral());
1161 BOOST_TEST(regF3.getDataDescriptor().isSigned());
1164 device_cached.close();
1366 ChimeraTK::Device device;
1368 auto catalogue = device.getRegisterCatalogue();
1371 DoocsServerTestHelper::runUpdate();
1374 auto eqfct =
reinterpret_cast<eq_dummy*
>(find_device(
"MYDUMMY"));
1377 BOOST_TEST(device.readDeviceInfo() ==
"DOOCS server address: doocs://localhost:" +
DoocsLauncher::rpc_no +
"/F/D");
1379 for(std::string param : {
"SOME_INT",
"SOME_FLOAT",
"SOME_BIT",
"SOME_INT_ARRAY",
"SOME_SHORT_ARRAY",
1380 "SOME_LONG_ARRAY",
"SOME_FLOAT_ARRAY",
"SOME_DOUBLE_ARRAY",
"SOME_SPECTRUM",
"SOME_IIII",
"SOME_IFFF"}) {
1381 auto path = RegisterPath(
"MYDUMMY/" + param +
"/eventId");
1382 BOOST_TEST(catalogue.hasRegister(path));
1384 auto regInfo = catalogue.getRegister(path);
1385 BOOST_TEST(regInfo.isReadable());
1386 BOOST_TEST(!regInfo.isWriteable());
1387 BOOST_CHECK_EQUAL(regInfo.getNumberOfElements(), 1);
1388 BOOST_CHECK_EQUAL(regInfo.getNumberOfChannels(), 1);
1389 BOOST_CHECK_EQUAL(regInfo.getNumberOfDimensions(), 0);
1390 auto descriptor = regInfo.getDataDescriptor();
1391 BOOST_TEST(descriptor.fundamentalType() == ChimeraTK::DataDescriptor::FundamentalType::numeric);
1392 BOOST_CHECK_EQUAL(descriptor.nDigits(), 20);
1393 BOOST_TEST(descriptor.isSigned());
1394 BOOST_TEST(descriptor.isIntegral());
1396 auto acc1 = device.getScalarRegisterAccessor<int64_t>(path);
1398 BOOST_CHECK_EQUAL(
static_cast<int64_t
>(acc1), eqfct->counter - 1);
1399 BOOST_CHECK_EQUAL(acc1.isReadOnly(),
true);
1400 BOOST_CHECK_EQUAL(acc1.isWriteable(),
false);
1401 BOOST_CHECK_EQUAL(acc1.isReadable(),
true);
1402 BOOST_CHECK_THROW(acc1.write(), ChimeraTK::logic_error);
1404 auto acc2 = device.getScalarRegisterAccessor<std::string>(path);
1406 BOOST_CHECK_EQUAL(
static_cast<std::string
>(acc2), std::to_string(eqfct->counter - 1));
1407 BOOST_CHECK_EQUAL(acc2.isReadOnly(),
true);
1408 BOOST_CHECK_EQUAL(acc2.isWriteable(),
false);
1409 BOOST_CHECK_EQUAL(acc2.isReadable(),
true);
1410 BOOST_CHECK_THROW(acc2.write(), ChimeraTK::logic_error);
1418 auto acc1 = device.getScalarRegisterAccessor<int64_t>(
"MYDUMMY/UNSUPPORTED_DATA_TYPE/eventId");
1419 BOOST_TEST(acc1.isInitialised());
1422 DoocsServerTestHelper::runUpdate();
1424 auto path = RegisterPath(
"MYDUMMY/SOME_ZMQINT/eventId");
1425 BOOST_TEST(catalogue.hasRegister(path));
1426 auto acc2 = device.getScalarRegisterAccessor<int64_t>(path);
1428 BOOST_CHECK_EQUAL(
static_cast<int64_t
>(acc2), eqfct->counter - 1);
1429 BOOST_CHECK_EQUAL(acc2.isReadOnly(),
true);
1430 BOOST_CHECK_EQUAL(acc2.isWriteable(),
false);
1431 BOOST_CHECK_EQUAL(acc2.isReadable(),
true);
1432 BOOST_CHECK_THROW(acc2.write(), ChimeraTK::logic_error);
1440 ChimeraTK::Device device;
1442 auto catalogue = device.getRegisterCatalogue();
1445 DoocsServerTestHelper::runUpdate();
1448 auto eqfct =
reinterpret_cast<eq_dummy*
>(find_device(
"MYDUMMY"));
1451 BOOST_TEST(device.readDeviceInfo() ==
"DOOCS server address: doocs://localhost:" +
DoocsLauncher::rpc_no +
"/F/D");
1453 for(std::string param : {
"SOME_INT",
"SOME_FLOAT",
"SOME_BIT",
"SOME_INT_ARRAY",
"SOME_SHORT_ARRAY",
1454 "SOME_LONG_ARRAY",
"SOME_FLOAT_ARRAY",
"SOME_DOUBLE_ARRAY",
"SOME_SPECTRUM",
"SOME_IIII",
"SOME_IFFF"}) {
1455 auto path = RegisterPath(
"MYDUMMY/" + param +
"/timeStamp");
1456 BOOST_TEST(catalogue.hasRegister(path));
1458 auto regInfo = catalogue.getRegister(path);
1459 BOOST_TEST(regInfo.isReadable());
1460 BOOST_TEST(!regInfo.isWriteable());
1461 BOOST_CHECK_EQUAL(regInfo.getNumberOfElements(), 1);
1462 BOOST_CHECK_EQUAL(regInfo.getNumberOfChannels(), 1);
1463 BOOST_CHECK_EQUAL(regInfo.getNumberOfDimensions(), 0);
1464 auto descriptor = regInfo.getDataDescriptor();
1465 BOOST_TEST(descriptor.fundamentalType() == ChimeraTK::DataDescriptor::FundamentalType::numeric);
1466 BOOST_CHECK_EQUAL(descriptor.nDigits(), 20);
1467 BOOST_TEST(descriptor.isSigned());
1468 BOOST_TEST(descriptor.isIntegral());
1470 auto acc1 = device.getScalarRegisterAccessor<int64_t>(path);
1472 BOOST_CHECK_EQUAL(
static_cast<int64_t
>(acc1), eqfct->startTime - 1);
1473 BOOST_CHECK_EQUAL(acc1.isReadOnly(),
true);
1474 BOOST_CHECK_EQUAL(acc1.isWriteable(),
false);
1475 BOOST_CHECK_EQUAL(acc1.isReadable(),
true);
1476 BOOST_CHECK_THROW(acc1.write(), ChimeraTK::logic_error);
1478 auto acc2 = device.getScalarRegisterAccessor<std::string>(path);
1480 BOOST_CHECK_EQUAL(
static_cast<std::string
>(acc2), std::to_string(eqfct->startTime - 1));
1481 BOOST_CHECK_EQUAL(acc2.isReadOnly(),
true);
1482 BOOST_CHECK_EQUAL(acc2.isWriteable(),
false);
1483 BOOST_CHECK_EQUAL(acc2.isReadable(),
true);
1484 BOOST_CHECK_THROW(acc2.write(), ChimeraTK::logic_error);
1492 auto acc1 = device.getScalarRegisterAccessor<int64_t>(
"MYDUMMY/UNSUPPORTED_DATA_TYPE/timeStamp");
1493 BOOST_TEST(acc1.isInitialised());
1496 DoocsServerTestHelper::runUpdate();
1498 auto path = RegisterPath(
"MYDUMMY/SOME_ZMQINT/timeStamp");
1499 BOOST_TEST(catalogue.hasRegister(path));
1500 auto acc2 = device.getScalarRegisterAccessor<int64_t>(path);
1502 BOOST_CHECK_EQUAL(
static_cast<int64_t
>(acc2), eqfct->startTime - 1);
1503 BOOST_CHECK_EQUAL(acc2.isReadOnly(),
true);
1504 BOOST_CHECK_EQUAL(acc2.isWriteable(),
false);
1505 BOOST_CHECK_EQUAL(acc2.isReadable(),
true);
1506 BOOST_CHECK_THROW(acc2.write(), ChimeraTK::logic_error);
1514 ChimeraTK::Device device;
1516 auto catalogue = device.getRegisterCatalogue();
1517 auto eqfct =
reinterpret_cast<eq_dummy*
>(find_device(
"MYDUMMY"));
1519 auto acc1 = device.getScalarRegisterAccessor<
int>(
"MYDUMMY/SOME_INT");
1520 auto acc2 = device.getScalarRegisterAccessor<
float>(
"MYDUMMY/SOME_FLOAT");
1521 auto acc1_id = device.getScalarRegisterAccessor<int64_t>(
"MYDUMMY/SOME_INT/eventId");
1522 auto acc2_id = device.getScalarRegisterAccessor<int64_t>(
"MYDUMMY/SOME_FLOAT/eventId");
1530 DoocsServerTestHelper::runUpdate();
1537 BOOST_TEST(acc1.getVersionNumber() != ChimeraTK::VersionNumber{nullptr});
1538 BOOST_TEST(acc2.getVersionNumber() != ChimeraTK::VersionNumber{nullptr});
1541 BOOST_TEST(acc1_id == 0);
1542 BOOST_TEST(acc2_id == 0);
1544 eqfct->counter = id;
1549 DoocsServerTestHelper::runUpdate();
1556 BOOST_CHECK_MESSAGE(acc1.getVersionNumber() == acc2.getVersionNumber(),
1557 static_cast<std::string
>(acc1.getVersionNumber()) +
" should be equal to " +
1558 static_cast<std::string
>(acc2.getVersionNumber()));
1559 BOOST_CHECK_MESSAGE(acc1.getVersionNumber() == acc1_id.getVersionNumber(),
1560 static_cast<std::string
>(acc1.getVersionNumber()) +
" should be equal to " +
1561 static_cast<std::string
>(acc1_id.getVersionNumber()));
1562 BOOST_CHECK_MESSAGE(acc2.getVersionNumber() == acc2_id.getVersionNumber(),
1563 static_cast<std::string
>(acc2.getVersionNumber()) +
" should be equal to " +
1564 static_cast<std::string
>(acc2_id.getVersionNumber()));
1565 BOOST_CHECK_EQUAL(acc1_id,
id);
1566 BOOST_CHECK_EQUAL(acc2_id,
id);
1569 DoocsServerTestHelper::runUpdate();
1573 BOOST_CHECK_MESSAGE(acc1.getVersionNumber() != acc2.getVersionNumber(),
1574 static_cast<std::string
>(acc1.getVersionNumber()) +
" should not be equal to " +
1575 static_cast<std::string
>(acc2.getVersionNumber()));
1579 BOOST_CHECK_MESSAGE(acc1.getVersionNumber() == acc2.getVersionNumber(),
1580 static_cast<std::string
>(acc1.getVersionNumber()) +
" should be equal to " +
1581 static_cast<std::string
>(acc2.getVersionNumber()));
1585 VersionNumber someVersionBeforeOpeningSecondDevice;
1586 ChimeraTK::Device device2;
1588 auto acc3 = device2.getScalarRegisterAccessor<
int>(
"SOME_INT");
1590 BOOST_CHECK_MESSAGE(acc3.getVersionNumber() > someVersionBeforeOpeningSecondDevice,
1591 static_cast<std::string
>(acc3.getVersionNumber()) +
" should be greater than " +
1592 static_cast<std::string
>(someVersionBeforeOpeningSecondDevice));
1596 VersionNumber lastVersion = acc3.getVersionNumber();
1597 for(
size_t i = 0; i < 3; ++i) {
1598 DoocsServerTestHelper::runUpdate();
1601 BOOST_CHECK_MESSAGE(acc3.getVersionNumber() > lastVersion,
1602 static_cast<std::string
>(acc3.getVersionNumber()) +
" should be greater than " +
1603 static_cast<std::string
>(lastVersion));
1604 BOOST_CHECK_MESSAGE(acc3.getVersionNumber() == acc2.getVersionNumber(),
1605 static_cast<std::string
>(acc3.getVersionNumber()) +
" should be equal to " +
1606 static_cast<std::string
>(acc2.getVersionNumber()));
1607 lastVersion = acc3.getVersionNumber();
1611 device2.setException(
"Test Exception");
1614 DoocsServerTestHelper::runUpdate();
1616 BOOST_CHECK_MESSAGE(acc2.getVersionNumber() > lastVersion,
1617 static_cast<std::string
>(acc2.getVersionNumber()) +
" should be greater than " +
1618 static_cast<std::string
>(lastVersion));
1619 lastVersion = acc2.getVersionNumber();
1622 someVersionBeforeOpeningSecondDevice = {};
1625 BOOST_CHECK_MESSAGE(acc3.getVersionNumber() > someVersionBeforeOpeningSecondDevice,
1626 static_cast<std::string
>(acc3.getVersionNumber()) +
" should be greater than " +
1627 static_cast<std::string
>(someVersionBeforeOpeningSecondDevice));
1630 DoocsServerTestHelper::runUpdate();
1633 BOOST_CHECK_MESSAGE(acc3.getVersionNumber() > lastVersion,
1634 static_cast<std::string
>(acc3.getVersionNumber()) +
" should be greater than " +
1635 static_cast<std::string
>(lastVersion));
1636 BOOST_CHECK_MESSAGE(acc3.getVersionNumber() == acc2.getVersionNumber(),
1637 static_cast<std::string
>(acc3.getVersionNumber()) +
" should be equal to " +
1638 static_cast<std::string
>(acc2.getVersionNumber()));
1639 lastVersion = acc3.getVersionNumber();
1646 auto id1 = eqfct->counter;
1647 DoocsServerTestHelper::runUpdate();
1649 auto ver1 = acc3.getVersionNumber();
1650 DoocsServerTestHelper::runUpdate();
1652 auto ver2 = acc3.getVersionNumber();
1655 BOOST_CHECK_MESSAGE(acc1.getVersionNumber() == ver2,
1656 static_cast<std::string
>(acc1.getVersionNumber()) +
" should be equal to " +
static_cast<std::string
>(ver2));
1657 BOOST_TEST(acc1.dataValidity() == DataValidity::ok);
1659 eqfct->counter = id1;
1660 DoocsServerTestHelper::runUpdate();
1663 BOOST_CHECK_MESSAGE(acc2.getVersionNumber() == ver1,
1664 static_cast<std::string
>(acc2.getVersionNumber()) +
" should be equal to " +
static_cast<std::string
>(ver1));
1665 BOOST_TEST(acc2.dataValidity() == DataValidity::ok);
1669 BOOST_CHECK_MESSAGE(acc1.getVersionNumber() == ver2,
1670 static_cast<std::string
>(acc1.getVersionNumber()) +
" should be equal to " +
static_cast<std::string
>(ver2));
1671 BOOST_TEST(acc1.dataValidity() == DataValidity::ok);
1677 DoocsServerTestHelper::
1679 DoocsServerTestHelper::runUpdate();
1682 auto lastRegularAcc1Version = acc1.getVersionNumber();
1684 int64_t lastRegularEventId = acc1_id;
1685 BOOST_CHECK_MESSAGE(acc1.getVersionNumber() == acc1_id.getVersionNumber(),
1686 static_cast<std::string
>(acc1.getVersionNumber()) +
" should be equal to " +
1687 static_cast<std::string
>(acc1_id.getVersionNumber()));
1690 auto idAfterZero = eqfct->counter;
1692 DoocsServerTestHelper::runUpdate();
1697 auto acc1VersionForId0 = acc1.getVersionNumber();
1698 auto acc1_idVersionForId0 = acc1_id.getVersionNumber();
1699 BOOST_TEST(acc1.getVersionNumber() > lastRegularAcc1Version);
1700 BOOST_TEST(acc1_id.getVersionNumber() > lastRegularAcc1Version);
1701 BOOST_CHECK_EQUAL(acc1_id, 0);
1705 eqfct->counter = lastRegularEventId;
1706 DoocsServerTestHelper::runUpdate();
1710 BOOST_CHECK_MESSAGE(acc1.getVersionNumber() == acc1VersionForId0,
1711 static_cast<std::string
>(acc1.getVersionNumber()) +
" should be equal to " +
1712 static_cast<std::string
>(acc1VersionForId0));
1713 BOOST_CHECK_MESSAGE(acc1_id.getVersionNumber() == acc1_idVersionForId0,
1714 static_cast<std::string
>(acc1_id.getVersionNumber()) +
" should be equal to " +
1715 static_cast<std::string
>(acc1_idVersionForId0));
1716 BOOST_CHECK_EQUAL(acc1_id, lastRegularEventId);
1721 BOOST_CHECK_MESSAGE(acc2.getVersionNumber() == lastRegularAcc1Version,
1722 static_cast<std::string
>(acc2.getVersionNumber()) +
" should be equal to " +
1723 static_cast<std::string
>(lastRegularAcc1Version));
1724 BOOST_CHECK_MESSAGE(acc2_id.getVersionNumber() == lastRegularAcc1Version,
1725 static_cast<std::string
>(acc2_id.getVersionNumber()) +
" should be equal to " +
1726 static_cast<std::string
>(lastRegularAcc1Version));
1727 BOOST_CHECK_EQUAL(acc2_id, lastRegularEventId);
1730 DoocsServerTestHelper::runUpdate();
1734 BOOST_TEST(acc1.getVersionNumber() > acc1VersionForId0);
1736 BOOST_CHECK_MESSAGE(acc1.getVersionNumber() == acc1_id.getVersionNumber(),
1737 static_cast<std::string
>(acc1.getVersionNumber()) +
" should be equal to " +
1738 static_cast<std::string
>(acc1_id.getVersionNumber()));
1739 BOOST_CHECK_EQUAL(acc1_id, idAfterZero);