Skip to content

Commit

Permalink
Merge branch 'branch-A-JUnit'
Browse files Browse the repository at this point in the history
  • Loading branch information
aslam341 committed Sep 1, 2023
2 parents 4c6589a + 9e76860 commit f3784ab
Show file tree
Hide file tree
Showing 8 changed files with 186 additions and 21 deletions.
Empty file added data/test.txt
Empty file.
4 changes: 4 additions & 0 deletions src/main/java/duke/Duke.java
Original file line number Diff line number Diff line change
Expand Up @@ -47,4 +47,8 @@ public void run() {
userInput = ui.readCommand();
}
}

public TaskList getTaskList() {
return taskList;
}
}
42 changes: 41 additions & 1 deletion src/main/java/duke/commands/Command.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ public abstract class Command {

public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException;

public abstract CommandType getType();

public static class Exit extends Command {
@Override
public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {
Expand All @@ -22,13 +24,23 @@ public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException
throw new DukeException("Error saving duke.tasks to file: " + e.getMessage());
}
}

@Override
public CommandType getType() {
return CommandType.BYE;
}
}

public static class List extends Command {
@Override
public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {
tasks.list();
}

@Override
public CommandType getType() {
return CommandType.LIST;
}
}

public static class Mark extends Command {
Expand All @@ -43,6 +55,11 @@ public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException
int index = taskNumber - 1;
tasks.markTaskAsDone(index);
}

@Override
public CommandType getType() {
return CommandType.MARK;
}
}

public static class Unmark extends Command {
Expand All @@ -57,6 +74,11 @@ public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException
int index = taskNumber - 1;
tasks.unmarkTask(index);
}

@Override
public CommandType getType() {
return CommandType.UNMARK;
}
}

public static class Delete extends Command {
Expand All @@ -71,19 +93,32 @@ public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException
int index = taskNumber - 1;
tasks.deleteTask(index);
}

@Override
public CommandType getType() {
return CommandType.DELETE;
}
}

public static class Add extends Command {
private Task task;
private CommandType commandType;

public Add(Task task) {
public Add(Task task, CommandType commandType) {
this.task = task;
this.commandType = commandType;
}

@Override
public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {
tasks.addTask(task);
}

@Override
public CommandType getType() {
return this.commandType;

}
}

public static class Invalid extends Command {
Expand All @@ -97,5 +132,10 @@ public Invalid(String message) {
public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {
throw new DukeException(message);
}

@Override
public CommandType getType() {
return CommandType.INVALID;
}
}
}
6 changes: 3 additions & 3 deletions src/main/java/duke/parser/Parser.java
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ public static Command parse(String userInput) {
if (commandDetails.equals("")) {
return new Command.Invalid("☹ OOPS!!! The description of a todo cannot be empty.");
} else {
return new Command.Add(new ToDoTask(commandDetails));
return new Command.Add(new ToDoTask(commandDetails), CommandType.ADD_TODO);
}
case ADD_DEADLINE:
if (commandDetails.equals("")) {
Expand All @@ -80,7 +80,7 @@ public static Command parse(String userInput) {

try {
LocalDateTime deadline = LocalDateTime.parse(stringDeadline, DATE_INPUT_FORMAT);
return new Command.Add(new DeadlineTask(taskName, deadline));
return new Command.Add(new DeadlineTask(taskName, deadline), CommandType.ADD_DEADLINE);
} catch (DateTimeParseException e) {
return new Command.Invalid("☹ OOPS!!! Please enter a valid date and time in the format: dd/MM/yyyy HHmm");
}
Expand All @@ -106,7 +106,7 @@ public static Command parse(String userInput) {
try {
LocalDateTime startTime = LocalDateTime.parse(stringStartTime, DATE_INPUT_FORMAT);
LocalDateTime endTime = LocalDateTime.parse(stringEndTime, DATE_INPUT_FORMAT);
return new Command.Add(new EventTask(taskName, startTime, endTime));
return new Command.Add(new EventTask(taskName, startTime, endTime), CommandType.ADD_EVENT);
} catch (DateTimeParseException e) {
return new Command.Invalid("☹ OOPS!!! Please enter a valid date and time in the format: dd/MM/yyyy HHmm");
}
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/duke/tasks/Task.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ public void unmark() {
this.isDone = false;
}

public boolean isDone() {
return this.isDone;
}

public String getStatusIcon() {
return (isDone ? "X" : " ");
}
Expand Down
77 changes: 77 additions & 0 deletions src/test/java/duke/parser/ParserTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
package duke.parser;

import duke.commands.CommandType;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;

public class ParserTest {
@Test
public void testParseByeCommand() {
assertEquals(CommandType.BYE, Parser.parse("bye").getType());
}

@Test
public void testParseListCommand() {
assertEquals(CommandType.LIST, Parser.parse("list").getType());
}

@Test
public void testParseAddTodoCommand() {
assertEquals(CommandType.ADD_TODO, Parser.parse("todo Task").getType());
}

@Test
public void testParseAddDeadlineCommand() {
assertEquals(CommandType.ADD_DEADLINE, Parser.parse("deadline Task /by 01/01/2023 1200").getType());
}

@Test
public void testParseAddEventCommand() {
assertEquals(CommandType.ADD_EVENT, Parser.parse("event Task /from 01/01/2023 1200 /to 01/01/2023 1400").getType());
}

@Test
public void testParseMarkCommand() {
assertEquals(CommandType.MARK, Parser.parse("mark 1").getType());
}

@Test
public void testParseUnmarkCommand() {
assertEquals(CommandType.UNMARK, Parser.parse("unmark 1").getType());
}

@Test
public void testParseDeleteCommand() {
assertEquals(CommandType.DELETE, Parser.parse("delete 1").getType());
}

@Test
public void testParseInvalidCommand() {
assertEquals(CommandType.INVALID, Parser.parse("invalid").getType());
}

@Test
public void testParseInvalidTodoCommand() {
assertEquals(CommandType.INVALID, Parser.parse("todo").getType());
}

@Test
public void testParseInvalidDeadlineCommand() {
assertEquals(CommandType.INVALID, Parser.parse("deadline Task").getType());
}

@Test
public void testParseInvalidEventCommand() {
assertEquals(CommandType.INVALID, Parser.parse("event Task /from 01/01/2023 1200").getType());
}

@Test
public void testParseInvalidMarkCommand() {
assertEquals(CommandType.INVALID, Parser.parse("mark").getType());
}

@Test
public void testParseInvalidDeleteCommand() {
assertEquals(CommandType.INVALID, Parser.parse("delete").getType());
}
}
17 changes: 0 additions & 17 deletions src/test/java/duke/tasks/DukeTest.java

This file was deleted.

57 changes: 57 additions & 0 deletions src/test/java/duke/tasks/TaskListTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package duke.tasks;

import duke.Duke;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import static org.junit.jupiter.api.Assertions.assertEquals;

public class TaskListTest {
private Duke duke;

@BeforeEach
public void setUp() {
duke = new Duke("./data/test.txt"); // Use a test file path
}

@Test
public void testAddTask() {
Task task = new ToDoTask("Task");
duke.getTaskList().addTask(task);
ArrayList<Task> tasks = duke.getTaskList().getTasks();
assertEquals(1, tasks.size());
assertEquals(task, tasks.get(0));
}

@Test
public void testDeleteTask() {
Task task1 = new ToDoTask("Task1");
Task task2 = new ToDoTask("Task2");
duke.getTaskList().addTask(task1);
duke.getTaskList().addTask(task2);

duke.getTaskList().deleteTask(0);
ArrayList<Task> tasks = duke.getTaskList().getTasks();
assertEquals(1, tasks.size());
assertEquals(task2, tasks.get(0));
}

@Test
public void testMarkTaskAsDone() {
Task task = new ToDoTask("Task");
duke.getTaskList().addTask(task);
duke.getTaskList().markTaskAsDone(0);
ArrayList<Task> tasks = duke.getTaskList().getTasks();
assertEquals(true, tasks.get(0).isDone());
}

@Test
public void testUnmarkTask() {
Task task = new ToDoTask("Task");
duke.getTaskList().addTask(task);
duke.getTaskList().markTaskAsDone(0);
duke.getTaskList().unmarkTask(0);
ArrayList<Task> tasks = duke.getTaskList().getTasks();
assertEquals(false, tasks.get(0).isDone());
}
}

0 comments on commit f3784ab

Please sign in to comment.