From e30137d36ea2f65f74d37cb0c5c303ef34ac64eb Mon Sep 17 00:00:00 2001 From: Kelvin Neo <2332196+kelvneo@users.noreply.github.com> Date: Sun, 7 Nov 2021 20:50:22 +0800 Subject: [PATCH] Update Sequence Diagrams and fix JUnit test --- ...RecallCreateEnvironmentSequenceDiagram.png | Bin 29922 -> 26452 bytes .../ActiveRecallSequenceDiagram.png | Bin 38669 -> 39622 bytes docs/uml/ActiveRecallSequenceDiagram.puml | 2 + ...ecallCreateEnvironmentSequenceDiagram.puml | 2 - src/main/java/terminus/Terminus.java | 8 ++-- .../activerecall/GameEnvironment.java | 2 +- src/test/java/terminus/TerminusTest.java | 40 +++++++++++++++--- src/test/java/terminus/TestFilePath.java | 1 + 8 files changed, 42 insertions(+), 13 deletions(-) diff --git a/docs/attachments/ActiveRecallCreateEnvironmentSequenceDiagram.png b/docs/attachments/ActiveRecallCreateEnvironmentSequenceDiagram.png index da31966786df89c51edbaf3417d625829a035692..8b131deeda1b82cb4ce15af30b7d7e144e3e3c95 100644 GIT binary patch literal 26452 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 C@v)}> diff --git a/docs/attachments/ActiveRecallSequenceDiagram.png b/docs/attachments/ActiveRecallSequenceDiagram.png index 1d76dcdcacb2462f15319edaabd48313a5af8990..4fa5b572b7161e2ebdb8695a3fcbb3e778f6f1a8 100644 GIT binary patch delta 14881 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 delta 13958 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 TestCommand : execute(moduleManager) diff --git a/src/main/java/terminus/Terminus.java b/src/main/java/terminus/Terminus.java index ac757aa2d3..a1d7533e24 100644 --- a/src/main/java/terminus/Terminus.java +++ b/src/main/java/terminus/Terminus.java @@ -24,6 +24,7 @@ public class Terminus { private ModuleManager moduleManager; private StorageManager storageManager; + private Path dataDirectory; private static final Path DATA_DIRECTORY = Path.of(System.getProperty("user.dir"), "data"); private static final String MAIN_JSON = "main.json"; @@ -36,12 +37,13 @@ public static void main(String[] args) { } Terminus() { - this(Ui.getInstance(), MainCommandParser.getInstance()); + this(Ui.getInstance(), MainCommandParser.getInstance(), DATA_DIRECTORY); } - Terminus(Ui ui, CommandParser parser) { + Terminus(Ui ui, CommandParser parser, Path dataDirectory) { this.ui = ui; this.parser = parser; + this.dataDirectory = dataDirectory; } /** @@ -58,7 +60,7 @@ void initialize() { TerminusLogger.initializeLogger(); TerminusLogger.info("Starting Terminus..."); this.workspace = ""; - this.storageManager = new StorageManager(DATA_DIRECTORY, MAIN_JSON); + this.storageManager = new StorageManager(dataDirectory, MAIN_JSON); this.moduleManager = this.storageManager.initialize(); } catch (IOException e) { TerminusLogger.warning("Log file loading has failed.", e.fillInStackTrace()); diff --git a/src/main/java/terminus/activerecall/GameEnvironment.java b/src/main/java/terminus/activerecall/GameEnvironment.java index 9f778237e2..d5b60b3961 100644 --- a/src/main/java/terminus/activerecall/GameEnvironment.java +++ b/src/main/java/terminus/activerecall/GameEnvironment.java @@ -94,7 +94,7 @@ private int getUserFeedback() { difficulty = Integer.parseInt(input); } while (difficulty == INVALID_DIFFICULTY); - assert difficulty <= HARD_DIFFICULTY && difficulty >= -EASY_DIFFICULTY; + assert difficulty <= HARD_DIFFICULTY && difficulty >= EXIT_CODE; return difficulty; } diff --git a/src/test/java/terminus/TerminusTest.java b/src/test/java/terminus/TerminusTest.java index db94d51d54..2a88333a27 100644 --- a/src/test/java/terminus/TerminusTest.java +++ b/src/test/java/terminus/TerminusTest.java @@ -4,9 +4,17 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.IOException; import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Comparator; +import java.util.stream.Stream; import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import terminus.parser.MainCommandParser; import terminus.ui.Ui; @@ -26,6 +34,20 @@ static void afterAll() { System.setIn(oldInput); } + @BeforeEach + void setUp() { + TestFilePath.RESOURCE_DATA_FOLDER.toFile().mkdir(); + } + + @AfterEach + void tearDown() throws IOException { + try (Stream walk = Files.walk(TestFilePath.RESOURCE_DATA_FOLDER)) { + walk.sorted(Comparator.reverseOrder()) + .map(Path::toFile) + .forEach(File::delete); + } + } + @Test void run_exit_success() { String input = String.format("exit%s", LS); @@ -38,7 +60,8 @@ void run_exit_success() { void run_invalidCommand_exit_success() { String input = String.format("exita%shelp%sexit%s", LS, LS, LS); InputStream in = new ByteArrayInputStream(input.getBytes()); - Terminus terminus = new Terminus(new Ui(in), MainCommandParser.getInstance()); + Terminus terminus = new Terminus(new Ui(in), MainCommandParser.getInstance(), + TestFilePath.RESOURCE_DATA_FOLDER); terminus.run(); } @@ -51,23 +74,26 @@ void safety_test() { @Test void handleUserInput_success() { - Terminus terminus = new Terminus(); + Terminus terminus = new Terminus(new Ui(System.in), MainCommandParser.getInstance(), + TestFilePath.RESOURCE_DATA_FOLDER); terminus.initialize(); assertTrue(terminus.handleUserInput("exit").isExit()); } @Test void handleUserInput_exceptionThrown_returnNull() { - Terminus terminus = new Terminus(); + Terminus terminus = new Terminus(new Ui(System.in), MainCommandParser.getInstance(), + TestFilePath.RESOURCE_DATA_FOLDER); terminus.initialize(); assertNull(terminus.handleUserInput("exita")); assertNull(terminus.handleUserInput("module add")); - assertNull(terminus.handleUserInput("module delete 10")); + assertNull(terminus.handleUserInput("module delete " + Integer.MAX_VALUE)); } @Test void handleCommandResult_success() { - Terminus terminus = new Terminus(); + Terminus terminus = new Terminus(new Ui(System.in), MainCommandParser.getInstance(), + TestFilePath.RESOURCE_DATA_FOLDER); terminus.initialize(); terminus.handleCommandResult(terminus.handleUserInput("module add \"test\"")); terminus.handleCommandResult(terminus.handleUserInput("go test")); @@ -83,10 +109,10 @@ void handleCommandResult_success() { @Test void handleStorage_success() { - Terminus terminus = new Terminus(); + Terminus terminus = new Terminus(new Ui(System.in), MainCommandParser.getInstance(), + TestFilePath.RESOURCE_DATA_FOLDER); terminus.initialize(); terminus.handleStorage(terminus.handleUserInput("module add \"test\"")); terminus.handleStorage(terminus.handleUserInput("module delete 1")); } - } diff --git a/src/test/java/terminus/TestFilePath.java b/src/test/java/terminus/TestFilePath.java index 74766bb97e..348caa1a35 100644 --- a/src/test/java/terminus/TestFilePath.java +++ b/src/test/java/terminus/TestFilePath.java @@ -5,6 +5,7 @@ public class TestFilePath { public static final Path RESOURCE_FOLDER = Path.of("src", "test", "resources"); + public static final Path RESOURCE_DATA_FOLDER = RESOURCE_FOLDER.resolve("data"); public static final String FAULTY_FOLDER = "faulty"; public static final String SAVE_FILE = "saveFile.json"; public static final String MALFORMED_FILE = "malformedFile.json";