70 std::vector<int32_t> ref(10);
72 std::cout <<
"***************************************************************************************" << std::endl;
73 std::cout <<
"==> testArrays" << std::endl;
75 TestApp app(
"testPythonWithArray");
78 auto ArrayIn1 = tf.
getArray<int32_t>(
"/SomeName/ArrayIn1");
79 auto ArrayIn2 = tf.
getArray<int32_t>(
"/SomeName/ArrayIn2");
80 auto ArrayInPoll = tf.
getArray<int32_t>(
"/SomeName/ArrayInPOLL");
81 auto ArrayInWB = tf.
getArray<int32_t>(
"/SomeName/ArrayInWB");
82 auto ArrayOut1 = tf.
getArray<int32_t>(
"/SomeName/ArrayOut1");
83 auto ArrayOut2 = tf.
getArray<int32_t>(
"/SomeName/ArrayOut2");
84 auto error = tf.
getScalar<std::string>(
"/SomeName/TestError");
85 auto error2 = tf.
getScalar<std::string>(
"/Foo/TestError");
92 ArrayInPoll = {42, 1};
94 ArrayInPoll = {43, 2};
101 for(
int i = 0; i < 10; ++i) ref[i] = 50 + 5 + i;
102 BOOST_TEST(std::vector<int32_t>(ArrayOut1) == ref, boost::test_tools::per_element());
104 ArrayIn2 = {2, 3, 4, 5, 6};
107 BOOST_TEST(ArrayOut2.readNonBlocking());
108 for(
int i = 0; i < 10; ++i) ref[i] = 2 + 3 + 4 + 5 + 6 + i;
109 BOOST_TEST(std::vector<int32_t>(ArrayOut2) == ref, boost::test_tools::per_element());
111 BOOST_TEST(ArrayInWB.readNonBlocking());
112 BOOST_TEST(std::vector<int32_t>(ArrayInWB) == std::vector<int32_t>({28}));
115 ArrayIn1 = {100, 20};
118 BOOST_TEST(ArrayOut1.readNonBlocking());
119 for(
int i = 0; i < 10; ++i) ref[i] = 100 + 20 + i;
120 BOOST_TEST(std::vector<int32_t>(ArrayOut1) == ref, boost::test_tools::per_element());
123 BOOST_TEST(error.readNonBlocking() ==
false);
124 BOOST_TEST(std::string(error) ==
"");
125 BOOST_TEST(error2.readNonBlocking() ==
false);
126 BOOST_TEST(std::string(error2) ==
"");
280 std::cout <<
"***************************************************************************************" << std::endl;
281 std::cout <<
"==> testReadAnyGroup" << std::endl;
286 auto result = tf.
getScalar<std::string>(
"/UserModule/testError");
287 auto in1 = tf.
getScalar<int32_t>(
"/UserModule/in1");
288 auto in2 = tf.
getArray<int32_t>(
"/UserModule/in2");
289 auto in3 = tf.
getScalar<int32_t>(
"/UserModule/in3");
290 auto out = tf.
getScalar<std::string>(
"/UserModule/output");
296 BOOST_CHECK(out.readNonBlocking());
297 BOOST_TEST(std::string(out) ==
"step1");
299 in2 = {24, 24, 24, 24};
302 BOOST_CHECK(out.readNonBlocking());
303 BOOST_CHECK(std::string(out) ==
"step2");
307 BOOST_CHECK(out.readNonBlocking());
308 BOOST_CHECK(std::string(out) ==
"step3");
312 BOOST_CHECK(out.readNonBlocking());
313 BOOST_CHECK(std::string(out) ==
"step4");
315 in2 = {16, 16, 16, 16};
318 BOOST_CHECK(out.readNonBlocking());
319 BOOST_CHECK(std::string(out) ==
"step5");
323 BOOST_CHECK(!out.readNonBlocking());
325 in2 = {26, 26, 26, 26};
328 BOOST_CHECK(out.readNonBlocking());
329 BOOST_CHECK(std::string(out) ==
"step6");
333 BOOST_CHECK(out.readNonBlocking());
334 BOOST_CHECK(std::string(out) ==
"step7");
336 BOOST_CHECK(!result.readNonBlocking());
337 BOOST_TEST(std::string(result) ==
"");
375 std::cout <<
"***************************************************************************************" << std::endl;
376 std::cout <<
"==> testPythonUserInputValidator" << std::endl;
382 tf.
setArrayDefault(
"/UserInputValidatorTestRunner/in2", std::vector<int>{10, 10, 10, 10, 10});
384 auto input = tf.
getScalar<
int>(
"/UserInputValidatorTestRunner/in1");
385 auto input2 = tf.
getArray<
int>(
"/UserInputValidatorTestRunner/in2");
386 auto errorFunctionCalled = tf.
getVoid(
"/UserInputValidatorTestRunner/errorFunctionCalled");
391 auto error = tf.
getScalar<std::string>(
"/UserInputValidatorTestRunner/TestError");
393 BOOST_TEST(errorFunctionCalled.readNonBlocking() ==
true);
394 BOOST_TEST(errorFunctionCalled.readNonBlocking() ==
true);
395 BOOST_TEST(error.readNonBlocking() ==
false);
396 BOOST_TEST(std::string(error) ==
"");
398 input.setAndWrite(8);
400 BOOST_TEST(!input.readLatest());
401 BOOST_TEST(error.readNonBlocking() ==
false);
402 BOOST_TEST(std::string(error) ==
"");
404 input.setAndWrite(10);
406 BOOST_TEST(input.readLatest());
407 BOOST_TEST(input == 8);
408 BOOST_TEST(errorFunctionCalled.readNonBlocking() ==
true);
409 BOOST_TEST(error.readNonBlocking() ==
false);
410 BOOST_TEST(std::string(error) ==
"");
412 input2 = std::vector{2, 2, 2, 2, 1};
415 BOOST_TEST(!input2.readLatest());
416 BOOST_TEST(errorFunctionCalled.readNonBlocking() ==
false);
417 BOOST_CHECK(
static_cast<const std::vector<int>&
>(input2) == std::vector<int>({2, 2, 2, 2, 1}));
418 BOOST_TEST(error.readNonBlocking() ==
false);
419 BOOST_TEST(std::string(error) ==
"");
421 input2 = std::vector{1, 2, 3, 4, 5};
424 BOOST_TEST(input2.readLatest());
425 BOOST_TEST(errorFunctionCalled.readNonBlocking() ==
true);
426 BOOST_CHECK(
static_cast<const std::vector<int>&
>(input2) == std::vector<int>({2, 2, 2, 2, 1}));
427 BOOST_TEST(error.readNonBlocking() ==
false);
428 BOOST_TEST(std::string(error) ==
"");
430 input2 = std::vector{9, 0, 0, 0, 0};
433 BOOST_TEST(input2.readLatest());
434 BOOST_TEST(errorFunctionCalled.readNonBlocking() ==
true);
435 BOOST_CHECK(
static_cast<const std::vector<int>&
>(input2) == std::vector<int>({2, 2, 2, 2, 1}));
436 BOOST_TEST(error.readNonBlocking() ==
false);
437 BOOST_TEST(std::string(error) ==
"");