59 BOOST_CHECK(info.getRegisterName() ==
"/SingleWord");
60 BOOST_CHECK(info.getNumberOfElements() == 1);
61 BOOST_CHECK(info.getNumberOfChannels() == 1);
62 BOOST_CHECK(info.getNumberOfDimensions() == 0);
65 BOOST_CHECK(info.getRegisterName() ==
"/FullArea");
66 BOOST_CHECK(info.getNumberOfElements() == 0x400);
67 BOOST_CHECK(info.getNumberOfChannels() == 1);
68 BOOST_CHECK(info.getNumberOfDimensions() == 1);
71 BOOST_CHECK(info.getRegisterName() ==
"/PartOfArea");
72 BOOST_CHECK(info.getNumberOfElements() == 20);
73 BOOST_CHECK(info.getNumberOfChannels() == 1);
74 BOOST_CHECK(info.getNumberOfDimensions() == 1);
77 target1.
open(
"PCIE3");
79 unsigned int nSamples = accTarget[3].size();
82 BOOST_CHECK(info.getRegisterName() ==
"/Channel3");
83 BOOST_CHECK(info.getNumberOfElements() == nSamples);
84 BOOST_CHECK(info.getNumberOfChannels() == 1);
85 BOOST_CHECK(info.getNumberOfDimensions() == 1);
88 BOOST_CHECK(info.getRegisterName() ==
"/Constant2");
89 BOOST_CHECK(info.getNumberOfElements() == 1);
90 BOOST_CHECK(info.getNumberOfChannels() == 1);
91 BOOST_CHECK(info.getNumberOfDimensions() == 0);
93 info = catalogue.
getRegister(
"/MyModule/SomeSubmodule/Variable");
94 BOOST_CHECK(info.getRegisterName() ==
"/MyModule/SomeSubmodule/Variable");
95 BOOST_CHECK(info.getNumberOfElements() == 1);
96 BOOST_CHECK(info.getNumberOfChannels() == 1);
97 BOOST_CHECK(info.getNumberOfDimensions() == 0);
114 BOOST_CHECK(
device.
read<
int>(
"Constant") == 42);
118 BOOST_CHECK(
device.
read<
int>(
"Constant") == 42);
122 BOOST_CHECK(acc.getNElements() == 1);
123 BOOST_CHECK(acc[0] == 0);
126 BOOST_CHECK(acc[0] == 42);
132 boost::shared_ptr<NDRegisterAccessor<int32_t>> impl, impl2, impl3;
133 impl = boost::dynamic_pointer_cast<NDRegisterAccessor<int32_t>>(acc.getHighLevelImplElement());
134 impl2 = boost::dynamic_pointer_cast<NDRegisterAccessor<int32_t>>(acc2.getHighLevelImplElement());
135 impl3 = boost::dynamic_pointer_cast<NDRegisterAccessor<int32_t>>(acc3.getHighLevelImplElement());
140 BOOST_CHECK(impl->mayReplaceOther(impl3) ==
false);
143 BOOST_CHECK_EQUAL(arrayConstant.getNElements(), 5);
144 BOOST_CHECK_EQUAL(arrayConstant[0], 0);
145 BOOST_CHECK_EQUAL(arrayConstant[1], 0);
146 BOOST_CHECK_EQUAL(arrayConstant[2], 0);
147 BOOST_CHECK_EQUAL(arrayConstant[3], 0);
148 BOOST_CHECK_EQUAL(arrayConstant[4], 0);
149 arrayConstant.read();
150 BOOST_CHECK_EQUAL(arrayConstant[0], 1111);
151 BOOST_CHECK_EQUAL(arrayConstant[1], 2222);
152 BOOST_CHECK_EQUAL(arrayConstant[2], 3333);
153 BOOST_CHECK_EQUAL(arrayConstant[3], 4444);
154 BOOST_CHECK_EQUAL(arrayConstant[4], 5555);
158 BOOST_CHECK_EQUAL(partOfArrayConstant.getNElements(), 2);
159 BOOST_CHECK_EQUAL(partOfArrayConstant[0], 0);
160 BOOST_CHECK_EQUAL(partOfArrayConstant[1], 0);
161 partOfArrayConstant.read();
162 BOOST_CHECK_EQUAL(partOfArrayConstant[0], 2222);
163 BOOST_CHECK_EQUAL(partOfArrayConstant[1], 3333);
180 BOOST_CHECK(acc.getVersionNumber() ==
VersionNumber(
nullptr));
181 BOOST_CHECK(acc2.getVersionNumber() ==
VersionNumber(
nullptr));
182 BOOST_CHECK(acc.getNElements() == 1);
183 BOOST_CHECK(acc[0] == 0);
184 BOOST_CHECK(acc2[0] == 0);
186 BOOST_CHECK(acc[0] == 2);
188 BOOST_CHECK(acc[0] == 3);
189 BOOST_CHECK(acc2[0] == 0);
192 BOOST_CHECK(acc[0] == 3);
193 BOOST_CHECK(acc2[0] == 3);
197 BOOST_CHECK_EQUAL(arrayVariable.getNElements(), 6);
198 BOOST_CHECK_EQUAL(arrayVariable[0], 0);
199 BOOST_CHECK_EQUAL(arrayVariable[1], 0);
200 BOOST_CHECK_EQUAL(arrayVariable[2], 0);
201 BOOST_CHECK_EQUAL(arrayVariable[3], 0);
202 BOOST_CHECK_EQUAL(arrayVariable[4], 0);
203 BOOST_CHECK_EQUAL(arrayVariable[5], 0);
204 arrayVariable.read();
205 BOOST_CHECK_EQUAL(arrayVariable[0], 11);
206 BOOST_CHECK_EQUAL(arrayVariable[1], 22);
207 BOOST_CHECK_EQUAL(arrayVariable[2], 33);
208 BOOST_CHECK_EQUAL(arrayVariable[3], 44);
209 BOOST_CHECK_EQUAL(arrayVariable[4], 55);
210 BOOST_CHECK_EQUAL(arrayVariable[5], 66);
211 arrayVariable = std::vector<int>({6, 5, 4, 3, 2, 1});
212 arrayVariable.write();
213 BOOST_CHECK_EQUAL(arrayVariable[0], 6);
214 BOOST_CHECK_EQUAL(arrayVariable[1], 5);
215 BOOST_CHECK_EQUAL(arrayVariable[2], 4);
216 BOOST_CHECK_EQUAL(arrayVariable[3], 3);
217 BOOST_CHECK_EQUAL(arrayVariable[4], 2);
218 BOOST_CHECK_EQUAL(arrayVariable[5], 1);
219 arrayVariable = std::vector<int>({0, 0, 0, 0, 0, 0});
220 arrayVariable.read();
221 BOOST_CHECK_EQUAL(arrayVariable[0], 6);
222 BOOST_CHECK_EQUAL(arrayVariable[1], 5);
223 BOOST_CHECK_EQUAL(arrayVariable[2], 4);
224 BOOST_CHECK_EQUAL(arrayVariable[3], 3);
225 BOOST_CHECK_EQUAL(arrayVariable[4], 2);
226 BOOST_CHECK_EQUAL(arrayVariable[5], 1);
229 BOOST_CHECK_EQUAL(partOfArrayVariable.getNElements(), 3);
230 BOOST_CHECK_EQUAL(partOfArrayVariable[0], 0);
231 BOOST_CHECK_EQUAL(partOfArrayVariable[1], 0);
232 BOOST_CHECK_EQUAL(partOfArrayVariable[2], 0);
233 partOfArrayVariable.read();
234 BOOST_CHECK_EQUAL(partOfArrayVariable[0], 4);
235 BOOST_CHECK_EQUAL(partOfArrayVariable[1], 3);
236 BOOST_CHECK_EQUAL(partOfArrayVariable[2], 2);
237 partOfArrayVariable = std::vector<int>({42, 120, 31415});
238 partOfArrayVariable.write();
239 BOOST_CHECK_EQUAL(partOfArrayVariable[0], 42);
240 BOOST_CHECK_EQUAL(partOfArrayVariable[1], 120);
241 BOOST_CHECK_EQUAL(partOfArrayVariable[2], 31415);
242 partOfArrayVariable = std::vector<int>({0, 0, 0});
243 partOfArrayVariable.read();
244 BOOST_CHECK_EQUAL(partOfArrayVariable[0], 42);
245 BOOST_CHECK_EQUAL(partOfArrayVariable[1], 120);
246 BOOST_CHECK_EQUAL(partOfArrayVariable[2], 31415);
248 BOOST_CHECK_EQUAL(arrayVariable[0], 6);
249 BOOST_CHECK_EQUAL(arrayVariable[1], 5);
250 BOOST_CHECK_EQUAL(arrayVariable[2], 4);
251 BOOST_CHECK_EQUAL(arrayVariable[3], 3);
252 BOOST_CHECK_EQUAL(arrayVariable[4], 2);
253 BOOST_CHECK_EQUAL(arrayVariable[5], 1);
254 arrayVariable.read();
255 BOOST_CHECK_EQUAL(arrayVariable[0], 6);
256 BOOST_CHECK_EQUAL(arrayVariable[1], 5);
257 BOOST_CHECK_EQUAL(arrayVariable[2], 42);
258 BOOST_CHECK_EQUAL(arrayVariable[3], 120);
259 BOOST_CHECK_EQUAL(arrayVariable[4], 31415);
260 BOOST_CHECK_EQUAL(arrayVariable[5], 1);
343 std::vector<int> area(1024);
350 target1.
open(
"PCIE2");
353 BOOST_CHECK(!acc.isReadOnly());
354 BOOST_CHECK(acc.isReadable());
355 BOOST_CHECK(acc.isWriteable());
359 boost::shared_ptr<NDRegisterAccessor<int32_t>> impl, impl2;
360 impl = boost::dynamic_pointer_cast<NDRegisterAccessor<int32_t>>(acc.getHighLevelImplElement());
361 impl2 = boost::dynamic_pointer_cast<NDRegisterAccessor<int32_t>>(acc2.getHighLevelImplElement());
363 BOOST_CHECK(impl != impl2);
364 BOOST_CHECK(impl2->mayReplaceOther(impl) ==
false);
365 BOOST_CHECK(impl->mayReplaceOther(impl2) ==
false);
370 for(
int i = 0; i < 1024; i++) area[i] = 12345 + 3 * i;
371 target1.
write(
"ADC.AREA_DMAABLE", area);
373 for(
int i = 0; i < 1024; i++) BOOST_CHECK(acc[i] == 12345 + 3 * i);
375 for(
int i = 0; i < 1024; i++) area[i] = -876543210 + 42 * i;
376 target1.
write(
"ADC.AREA_DMAABLE", area);
378 for(
int i = 0; i < 1024; i++) BOOST_CHECK(acc[i] == -876543210 + 42 * i);
381 for(
int i = 0; i < 1024; i++) acc[i] = 12345 + 3 * i;
383 area = target1.
read<
int>(
"ADC.AREA_DMAABLE", 1024);
384 for(
int i = 0; i < 1024; i++) BOOST_CHECK(area[i] == 12345 + 3 * i);
386 for(
int i = 0; i < 1024; i++) acc[i] = -876543210 + 42 * i;
388 area = target1.
read<
int>(
"ADC.AREA_DMAABLE", 1024);
389 for(
int i = 0; i < 1024; i++) BOOST_CHECK(area[i] == -876543210 + 42 * i);
393 for(
auto it = acc.begin(); it != acc.end(); ++it) {
394 BOOST_CHECK(*it == -876543210 + 42 * index);
397 BOOST_CHECK(index == 1024);
401 for(
auto it = acc_const.
begin(); it != acc_const.
end(); ++it) {
402 BOOST_CHECK(*it == -876543210 + 42 * index);
405 BOOST_CHECK(index == 1024);
409 for(
auto it = acc.rbegin(); it != acc.rend(); ++it) {
411 BOOST_CHECK(*it == -876543210 + 42 * index);
413 BOOST_CHECK(index == 0);
417 for(
auto it = acc_const.
rbegin(); it != acc_const.
rend(); ++it) {
419 BOOST_CHECK(*it == -876543210 + 42 * index);
421 BOOST_CHECK(index == 0);
424 std::vector<int32_t> vec(1024);
426 for(
unsigned int i = 0; i < vec.size(); i++) {
427 BOOST_CHECK(vec[i] == -876543210 + 42 *
static_cast<signed>(i));
436 std::vector<int> area(1024);
443 target1.
open(
"PCIE2");
446 BOOST_CHECK(acc.isReadOnly() ==
false);
447 BOOST_CHECK(acc.isReadable());
448 BOOST_CHECK(acc.isWriteable());
452 for(
int i = 0; i < 20; i++) area[i + 10] = 12345 + 3 * i;
453 target1.
write(
"ADC.AREA_DMAABLE", area);
455 for(
int i = 0; i < 20; i++) BOOST_CHECK(acc[i] == 12345 + 3 * i);
457 for(
int i = 0; i < 20; i++) area[i + 10] = -876543210 + 42 * i;
458 target1.
write(
"ADC.AREA_DMAABLE", area);
460 for(
int i = 0; i < 20; i++) BOOST_CHECK(acc[i] == -876543210 + 42 * i);
464 for(
auto it = acc.begin(); it != acc.end(); ++it) {
465 BOOST_CHECK(*it == -876543210 + 42 * index);
468 BOOST_CHECK(index == 20);
472 for(
auto it = acc_const.
begin(); it != acc_const.
end(); ++it) {
473 BOOST_CHECK(*it == -876543210 + 42 * index);
476 BOOST_CHECK(index == 20);
480 for(
auto it = acc.rbegin(); it != acc.rend(); ++it) {
482 BOOST_CHECK(*it == -876543210 + 42 * index);
484 BOOST_CHECK(index == 0);
488 for(
auto it = acc_const.
rbegin(); it != acc_const.
rend(); ++it) {
490 BOOST_CHECK(*it == -876543210 + 42 * index);
492 BOOST_CHECK(index == 0);
495 for(
int i = 0; i < 20; i++) acc[i] = 24507 + 33 * i;
497 area = target1.
read<
int>(
"ADC.AREA_DMAABLE", 1024);
498 for(
int i = 0; i < 20; i++) BOOST_CHECK(area[i + 10] == 24507 + 33 * i);
506 std::vector<int> area(1024);
512 target1.
open(
"PCIE3");
519 boost::shared_ptr<NDRegisterAccessor<int32_t>> impl3, impl4, impl3_2;
520 impl3 = boost::dynamic_pointer_cast<NDRegisterAccessor<int32_t>>(acc3.getHighLevelImplElement());
521 impl4 = boost::dynamic_pointer_cast<NDRegisterAccessor<int32_t>>(acc4.getHighLevelImplElement());
522 impl3_2 = boost::dynamic_pointer_cast<NDRegisterAccessor<int32_t>>(acc3_2.getHighLevelImplElement());
523 BOOST_CHECK(impl3->mayReplaceOther(impl3_2) ==
true);
524 BOOST_CHECK(impl3->mayReplaceOther(impl4) ==
false);
527 unsigned int nSamples = accTarget[3].size();
528 BOOST_CHECK(accTarget[4].size() == nSamples);
529 BOOST_CHECK(acc3.getNElements() == nSamples);
530 BOOST_CHECK(acc4.getNElements() == nSamples);
533 for(
unsigned int i = 0; i < nSamples; i++) {
534 accTarget[3][i] = 3000 + i;
535 accTarget[4][i] = 4000 - i;
540 for(
unsigned int i = 0; i < nSamples; i++) {
547 for(
unsigned int i = 0; i < nSamples; i++) {
548 BOOST_CHECK(acc3[i] == (
signed)(3000 + i));
549 BOOST_CHECK(acc4[i] == 0);
552 for(
unsigned int i = 0; i < nSamples; i++) {
553 BOOST_CHECK(acc3[i] == (
signed)(3000 + i));
554 BOOST_CHECK(acc4[i] == (
signed)(4000 - i));
558 unsigned int idx = 0;
559 for(
auto it = acc3.begin(); it != acc3.end(); ++it) {
560 BOOST_CHECK(*it == (
signed)(3000 + idx));
563 BOOST_CHECK(idx == nSamples);
568 for(
auto it = acc3_const.
begin(); it != acc3_const.
end(); ++it) {
569 BOOST_CHECK(*it == (
signed)(3000 + idx));
572 BOOST_CHECK(idx == nSamples);
576 for(
auto it = acc3.rbegin(); it != acc3.rend(); ++it) {
578 BOOST_CHECK(*it == (
signed)(3000 + idx));
580 BOOST_CHECK(idx == 0);
584 for(
auto it = acc3_const.
rbegin(); it != acc3_const.
rend(); ++it) {
586 BOOST_CHECK(*it == (
signed)(3000 + idx));
588 BOOST_CHECK(idx == 0);
591 std::vector<int> someVector(nSamples);
592 acc3.swap(someVector);
593 for(
unsigned int i = 0; i < nSamples; i++) {
594 BOOST_CHECK(someVector[i] == (
signed)(3000 + i));
598 BOOST_CHECK(acc3.isReadOnly());
599 BOOST_CHECK(acc3.isReadable());
600 BOOST_CHECK(acc3.isWriteable() ==
false);
602 BOOST_CHECK(acc4.isReadOnly());
603 BOOST_CHECK(acc4.isReadable());
604 BOOST_CHECK(acc4.isWriteable() ==
false);
915 target.
open(
"PCIE2");
923 wordUserScaled.read();
924 BOOST_CHECK_CLOSE(
double(wordUserScaled), 2 * 4.2, 0.001);
928 wordUserScaled.read();
929 BOOST_CHECK_CLOSE(
double(wordUserScaled), 3 * 4.2, 0.001);
931 wordUserScaled = 10 / 4.2;
932 wordUserScaled.write();
934 BOOST_CHECK_EQUAL(
int(wordUser), 10);
936 wordUserScaled = 5.4 / 4.2;
937 wordUserScaled.write();
939 BOOST_CHECK_EQUAL(
int(wordUser), 5);
941 wordUserScaled = 3.6 / 4.2;
942 wordUserScaled.write();
944 BOOST_CHECK_EQUAL(
int(wordUser), 4);
946 wordUserScaled = -5.4 / 4.2;
947 wordUserScaled.write();
949 BOOST_CHECK_EQUAL(
int(wordUser), -5);
951 wordUserScaled = -3.6 / 4.2;
952 wordUserScaled.write();
954 BOOST_CHECK_EQUAL(
int(wordUser), -4);
961 wordUserScaledTwice.read();
962 BOOST_CHECK_CLOSE(
double(wordUserScaledTwice), 2 * 6, 0.001);
966 wordUserScaledTwice.read();
967 BOOST_CHECK_CLOSE(
double(wordUserScaledTwice), 3 * 6, 0.001);
969 wordUserScaledTwice = 10. / 6.;
970 wordUserScaledTwice.write();
972 BOOST_CHECK_EQUAL(
int(wordUser), 10);
978 BOOST_CHECK_EQUAL(area.getNElements(), 1024);
979 BOOST_CHECK_EQUAL(areaScaled.getNElements(), 1024);
981 for(
int i = 0; i < 1024; ++i) area[i] = 100 + i;
984 for(
int i = 0; i < 1024; ++i) BOOST_CHECK_CLOSE(areaScaled[i], (100 + i) * 0.5, 0.001);
986 for(
int i = 0; i < 1024; ++i) areaScaled[i] = (-100 + i) / 0.5;
989 for(
int i = 0; i < 1024; ++i) BOOST_CHECK_EQUAL(area[i], -100 + i);
1028 boost::shared_ptr<NDRegisterAccessor<int>> impl[6];
1029 for(
int i = 0; i < 6; i++) {
1035 for(
int i = 0; i < 6; i++) {
1036 BOOST_CHECK(impl[i]->getHardwareAccessingElements().size() == 1);
1037 for(
int k = i + 1; k < 6; k++) {
1038 BOOST_CHECK(impl[i]->getHardwareAccessingElements()[0] != impl[k]->getHardwareAccessingElements()[0]);
1044 for(
int i = 0; i < 6; i++) {
1049 BOOST_CHECK(impl[3]->getHardwareAccessingElements()[0] == impl[4]->getHardwareAccessingElements()[0]);
1050 BOOST_CHECK(impl[1]->getHardwareAccessingElements()[0] == impl[2]->getHardwareAccessingElements()[0]);
1053 BOOST_CHECK(impl[0]->getHardwareAccessingElements()[0] != impl[1]->getHardwareAccessingElements()[0]);
1054 BOOST_CHECK(impl[0]->getHardwareAccessingElements()[0] != impl[3]->getHardwareAccessingElements()[0]);
1055 BOOST_CHECK(impl[0]->getHardwareAccessingElements()[0] != impl[5]->getHardwareAccessingElements()[0]);
1056 BOOST_CHECK(impl[1]->getHardwareAccessingElements()[0] != impl[3]->getHardwareAccessingElements()[0]);
1057 BOOST_CHECK(impl[1]->getHardwareAccessingElements()[0] != impl[5]->getHardwareAccessingElements()[0]);
1058 BOOST_CHECK(impl[3]->getHardwareAccessingElements()[0] != impl[5]->getHardwareAccessingElements()[0]);
1064 target1.
open(
"PCIE2");
1065 target2.
open(
"PCIE3");
1072 for(
unsigned int i = 0; i <
t2.getNElements(); i++) {
1073 t2[i] = 67890 + 66 * signed(i);
1080 BOOST_CHECK(a[0][0] == 120);
1083 for(
unsigned int i = 0; i <
t2.getNElements(); i++) {
1084 BOOST_CHECK(a[1][i] == 67890 + 66 *
signed(i));
1087 BOOST_CHECK(a[2].getNElements() == 20);
1088 for(
unsigned int i = 0; i < a[2].
getNElements(); i++) {
1089 BOOST_CHECK(a[2][i] == 67890 + 66 *
signed(i + 10));
1092 BOOST_CHECK(a[5][0] == 42);
1095 for(
unsigned int i = 0; i < t3.getNChannels(); i++) {
1096 for(
unsigned int k = 0; k < t3[i].size(); k++) {
1097 t3[i][k] = signed(i * 10 + k);
1105 BOOST_CHECK(a[3].getNElements() == t3[3].size());
1106 for(
unsigned int i = 0; i < a[3].
getNElements(); i++) {
1107 BOOST_CHECK(a[3][i] == 3 * 10 +
signed(i));
1110 BOOST_CHECK(a[4].getNElements() == t3[4].size());
1111 for(
unsigned int i = 0; i < a[4].
getNElements(); i++) {
1112 BOOST_CHECK(a[4][i] == 4 * 10 +
signed(i));