package fixture; import java.io.*; import environment.RuntimeEnvironment; import interpreter.*; public class LispInterpreterFixture { private ByteArrayOutputStream outputStream; private RuntimeEnvironment environment; private LispInterpreter interpreter; public LispInterpreterFixture() throws IOException { this.outputStream = new ByteArrayOutputStream(); this.environment = RuntimeEnvironment.getInstance(); this.interpreter = buildInterpreter(); } private LispInterpreter buildInterpreter() { LispInterpreterBuilder builder = LispInterpreterBuilderImpl.getInstance(); builder.setInputName("fitnesse"); builder.setOutput(new PrintStream(outputStream)); builder.setErrorOutput(new PrintStream(outputStream)); builder.setNotInteractive(); builder.setTerminationFunction(() -> System.exit(0)); builder.setErrorTerminationFunction(() -> System.exit(1)); return builder.build(); } public void input(String input) throws IOException { environment.setInput(new ByteArrayInputStream(input.getBytes())); interpreter.interpret(); } public String output() { String output = outputStream.toString(); discardOutput(); return output; } public void discardOutput() { outputStream.reset(); } }