From fc2a6ec00acd0f967b9185780edc175081eb2b0f Mon Sep 17 00:00:00 2001 From: pratham31012002 Date: Thu, 1 Sep 2022 11:30:59 +0800 Subject: [PATCH] Add JUnit Tests --- src/main/java/pluto/Parser.java | 2 +- src/main/java/pluto/command/AddCommand.java | 8 ++++ .../java/pluto/command/DeleteCommand.java | 9 ++++ src/main/java/pluto/command/ExitCommand.java | 8 ++++ src/main/java/pluto/command/ListCommand.java | 8 ++++ src/main/java/pluto/command/ShowCommand.java | 9 ++++ .../pluto/command/UpdateStatusCommand.java | 9 ++++ src/main/java/pluto/task/Deadline.java | 11 +++++ src/main/java/pluto/task/Event.java | 9 ++++ src/main/java/pluto/task/Task.java | 1 + src/main/java/pluto/task/Todo.java | 9 ++++ src/test/java/pluto/ParserTest.java | 40 ++++++++++++++++ src/test/java/pluto/TaskListTest.java | 48 +++++++++++++++++++ src/test/java/pluto/task/EventTest.java | 26 ++++++++++ 14 files changed, 196 insertions(+), 1 deletion(-) create mode 100644 src/test/java/pluto/ParserTest.java create mode 100644 src/test/java/pluto/TaskListTest.java create mode 100644 src/test/java/pluto/task/EventTest.java diff --git a/src/main/java/pluto/Parser.java b/src/main/java/pluto/Parser.java index c2852c61d6..b81d757fc1 100644 --- a/src/main/java/pluto/Parser.java +++ b/src/main/java/pluto/Parser.java @@ -14,7 +14,7 @@ import java.util.HashSet; public class Parser { - private enum Type { + enum Type { TODO, DEADLINE, EVENT, diff --git a/src/main/java/pluto/command/AddCommand.java b/src/main/java/pluto/command/AddCommand.java index 6aeefa733d..6439666f2d 100644 --- a/src/main/java/pluto/command/AddCommand.java +++ b/src/main/java/pluto/command/AddCommand.java @@ -29,4 +29,12 @@ public void execute(TaskList tasks, Ui ui, Storage storage) throws PlutoExceptio } } + @Override + public boolean equals(Object o) { + if (o instanceof AddCommand) { + AddCommand other = (AddCommand) o; + return this.t.equals(other.t); + } + return false; + } } diff --git a/src/main/java/pluto/command/DeleteCommand.java b/src/main/java/pluto/command/DeleteCommand.java index 014e9e19fd..5a55eb84c6 100644 --- a/src/main/java/pluto/command/DeleteCommand.java +++ b/src/main/java/pluto/command/DeleteCommand.java @@ -30,4 +30,13 @@ public void execute(TaskList tasks, Ui ui, Storage storage) throws PlutoExceptio } } + + @Override + public boolean equals(Object o) { + if (o instanceof DeleteCommand) { + DeleteCommand other = (DeleteCommand) o; + return this.idx == other.idx; + } + return false; + } } diff --git a/src/main/java/pluto/command/ExitCommand.java b/src/main/java/pluto/command/ExitCommand.java index fc53c7120c..ad473499e1 100644 --- a/src/main/java/pluto/command/ExitCommand.java +++ b/src/main/java/pluto/command/ExitCommand.java @@ -12,4 +12,12 @@ public boolean isExit() { public void execute(TaskList tasks, Ui ui, Storage storage) { ui.print("\tSee You Later!"); } + + @Override + public boolean equals(Object o) { + if (o instanceof ExitCommand) { + return true; + } + return false; + } } diff --git a/src/main/java/pluto/command/ListCommand.java b/src/main/java/pluto/command/ListCommand.java index f5f3546b32..3fb1ab1a09 100644 --- a/src/main/java/pluto/command/ListCommand.java +++ b/src/main/java/pluto/command/ListCommand.java @@ -15,4 +15,12 @@ public void execute(TaskList tasks, Ui ui, Storage storage) { } } + @Override + public boolean equals(Object o) { + if (o instanceof ListCommand) { + return true; + } + return false; + } + } diff --git a/src/main/java/pluto/command/ShowCommand.java b/src/main/java/pluto/command/ShowCommand.java index af32192eec..29d6e50736 100644 --- a/src/main/java/pluto/command/ShowCommand.java +++ b/src/main/java/pluto/command/ShowCommand.java @@ -32,4 +32,13 @@ public void execute(TaskList tasks, Ui ui, Storage storage) throws PlutoExceptio } } + @Override + public boolean equals(Object o) { + if (o instanceof ShowCommand) { + ShowCommand other = (ShowCommand) o; + return this.date.equals(other.date); + } + return false; + } + } diff --git a/src/main/java/pluto/command/UpdateStatusCommand.java b/src/main/java/pluto/command/UpdateStatusCommand.java index 662e988a7d..a1b859bef5 100644 --- a/src/main/java/pluto/command/UpdateStatusCommand.java +++ b/src/main/java/pluto/command/UpdateStatusCommand.java @@ -35,4 +35,13 @@ public void execute(TaskList tasks, Ui ui, Storage storage) throws PlutoExceptio } } + @Override + public boolean equals(Object o) { + if (o instanceof UpdateStatusCommand) { + UpdateStatusCommand other = (UpdateStatusCommand) o; + return this.idx == other.idx && this.isDone == other.isDone; + } + return false; + } + } diff --git a/src/main/java/pluto/task/Deadline.java b/src/main/java/pluto/task/Deadline.java index bd74cdfdff..1c933c95d9 100644 --- a/src/main/java/pluto/task/Deadline.java +++ b/src/main/java/pluto/task/Deadline.java @@ -1,5 +1,7 @@ package pluto.task; +import pluto.command.AddCommand; + import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -28,4 +30,13 @@ public String toFile() { public LocalDate getDateMaybe() { return by.toLocalDate(); } + + @Override + public boolean equals(Object o) { + if (o instanceof Deadline) { + Deadline other = (Deadline) o; + return this.by.equals(other.by) && this.description.equals(other.description) && this.isDone == other.isDone; + } + return false; + } } diff --git a/src/main/java/pluto/task/Event.java b/src/main/java/pluto/task/Event.java index c775a7e4d1..4827825890 100644 --- a/src/main/java/pluto/task/Event.java +++ b/src/main/java/pluto/task/Event.java @@ -28,4 +28,13 @@ public String toFile() { public LocalDate getDateMaybe() { return at.toLocalDate(); } + + @Override + public boolean equals(Object o) { + if (o instanceof Event) { + Event other = (Event) o; + return this.at.equals(other.at) && this.description.equals(other.description) && this.isDone == other.isDone; + } + return false; + } } diff --git a/src/main/java/pluto/task/Task.java b/src/main/java/pluto/task/Task.java index 1cba327681..09b34bfd25 100644 --- a/src/main/java/pluto/task/Task.java +++ b/src/main/java/pluto/task/Task.java @@ -43,4 +43,5 @@ public String getDateTime(LocalDateTime dt) { } public abstract LocalDate getDateMaybe(); + } diff --git a/src/main/java/pluto/task/Todo.java b/src/main/java/pluto/task/Todo.java index 3a5efda722..9fff1974cc 100644 --- a/src/main/java/pluto/task/Todo.java +++ b/src/main/java/pluto/task/Todo.java @@ -23,4 +23,13 @@ public String toFile() { public LocalDate getDateMaybe() { return null; } + + @Override + public boolean equals(Object o) { + if (o instanceof Todo) { + Todo other = (Todo) o; + return this.description.equals(other.description) && this.isDone == other.isDone; + } + return false; + } } diff --git a/src/test/java/pluto/ParserTest.java b/src/test/java/pluto/ParserTest.java new file mode 100644 index 0000000000..e89454f366 --- /dev/null +++ b/src/test/java/pluto/ParserTest.java @@ -0,0 +1,40 @@ +package pluto; + +import org.junit.jupiter.api.Test; +import pluto.command.AddCommand; +import pluto.task.Event; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.fail; + +public class ParserTest { + @Test + public void parseTask_invalidDateFormat_exceptionThrown() { + try { + Parser.parseTask("join meeting /by 04/05/2022", Parser.Type.DEADLINE); + fail(); // the test should not reach this line + } catch (Exception e) { + assertEquals("\tOOPS!!! dd-MM-yyyy HHmm date format required.", e.getMessage()); + } + } + + @Test + public void parseTask_validFormat_success() throws PlutoException { + LocalDateTime date = LocalDateTime.parse("04-05-2022 1800", DateTimeFormatter.ofPattern("dd-MM-yyyy HHmm")); + assertEquals(new AddCommand(new Event("join meeting", date)), + Parser.parseTask("join meeting /at 04-05-2022 1800", Parser.Type.EVENT)); + } + + @Test + public void isOnlyCommand_onlyCommand_exceptionThrown() { + try { + Parser.isOnlyCommand("todo"); + fail(); // the test should not reach this line + } catch (Exception e) { + assertEquals("\tOOPS!!! The description of todo cannot be empty.", e.getMessage()); + } + } +} \ No newline at end of file diff --git a/src/test/java/pluto/TaskListTest.java b/src/test/java/pluto/TaskListTest.java new file mode 100644 index 0000000000..2ce822cca3 --- /dev/null +++ b/src/test/java/pluto/TaskListTest.java @@ -0,0 +1,48 @@ +package pluto; + +import org.junit.jupiter.api.Test; +import pluto.task.Task; +import pluto.task.Todo; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.fail; + +public class TaskListTest { + @Test + public void deleteTask_validIndex_success() throws PlutoException { + Task t1 = new Todo("test task1"); + Task t2 = new Todo("test task2"); + Task t3 = new Todo("test task3"); + TaskList tasks = new TaskList(); + tasks.addTask(t1); + tasks.addTask(t2); + tasks.addTask(t3); + assertEquals(t3, tasks.deleteTask(2)); + } + @Test + public void deleteTask_invalidIndex_exceptionThrown() { + try { + Task t = new Todo("test task"); + TaskList tasks = new TaskList(); + tasks.addTask(t); + tasks.addTask(t); + tasks.addTask(t); + tasks.deleteTask(5); + fail(); // the test should not reach this line + } catch (Exception e) { + assertEquals("\tOOPS!!! Valid index required.", e.getMessage()); + } + } + @Test + public void markTask_validIndex_success() throws PlutoException { + Task t1 = new Todo("test task1"); + Task t2 = new Todo("test task2"); + Task t3 = new Todo("test task3"); + TaskList tasks = new TaskList(); + tasks.addTask(t1); + tasks.addTask(t2); + tasks.addTask(t3); + tasks.markTask(1, true); + assertEquals(t2.getStatusIcon(), "X"); + } +} diff --git a/src/test/java/pluto/task/EventTest.java b/src/test/java/pluto/task/EventTest.java new file mode 100644 index 0000000000..c3446cd208 --- /dev/null +++ b/src/test/java/pluto/task/EventTest.java @@ -0,0 +1,26 @@ +package pluto.task; + +import org.junit.jupiter.api.Test; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class EventTest { + @Test + public void toFile_returnsTasktoFileFormat() { + LocalDateTime date = LocalDateTime.parse("04-05-2022 1800", DateTimeFormatter.ofPattern("dd-MM-yyyy HHmm")); + Event e = new Event("join meeting", date); + e.markAsDone(); + assertEquals(e.toFile(), "E | 1 | join meeting | 04-05-2022 1800"); + } + + @Test + public void getDateMaybe_returnsLocalDate() { + LocalDateTime date = LocalDateTime.parse("04-05-2022 1800", DateTimeFormatter.ofPattern("dd-MM-yyyy HHmm")); + Deadline d = new Deadline("join meeting", date); + assertEquals(d.getDateMaybe(), LocalDate.of(2022, 5,4)); + } +}