Browse Source
Added application main loop for updating, printing the games and quiting at anytime with test for correctly terminating.
feature-app
Added application main loop for updating, printing the games and quiting at anytime with test for correctly terminating.
feature-app
Nick Stolbov
3 years ago
3 changed files with 91 additions and 7 deletions
-
46src/main/java/Application/App.java
-
10src/main/java/Main.java
-
42src/test/java/Application/AppTest.java
@ -0,0 +1,46 @@ |
|||
package Application; |
|||
|
|||
import Game.Tictactoe; |
|||
|
|||
public class App { |
|||
|
|||
private boolean isRunning = false; |
|||
private Cli cli; |
|||
|
|||
private Tictactoe ttt; |
|||
|
|||
public App(Cli cli) { |
|||
this.cli = cli; |
|||
init(); |
|||
} |
|||
|
|||
private void init() { |
|||
ttt = new Tictactoe(); |
|||
cli.getPrintStream().println("Welcome to the Cli Arcade Service!"); |
|||
cli.getPrintStream().println("Press 'q' at any time to stop the application"); |
|||
ttt.print(cli); |
|||
} |
|||
|
|||
public void start() { |
|||
isRunning = true; |
|||
while (isRunning) { |
|||
String input = cli.getScanner().next(); |
|||
if (input.equals("q")) { |
|||
stop(); |
|||
return; |
|||
} else { |
|||
ttt.update(input); |
|||
ttt.print(cli); |
|||
} |
|||
} |
|||
} |
|||
|
|||
public void stop() { |
|||
isRunning = false; |
|||
cli.getPrintStream().println("Stopping application..."); |
|||
} |
|||
|
|||
public boolean isRunning() { |
|||
return isRunning; |
|||
} |
|||
} |
@ -0,0 +1,42 @@ |
|||
package Application; |
|||
|
|||
import org.junit.jupiter.api.AfterEach; |
|||
import org.junit.jupiter.api.BeforeEach; |
|||
import org.junit.jupiter.api.Test; |
|||
|
|||
import java.io.*; |
|||
import java.nio.charset.StandardCharsets; |
|||
|
|||
import static org.junit.jupiter.api.Assertions.*; |
|||
import static org.mockito.Mockito.mock; |
|||
import static org.mockito.Mockito.when; |
|||
|
|||
class AppTest { |
|||
|
|||
private final ByteArrayOutputStream outContent = new ByteArrayOutputStream(); |
|||
private final ByteArrayInputStream inContent = new ByteArrayInputStream("1\n2\nq\n".getBytes()); |
|||
|
|||
App app; |
|||
Cli cli; |
|||
|
|||
@BeforeEach |
|||
void setUp() { |
|||
cli = new Cli(new PrintStream(outContent), inContent); |
|||
app = new App(cli); |
|||
} |
|||
|
|||
@AfterEach |
|||
void tearDown() { |
|||
} |
|||
|
|||
//inContent has the 'q' at the end, to terminated the loop and set isRunning to false |
|||
@Test |
|||
void stop() { |
|||
ByteArrayInputStream input = new ByteArrayInputStream("1\n2\nq\n".getBytes()); |
|||
cli = new Cli(new PrintStream(outContent), input); |
|||
app = new App(cli); |
|||
app.start(); |
|||
assertFalse(app.isRunning()); |
|||
} |
|||
|
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue