42 lines
1.3 KiB
Java
42 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 String evaluate(String input) throws IOException {
|
|
environment.setInput(new ByteArrayInputStream(input.getBytes()));
|
|
interpreter.interpret();
|
|
String output = outputStream.toString();
|
|
outputStream.reset();
|
|
|
|
return output.trim();
|
|
}
|
|
|
|
}
|