diff --git a/src/test/kotlin/terminal/TerminalConfigurationTest.java b/src/test/kotlin/terminal/TerminalConfigurationTest.java deleted file mode 100644 index 77bdc3b..0000000 --- a/src/test/kotlin/terminal/TerminalConfigurationTest.java +++ /dev/null @@ -1,39 +0,0 @@ -package terminal; - -import org.junit.Before; -import org.junit.Test; -import stream.LispIOException; - -import java.io.IOException; -import java.io.PipedInputStream; -import java.io.PipedOutputStream; - -public class TerminalConfigurationTest { - - TerminalConfiguration configuration; - - private PipedOutputStream createIOExceptionThrowingPipedOutputStream() { - return new PipedOutputStream() { - - @Override - public void connect(PipedInputStream inputStream) throws IOException { - throw new IOException(); - } - }; - } - - @Before - public void setUp() { - configuration = new TerminalConfiguration(); - } - - @Test(expected = LispIOException.class) - public void setInputPairThrowsUncheckedException() { - configuration.setInputPair(createIOExceptionThrowingPipedOutputStream(), new PipedInputStream()); - } - - @Test(expected = LispIOException.class) - public void setOutputPairThrowsUncheckedException() { - configuration.setOutputPair(createIOExceptionThrowingPipedOutputStream(), new PipedInputStream()); - } -} diff --git a/src/test/kotlin/terminal/TerminalConfigurationTest.kt b/src/test/kotlin/terminal/TerminalConfigurationTest.kt new file mode 100644 index 0000000..a73e085 --- /dev/null +++ b/src/test/kotlin/terminal/TerminalConfigurationTest.kt @@ -0,0 +1,37 @@ +package terminal + +import org.junit.jupiter.api.Assertions.assertThrows +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.Test +import stream.LispIOException +import java.io.IOException +import java.io.PipedInputStream +import java.io.PipedOutputStream + +class TerminalConfigurationTest { + + private lateinit var configuration: TerminalConfiguration + + private fun createIOExceptionThrowingPipedOutputStream() = object : PipedOutputStream() { + override fun connect(inputStream: PipedInputStream) = throw IOException() + } + + @BeforeEach + fun setUp() { + configuration = TerminalConfiguration() + } + + @Test + fun setInputPairThrowsUncheckedException() { + assertThrows(LispIOException::class.java) { + configuration.setInputPair(createIOExceptionThrowingPipedOutputStream(), PipedInputStream()) + } + } + + @Test + fun setOutputPairThrowsUncheckedException() { + assertThrows(LispIOException::class.java) { + configuration.setOutputPair(createIOExceptionThrowingPipedOutputStream(), PipedInputStream()) + } + } +} diff --git a/src/test/kotlin/terminal/TerminalHistoryTest.java b/src/test/kotlin/terminal/TerminalHistoryTest.java deleted file mode 100644 index cebbeaf..0000000 --- a/src/test/kotlin/terminal/TerminalHistoryTest.java +++ /dev/null @@ -1,139 +0,0 @@ -package terminal; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertThat; - -public class TerminalHistoryTest { - - private TerminalHistory history; - - private void assertAtBeginning() { - assertThat(history.isBeginning(), is(true)); - } - - private void assertAtEnd() { - assertThat(history.isEnd(), is(true)); - } - - private void assertPrevious(String expected) { - assertThat(history.getPreviousLine(), is(expected)); - } - - private void assertNext(String expected) { - assertThat(history.getNextLine(), is(expected)); - } - - @Before - public void setUp() { - history = new TerminalHistory(); - } - - @After - public void tearDown() {} - - @Test - public void historyStartsWithNoLines() { - assertAtBeginning(); - assertAtEnd(); - } - - @Test - public void addOneLineToHistory() { - history.addLine("test line"); - - assertPrevious("test line"); - assertAtBeginning(); - } - - @Test - public void currentLineIsEmpty() { - history.addLine("one"); - history.getPreviousLine(); - - assertNext(""); - } - - @Test - public void moveBackwards() { - history.addLine("one"); - history.addLine("two"); - - assertPrevious("two"); - assertPrevious("one"); - assertAtBeginning(); - } - - @Test - public void moveForwards() { - history.addLine("one"); - history.addLine("two"); - history.getPreviousLine(); - history.getPreviousLine(); - - assertNext("two"); - assertNext(""); - assertAtEnd(); - } - - @Test - public void addedLineGoesAtEndOfHistory() { - history.addLine("one"); - history.addLine("two"); - history.getPreviousLine(); - history.getPreviousLine(); - history.addLine("three"); - - assertPrevious("three"); - assertPrevious("two"); - assertPrevious("one"); - assertAtBeginning(); - } - - @Test - public void currentLineIsUpdated() { - history.addLine("one"); - history.updateCurrentLine("purple"); - history.getPreviousLine(); - - assertNext("purple"); - } - - @Test - public void previousLineIsUpdated() { - history.addLine("one"); - history.addLine("two"); - history.getPreviousLine(); - history.updateCurrentLine("purple"); - history.getPreviousLine(); - - assertNext("purple"); - } - - @Test - public void goingPastFirstLine_KeepsReturningFirstLine() { - history.addLine("one"); - history.addLine("two"); - history.getPreviousLine(); - history.getPreviousLine(); - history.getPreviousLine(); - history.getPreviousLine(); - history.getPreviousLine(); - - assertPrevious("one"); - } - - @Test - public void goingPastLastLine_KeepsReturningLastLine() { - history.updateCurrentLine("current"); - history.getNextLine(); - history.getNextLine(); - history.getNextLine(); - history.getNextLine(); - - assertNext("current"); - } -} diff --git a/src/test/kotlin/terminal/TerminalHistoryTest.kt b/src/test/kotlin/terminal/TerminalHistoryTest.kt new file mode 100644 index 0000000..3e84d43 --- /dev/null +++ b/src/test/kotlin/terminal/TerminalHistoryTest.kt @@ -0,0 +1,133 @@ +package terminal + +import org.assertj.core.api.Assertions.assertThat +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.Test + +class TerminalHistoryTest { + + private lateinit var history: TerminalHistory + + private fun assertAtBeginning() { + assertThat(history.isBeginning()).isTrue() + } + + private fun assertAtEnd() { + assertThat(history.isEnd()).isTrue() + } + + private fun assertPrevious(expected: String) { + assertThat(history.getPreviousLine()).isEqualTo(expected) + } + + private fun assertNext(expected: String) { + assertThat(history.getNextLine()).isEqualTo(expected) + } + + @BeforeEach + fun setUp() { + history = TerminalHistory() + } + + @Test + fun `history starts with no lines`() { + assertAtBeginning() + assertAtEnd() + } + + @Test + fun `add one line to the history`() { + history.addLine("test line") + + assertPrevious("test line") + assertAtBeginning() + } + + @Test + fun `current line is empty`() { + history.addLine("one") + history.getPreviousLine() + + assertNext("") + } + + @Test + fun `move backwards`() { + history.addLine("one") + history.addLine("two") + + assertPrevious("two") + assertPrevious("one") + assertAtBeginning() + } + + @Test + fun `move forwards`() { + history.addLine("one") + history.addLine("two") + history.getPreviousLine() + history.getPreviousLine() + + assertNext("two") + assertNext("") + assertAtEnd() + } + + @Test + fun `added line goes to the end of the history`() { + history.addLine("one") + history.addLine("two") + history.getPreviousLine() + history.getPreviousLine() + history.addLine("three") + + assertPrevious("three") + assertPrevious("two") + assertPrevious("one") + assertAtBeginning() + } + + @Test + fun `current line is updated`() { + history.addLine("one") + history.updateCurrentLine("purple") + history.getPreviousLine() + + assertNext("purple") + } + + @Test + fun `previous line is updated`() { + history.addLine("one") + history.addLine("two") + history.getPreviousLine() + history.updateCurrentLine("purple") + history.getPreviousLine() + + assertNext("purple") + } + + @Test + fun `going past the first line keeps returning the first line`() { + history.addLine("one") + history.addLine("two") + history.getPreviousLine() + history.getPreviousLine() + history.getPreviousLine() + history.getPreviousLine() + history.getPreviousLine() + + assertPrevious("one") + } + + @Test + fun `going past the last line keeps returning the last line`() { + history.updateCurrentLine("current") + history.getNextLine() + history.getNextLine() + history.getNextLine() + history.getNextLine() + + assertNext("current") + } +}