BOOST_CHECK_EQUAL( Signal::USR1 , proc.exitCode()>>8 );
} // eo SignaledProcessTermination
+/**
+ * fork an echo subprocess and read back the output. Directly use ProcessImplementation without helper class.
+ */
+BOOST_AUTO_TEST_CASE(DirectProcessImplementationTestEcho)
+{
+ DOUT("enter SimpleProcessTestEcho");
+ bool res;
+ BOOST_REQUIRE(backend);
+
+ ProcessImplementation proc(
+ "/bin/echo",
+ TransientPushBackFiller<std::string, std::vector >()("Eine")("Zeichenkette")
+ );
+
+ res= proc.startProcess();
+ BOOST_CHECK_EQUAL(true, res);
+
+ res= backend->doOneStep(200);
+ BOOST_CHECK_EQUAL(true, res);
+ for(int i=20; i-->0 && (proc.processState()!= ProcessState::stopped || !proc.eof());)
+ {
+ backend->doOneStep(10);
+ }
+
+ BOOST_CHECK_EQUAL( ProcessState(ProcessState::stopped), proc.processState() );
+ BOOST_CHECK_EQUAL( true, proc.eof() );
+ BOOST_CHECK_EQUAL( 0, proc.exitCode() );
+ BOOST_CHECK_EQUAL( std::string("Eine Zeichenkette\n"), proc.getInput());
+ BOOST_CHECK_EQUAL( 5, proc.shortenInput(5));
+ BOOST_CHECK_EQUAL( std::string("Zeichenkette\n"), proc.getInput());
+ BOOST_CHECK_EQUAL( true, proc.inputAvailable());
+ BOOST_CHECK_EQUAL( std::string("Zeichenkette\n"), proc.getInputClear());
+ BOOST_CHECK_EQUAL( false, proc.inputAvailable());
+} // eo SimpleProcessTestEcho
BOOST_AUTO_TEST_CASE(CallOut1)