Browse Source

Added getScanner() method for Cli class with test for testing stream integration

feature-cli
Nick Stolbov 3 years ago
parent
commit
046403eb8f
  1. 12
      src/main/java/Application/Cli.java
  2. 4
      src/main/java/Main.java
  3. 15
      src/test/java/Application/CliTest.java

12
src/main/java/Application/Cli.java

@ -1,16 +1,26 @@
package Application; package Application;
import java.io.InputStream;
import java.io.PrintStream; import java.io.PrintStream;
import java.util.Scanner;
public class Cli { public class Cli {
private PrintStream printStream; private PrintStream printStream;
private InputStream inputStream;
private Scanner scanner;
public Cli(PrintStream printStream) {
public Cli(PrintStream printStream, InputStream inputStream) {
this.printStream = printStream; this.printStream = printStream;
this.inputStream = inputStream;
this.scanner = new Scanner(inputStream);
} }
public PrintStream getPrintStream() { public PrintStream getPrintStream() {
return this.printStream; return this.printStream;
} }
public Scanner getScanner(){
return this.scanner;
}
} }

4
src/main/java/Main.java

@ -7,8 +7,8 @@ public class Main {
public static void main(String[] args) { public static void main(String[] args) {
Tictactoe ttt = new Tictactoe(); Tictactoe ttt = new Tictactoe();
Cli cli = new Cli(System.out);
Scanner scan = new Scanner(System.in);
Cli cli = new Cli(System.out, System.in);
Scanner scan = cli.getScanner();
ttt.print(cli); ttt.print(cli);
while (scan.hasNext()) { while (scan.hasNext()) {
ttt.update(scan.next()); ttt.update(scan.next());

15
src/test/java/Application/CliTest.java

@ -4,7 +4,9 @@ import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.PrintStream; import java.io.PrintStream;
import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertEquals;
@ -13,23 +15,34 @@ class CliTest {
private final ByteArrayOutputStream outContent = new ByteArrayOutputStream(); private final ByteArrayOutputStream outContent = new ByteArrayOutputStream();
private final PrintStream originalOut = System.out; private final PrintStream originalOut = System.out;
private final ByteArrayInputStream inContent = new ByteArrayInputStream("Test".getBytes());
private final InputStream originalIn = System.in;
Cli cli; Cli cli;
@BeforeEach @BeforeEach
void setUp() { void setUp() {
System.setOut(new PrintStream(outContent)); System.setOut(new PrintStream(outContent));
cli = new Cli(System.out);
System.setIn(inContent);
cli = new Cli(System.out, System.in);
} }
@AfterEach @AfterEach
void tearDown() { void tearDown() {
System.setOut(originalOut); System.setOut(originalOut);
System.setIn(originalIn);
} }
//Only tests correct stream integration, other methods are provided
@Test @Test
void getPrintStream() { void getPrintStream() {
cli.getPrintStream().println("Hello World!"); cli.getPrintStream().println("Hello World!");
assertEquals("Hello World!\n", outContent.toString().replaceAll("\r", "")); assertEquals("Hello World!\n", outContent.toString().replaceAll("\r", ""));
} }
//Only tests correct stream integration, other methods are provided
@Test
void getScanner() {
assertEquals(cli.getScanner().next(), "Test");
}
} }
Loading…
Cancel
Save