| 
				
			 | 
			
			 | 
			@@ -57,12 +57,11 @@ bool result; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			// Tests ///////////////////////////////////////////////////////////////////////
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			////////////////////////////////////////////////////////////////////////////////
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			bool
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			testIsDone() {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			bool testIsDone() {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  try {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    CodeDweller::ChildStream child(childName);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    CodeDweller::ChildStream child;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // Test exception if called out-of-order.
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    try {
 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -72,7 +71,9 @@ testIsDone() { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } catch (std::exception &e) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    child.run();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // Start the child.
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    child.open(childName);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if (child.isDone()) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      std::cout << "isDone() failure; returned true." << std::endl;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      return false;
 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -98,8 +99,50 @@ testIsDone() { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			bool
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			testResult() {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			bool testIsRunning() {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  try {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    CodeDweller::ChildStream child;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if (child.isRunning()) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      std::cout << "isRunning() failure; returned true before starting."
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                << std::endl;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      return false;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // Start the child.
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    child.open(childName);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if (!child.isRunning()) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      std::cout << "isRunning() failure; returned false." << std::endl;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      return false;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // Command the child to exit.
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    child << 'q';
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    child.flush();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // Sleep to let the child exit.
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    std::this_thread::sleep_for(std::chrono::milliseconds(100));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    child.close();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if (child.isRunning()) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      std::cout << "isRunning() failure; returned true after stopping."
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                << std::endl;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      return false;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } catch (std::exception &e) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    EXCEPTION_TERM("isRunning()");
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return false;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  return true;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			bool testResult() {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  try {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    std::vector<std::string> cmd;
 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -117,8 +160,6 @@ testResult() { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } catch (std::exception &e) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    child.run();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // Test exception if called while child is running.
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    try {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      (void) child.result();
 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -143,27 +184,24 @@ testResult() { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  return true;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			bool
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			testTerminate() {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			bool testClose() {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  // Test with no waiting.
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  try {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      CodeDweller::ChildStream child(childName);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      child.run();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      child.terminate();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      child.close();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } catch (std::exception &e) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    EXCEPTION_TERM("terminate() with no waiting");
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    EXCEPTION_TERM("close() with no waiting");
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return false;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  // Test with waiting.
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  try {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      CodeDweller::ChildStream child(childName);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      child.run();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      std::this_thread::sleep_for(std::chrono::milliseconds(100));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      child.terminate();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      child.close();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } catch (std::exception &e) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    EXCEPTION_TERM("terminate() with 100 ms waiting");
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    EXCEPTION_TERM("close() with 100 ms waiting");
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return false;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -175,19 +213,22 @@ testTerminate() { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  try {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      CodeDweller::ChildStream child(cmd);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      child.run();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      std::this_thread::sleep_for(std::chrono::milliseconds(100));
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      child.terminate();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      child.close();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } catch (std::exception &e) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    EXCEPTION_TERM("terminate() after child exits");
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    EXCEPTION_TERM("close() after child exits");
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return false;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  // Test exception thrown for out-of-order calling.
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  try {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      CodeDweller::ChildStream child(cmd);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      child.terminate();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      NO_EXCEPTION_TERM("terminate() called without run()");
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      CodeDweller::ChildStream child;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      child.close();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      NO_EXCEPTION_TERM("close() called without run()");
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      return false;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } catch (std::exception &e) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  }
 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -195,12 +236,11 @@ testTerminate() { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  return true;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			bool
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			testReaderWriter() {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			bool testReaderWriter() {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  try {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    size_t bufSize = 15;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    CodeDweller::ChildStream child(childName, bufSize);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    CodeDweller::ChildStream child(bufSize);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    std::ostringstream childOutput;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    std::vector<std::string> expectedChildOutput;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    char readChar;
 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -234,7 +274,7 @@ testReaderWriter() { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } catch (std::exception &e) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    child.run();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    child.open(childName);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // Write, read, put back, and reread each character.
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    for (std::string line : expectedChildOutput) {
 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -312,17 +352,12 @@ testReaderWriter() { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			bool
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			testReader() {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			bool testReader() {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  try {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    std::vector<std::string> cmd;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    cmd.push_back(childName);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    cmd.push_back("write");
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    size_t bufSize = 32;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    CodeDweller::ChildStream child(cmd, bufSize);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    CodeDweller::ChildStream child(bufSize);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // Test exception.
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    try {
 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -340,7 +375,12 @@ testReader() { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    std::string expectedChildOutput("This is a test");
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    char readChar;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    child.run();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    std::vector<std::string> cmd;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    cmd.push_back(childName);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    cmd.push_back("write");
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    child.open(cmd);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    child.exceptions(std::istream::badbit);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    child >> std::noskipws;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if (!child) {
 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -400,8 +440,7 @@ testReader() { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			bool
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			testBinaryRead() {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			bool testBinaryRead() {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  try {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    std::vector<std::string> cmd;
 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -409,9 +448,9 @@ testBinaryRead() { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    cmd.push_back(childName);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    size_t bufSize = 164;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    CodeDweller::ChildStream child(cmd, bufSize);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    CodeDweller::ChildStream child(bufSize);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    child.run();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    child.open(cmd);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // Write.
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    std::string childInput("abc");
 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -495,8 +534,7 @@ testBinaryRead() { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			bool
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			testNonBlockingRead() {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			bool testNonBlockingRead() {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  try {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    std::vector<std::string> cmd;
 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -506,8 +544,6 @@ testNonBlockingRead() { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    size_t bufSize = 16;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    CodeDweller::ChildStream child(cmd, bufSize);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    child.run();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // Check for available input with no input.
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if (child.numBytesAvailable() != 0) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      RETURN_FALSE("  numBytesAvailable() did not return expected 0");
 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -653,8 +689,9 @@ int main() | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  CodeDweller::ChildStream child(childName);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  RUN_TEST(testIsDone);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  RUN_TEST(testIsRunning);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  RUN_TEST(testResult);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  RUN_TEST(testTerminate);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  RUN_TEST(testClose);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  RUN_TEST(testReader);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  RUN_TEST(testReaderWriter);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  RUN_TEST(testBinaryRead);
 |