mirror of
https://github.com/coding-horror/basic-computer-games.git
synced 2025-12-21 23:00:43 -08:00
41 lines
1.2 KiB
Java
41 lines
1.2 KiB
Java
import org.junit.jupiter.api.BeforeEach;
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
|
|
|
import java.io.EOFException;
|
|
import java.io.Reader;
|
|
import java.io.StringReader;
|
|
import java.io.StringWriter;
|
|
import java.io.UncheckedIOException;
|
|
|
|
public class GameTest {
|
|
|
|
private StringReader in;
|
|
private StringWriter out;
|
|
private Game game;
|
|
|
|
private void givenInput(String input) {
|
|
Reader in = new StringReader("\u2404"); // U+2404 is "End of Transmission" sent by CTRL+D (or CTRL+Z on Windows)
|
|
StringWriter out = new StringWriter();
|
|
UserIo userIo = new UserIo(in, out);
|
|
Deck deck = new Deck((cards) -> cards);
|
|
game = new Game(deck, userIo);
|
|
}
|
|
|
|
@Test
|
|
public void shouldQuitOnCtrlD() {
|
|
// Given
|
|
givenInput("\u2404"); // U+2404 is "End of Transmission" sent by CTRL+D (or CTRL+Z on Windows)
|
|
|
|
// When
|
|
Exception e = assertThrows(UncheckedIOException.class, game::run);
|
|
|
|
// Then
|
|
assertTrue(e.getCause() instanceof EOFException);
|
|
assertEquals("!END OF INPUT", e.getMessage());
|
|
}
|
|
}
|