diff --git a/src/main/java/com/booleanuk/core/Task.java b/src/main/java/com/booleanuk/core/Task.java new file mode 100644 index 000000000..14081fc9b --- /dev/null +++ b/src/main/java/com/booleanuk/core/Task.java @@ -0,0 +1,30 @@ +package com.booleanuk.core; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +public class Task { + String taskName; + String taskDesc; + String taskStatus; + String taskId; + + public Task(String taskName, String taskDesc){ + LocalDateTime now = LocalDateTime.now(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("ddMMyyHHmmss"); + String formattedDateTime = now.format(formatter); + this.taskDesc = taskDesc; + this.taskName = taskName; + this.taskStatus = "Incomplete"; + this.taskId = formattedDateTime; + } + @Override + public String toString() { + return "{" + + "taskName='" + taskName + '\'' + + ", taskDesc='" + taskDesc + '\'' + + ", taskStatus='" + taskStatus + '\'' + + ", taskId='" + taskId + '\'' + + '}'; + } + +} diff --git a/src/main/java/com/booleanuk/core/TodoList.java b/src/main/java/com/booleanuk/core/TodoList.java index 675adaf0b..c5e933128 100644 --- a/src/main/java/com/booleanuk/core/TodoList.java +++ b/src/main/java/com/booleanuk/core/TodoList.java @@ -1,5 +1,79 @@ package com.booleanuk.core; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; + + public class TodoList { + ArrayList tasks = new ArrayList<>(); + + public void addTask(String taskName, String taskDesc) { + Task task = new Task(taskName, taskDesc); + tasks.add(task); + } + + public String printList() { + String tasksString = ""; + if (!tasks.isEmpty()) { + Task task; + for (int i = 0; i < tasks.size(); i++) { + task = tasks.get(i); + tasksString = tasksString + "Name: " + task.taskName + " | "; + tasksString = tasksString + "Description: " + task.taskDesc + " | "; + tasksString = tasksString + "Status: " + task.taskStatus + "\n"; + } + } else { + tasksString = "There are currently no tasks in your to do list."; + } + return tasksString; + } + + public Task searchTask(String taskName) { + Task task = null; + for (int i = 0; i < tasks.size(); i++) { + if (tasks.get(i).taskName.equals(taskName)) { + task = tasks.get(i); + break; + } + } + if (task == null) { + System.out.println("This task doesn't exist within this list."); + } + return task; + } + + public void changeTaskStatus(String taskName, String newStatus) { + Task task = this.searchTask(taskName); + task.taskStatus = newStatus; + } + + public ArrayList filterList(String criteriaStatus, ArrayList tasks) { + ArrayList filteredTasks = new ArrayList<>(); + ; + Task task = null; + for (int i = 0; i < tasks.size(); i++) { + task = tasks.get(i); + if (task.taskStatus.equals(criteriaStatus)) { + filteredTasks.add(task); + } + } + System.out.println(filteredTasks); + return filteredTasks; + } + + public void deleteTask(String taskName) { + Task taskToDelete = this.searchTask(taskName); + tasks.remove(tasks.indexOf(taskToDelete)); + } + + public void sortListAscending() { + Collections.sort(tasks, (t1, t2) -> t1.taskName.compareTo(t2.taskName)); + + } + public void sortListDescending() { + Collections.sort(tasks, Comparator.comparing(task -> task.taskName, Comparator.reverseOrder())); + + } } diff --git a/src/main/java/com/booleanuk/core/domain-model.md b/src/main/java/com/booleanuk/core/domain-model.md new file mode 100644 index 000000000..c8feacdad --- /dev/null +++ b/src/main/java/com/booleanuk/core/domain-model.md @@ -0,0 +1,22 @@ +| Class | Method | Output | +|------------|----------------------------------------------------------|----------------------------------------------------------------------------------------| +| ToDoList | addTask(String taskName, String taskDesc ) | | +| ToDoList | printList() | List shown in console | +| Task | changeTaskStatus(String taskName, String newStatus) | | +| ToDoList | filterList(String criteriaStatus, ArrayList tasks) | List shown, filtered by criteria | +| ToDoList | searchTask(String taskName) | Task returned or not found message | +| ToDoList | deleteTask(String taskName) | List shown without deleted task | +| ToDoList | sortListAscending() | | +| ToDoList | sortListDescending() | | +| ToDoList | taskToString(Task task) | Task object as string | + + + + +| Class | Variable | +|----------|-------------------| +| ToDoList | Listtasks; | +| Task | String taskName | +| Task | String taskDesc | +| Task | String taskStatus | +| Task | String taskId | diff --git a/src/test/java/com/booleanuk/core/TodoListTest.java b/src/test/java/com/booleanuk/core/TodoListTest.java index 0bef779a4..2f1ce31ab 100644 --- a/src/test/java/com/booleanuk/core/TodoListTest.java +++ b/src/test/java/com/booleanuk/core/TodoListTest.java @@ -3,11 +3,118 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.ArrayList; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + class TodoListTest { @Test - public void exampleTest() { - String hello = "Hello"; - Assertions.assertEquals("Hello", hello); - Assertions.assertNotEquals("Goodbye", hello); + public void testAddTask() { + TodoList toDoList = new TodoList(); + toDoList.addTask("Make coffee", "Put nescafe in cup, follow with milk, sugar and hot water."); + Task task = toDoList.tasks.get(0); + System.out.println(task); + Assertions.assertEquals(task.taskName, "Make coffee"); + Assertions.assertEquals(task.taskDesc, "Put nescafe in cup, follow with milk, sugar and hot water."); + Assertions.assertEquals(task.taskStatus, "Incomplete"); + + + } + + @Test + public void testPrintList() { + TodoList toDoList = new TodoList(); + toDoList.addTask("1", "One"); + toDoList.addTask("2", "Two"); + toDoList.addTask("3", "Three"); + System.out.println(toDoList.toString()); + String list = toDoList.printList(); + Assertions.assertEquals("Name: 1 | Description: One | Status: Incomplete\nName: 2 | Description: Two | Status: Incomplete\nName: 3 | Description: Three | Status: Incomplete\n", list); + System.out.println(list); + } + + @Test + public void testSearchTask() { + TodoList toDoList = new TodoList(); + toDoList.addTask("1", "One"); + toDoList.addTask("2", "Two"); + toDoList.addTask("3", "Three"); + Task task = toDoList.searchTask("1"); + Task expectedTask = new Task("1","One"); + + Assertions.assertEquals(expectedTask.taskName,task.taskName ); + Assertions.assertEquals(expectedTask.taskDesc,task.taskDesc ); + + task = toDoList.searchTask("3"); + expectedTask = new Task("3","Three"); + + Assertions.assertEquals(expectedTask.taskName,task.taskName ); + Assertions.assertEquals(expectedTask.taskDesc,task.taskDesc ); + } + + + @Test + public void testChangeTaskStatus() { + TodoList toDoList = new TodoList(); + toDoList.addTask("1", "One"); + toDoList.addTask("2", "Two"); + toDoList.addTask("3", "Three"); + toDoList.changeTaskStatus("1", "Complete"); + Task searchTask = toDoList.searchTask("1"); + Assertions.assertEquals("Complete", searchTask.taskStatus); + } + @Test + public void testFilterList(){ + TodoList toDoList = new TodoList(); + toDoList.addTask("1", "One"); + toDoList.addTask("2", "Two"); + toDoList.addTask("3", "Three"); + toDoList.changeTaskStatus("1", "Complete"); + toDoList.changeTaskStatus("3", "Complete"); + ArrayList filteredList = toDoList.filterList("Complete", toDoList.tasks); + Assertions.assertEquals("Complete", filteredList.get(0).taskStatus); + Assertions.assertEquals("Complete", filteredList.get(1).taskStatus); + Assertions.assertEquals(2, filteredList.size()); + ArrayList filteredList2 = toDoList.filterList("Incomplete", toDoList.tasks); + Assertions.assertEquals("Incomplete", filteredList2.get(0).taskStatus); + } + + @Test + public void testDeleteTask(){ + TodoList toDoList = new TodoList(); + toDoList.addTask("1", "One"); + toDoList.addTask("2", "Two"); + toDoList.addTask("3", "Three"); + toDoList.deleteTask("2"); + Assertions.assertEquals(null, toDoList.searchTask("2")); + Task expectedTask = new Task("1","One"); + Assertions.assertEquals(expectedTask.taskName, toDoList.searchTask("1").taskName); + } + + @Test + public void testSortList(){ + TodoList toDoList = new TodoList(); + toDoList.addTask("A", "One"); + toDoList.addTask("B", "Two"); + toDoList.addTask("C", "Three"); + TodoList expectedSortedList = new TodoList(); + expectedSortedList.addTask("C", "Three"); + expectedSortedList.addTask("B", "Two"); + expectedSortedList.addTask("A", "One"); + toDoList.sortListDescending(); + Assertions.assertEquals(expectedSortedList.tasks.get(0).taskName, toDoList.tasks.get(0).taskName); + Assertions.assertEquals(expectedSortedList.tasks.get(2).taskName, toDoList.tasks.get(2).taskName); + TodoList expectedSortedListAsc = new TodoList(); + expectedSortedListAsc.addTask("A", "One"); + expectedSortedListAsc.addTask("B", "Two"); + expectedSortedListAsc.addTask("C", "Three"); + toDoList.sortListAscending(); + Assertions.assertEquals(expectedSortedListAsc.tasks.get(0).taskName, toDoList.tasks.get(0).taskName); + Assertions.assertEquals(expectedSortedListAsc.tasks.get(2).taskName, toDoList.tasks.get(2).taskName); + } + + }