49 lines
1.3 KiB
Java
49 lines
1.3 KiB
Java
|
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();
|
||
|
}
|
||
|
|
||
|
}
|