import java.io.ByteArrayOutputStream;
import java.io.OutputStream;
import java.io.PrintStream;


public class StandardOutputSandbox implements Runnable {
  static String NEW_LINE = System.getProperty("line.separator");
  private final Runnable runnable;
  private OutputStream outputStream;

  StandardOutputSandbox(Runnable runnable) {
    this.runnable = runnable;
  }

  public void run(){
    outputStream = new ByteArrayOutputStream();
    PrintStream printStream = new PrintStream(outputStream);
    System.setOut(printStream);
    runnable.run();
    PrintStream originalOut = System.out;
    System.setOut(originalOut);
  }

  String getProducedOutput() {
    return outputStream.toString();
  }
}