66 lines
1.6 KiB
Java
66 lines
1.6 KiB
Java
package function.builtin;
|
|
|
|
import static org.junit.Assert.assertEquals;
|
|
import static testutil.TestUtilities.evaluateString;
|
|
|
|
import java.io.*;
|
|
import java.text.MessageFormat;
|
|
|
|
import org.junit.*;
|
|
|
|
import environment.RuntimeEnvironment;
|
|
import function.ArgumentValidator.*;
|
|
|
|
public class PRINTTester {
|
|
|
|
private RuntimeEnvironment environment;
|
|
private ByteArrayOutputStream outputStream;
|
|
|
|
public PRINTTester() {
|
|
this.environment = RuntimeEnvironment.getInstance();
|
|
}
|
|
|
|
private void assertPrinted(String expected) {
|
|
assertEquals(expected, outputStream.toString());
|
|
}
|
|
|
|
@Before
|
|
public void setUp() {
|
|
outputStream = new ByteArrayOutputStream();
|
|
environment.reset();
|
|
environment.setOutput(new PrintStream(outputStream));
|
|
}
|
|
|
|
@After
|
|
public void tearDown() {
|
|
environment.reset();
|
|
}
|
|
|
|
@Test
|
|
public void printStringWorks() {
|
|
String output = "\"Hello, world!\"";
|
|
|
|
evaluateString(MessageFormat.format("(print {0})", output));
|
|
assertPrinted(MessageFormat.format("{0}\n", output));
|
|
}
|
|
|
|
@Test
|
|
public void printSymbolWorks() {
|
|
String output = "A";
|
|
|
|
evaluateString(MessageFormat.format("(print ''{0})", output));
|
|
assertPrinted(MessageFormat.format("{0}\n", output));
|
|
}
|
|
|
|
@Test(expected = TooManyArgumentsException.class)
|
|
public void printWithTooManyArguments() {
|
|
evaluateString("(print '1 '2)");
|
|
}
|
|
|
|
@Test(expected = TooFewArgumentsException.class)
|
|
public void printWithTooFewArguments() {
|
|
evaluateString("(print)");
|
|
}
|
|
|
|
}
|