diff --git a/domain-module.md b/domain-module.md new file mode 100644 index 000000000..14938b9d0 --- /dev/null +++ b/domain-module.md @@ -0,0 +1,22 @@ +# TODO list + +| Members | Methods | Scenario | Outputs | +|------------------------|------------------------|-------------------------|--------------------------------------| +| Arraylist\ tasks | add(Task task) | Task is already in list | False | +| | | Task is not in the list | True | +| | viewTask() | | Display the list | +| | viewCompletedTasks() | | Display the completed tasks | +| | viewIncompletedTasks() | | Display the incompleted tasks | +| | search(Task task) | Task does not exist | Print it was not found | +| | | Task exist | Print it was found | +| | removeTask(Task task) | Task does not exist | Print it was not found | +| | | Task does exist | Task removed | +| | viewAlphabeticAsc() | | Display list alphabetical ascending | +| | viewAplhabeticDesc() | | Display list alphabetical descending | + +# Task + +| Members | Methods | Scenario | Outputs | +|------------------|------------------------------|----------|------------------------| +| boolean complete | changeStatus(boolean status) | True | complete becomes True | +| String name | | False | complete becomes False | 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..21af15dd7 --- /dev/null +++ b/src/main/java/com/booleanuk/core/Task.java @@ -0,0 +1,27 @@ +package com.booleanuk.core; + +public class Task { + private String name; + private boolean complete; + + public Task(String name) { + this.name = name; + this.complete = false; + } + + public boolean isComplete() { + return complete; + } + + public void setComplete(boolean complete) { + this.complete = complete; + } + + public String getName() { + return name; + } + + public void changeStatus(boolean status) { + complete = status; + } +} diff --git a/src/main/java/com/booleanuk/core/TodoList.java b/src/main/java/com/booleanuk/core/TodoList.java index 675adaf0b..ee7610eab 100644 --- a/src/main/java/com/booleanuk/core/TodoList.java +++ b/src/main/java/com/booleanuk/core/TodoList.java @@ -1,5 +1,74 @@ package com.booleanuk.core; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Comparator; + public class TodoList { + private ArrayList tasks = new ArrayList<>(); + + public boolean add(Task task) { + if(tasks.contains(task)) { + return false; + } else { + tasks.add(task); + return true; + } + } + + public ArrayList viewTasks() { + return tasks; + } + + public ArrayList viewIncompleteTasks() { + ArrayList result = new ArrayList<>(); + for (int i = 0; i < tasks.size(); i++) { + if(!tasks.get(i).isComplete()) { + result.add(tasks.get(i)); + } + } + return result; + } + + public ArrayList viewCompleteTasks() { + ArrayList result = new ArrayList<>(); + for (int i = 0; i < tasks.size(); i++) { + if(tasks.get(i).isComplete()) { + result.add(tasks.get(i)); + } + } + return result; + } + + public Task search(Task task) { + if(tasks.contains(task)) { + return task; + } + System.out.println("The task was not found!"); + return null; + } + + public void remove (Task task) { + if(tasks.contains(task)) { + tasks.remove(task); + } + } + + public ArrayList viewAlphabeticalAsc() { + ArrayList result = new ArrayList<>(); + for (int i = 0; i < tasks.size(); i++) { + result.add(tasks.get(i).getName()); + } + result.sort(null); + return result; + } + public ArrayList viewAlphabeticalDesc() { + ArrayList result = new ArrayList<>(); + for (int i = 0; i < tasks.size(); i++) { + result.add(tasks.get(i).getName()); + } + result.sort(Comparator.reverseOrder()); + return result; + } } diff --git a/src/main/java/com/booleanuk/extension/TaskExtension.java b/src/main/java/com/booleanuk/extension/TaskExtension.java new file mode 100644 index 000000000..1b771a57f --- /dev/null +++ b/src/main/java/com/booleanuk/extension/TaskExtension.java @@ -0,0 +1,42 @@ +package com.booleanuk.extension; + +import java.time.format.DateTimeFormatter; +import java.util.UUID; + +public class TaskExtension { + private String name; + private boolean complete; + private String id; + private String date; + + public TaskExtension(String name) { + this.name = name; + this.complete = false; + this.id = UUID.randomUUID().toString(); + this.date = java.time.ZonedDateTime.now().format(DateTimeFormatter.ofPattern("MM/dd/yyyy HH:mm")); + } + + public String getName() { + return name; + } + + public boolean isComplete() { + return complete; + } + + public String getId() { + return id; + } + + public String getDate() { + return date; + } + + public void changeStatus(boolean status) { + complete = status; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/src/main/java/com/booleanuk/extension/TodoListExtensions.java b/src/main/java/com/booleanuk/extension/TodoListExtensions.java new file mode 100644 index 000000000..32e97e7b4 --- /dev/null +++ b/src/main/java/com/booleanuk/extension/TodoListExtensions.java @@ -0,0 +1,44 @@ +package com.booleanuk.extension; + +import java.util.HashMap; + +public class TodoListExtensions { + private HashMap todoList; + + public TodoListExtensions() { + this.todoList = new HashMap<>(); + } + + public HashMap getTodoList() { + return todoList; + } + + public String add(TaskExtension task) { + if(todoList.containsKey(task.getId())) { + return task.getId(); + } else { + todoList.put(task.getId(), task); + return task.getId(); + } + } + + public boolean changeName(String id, String name) { + if (todoList.containsKey(id)) { + todoList.get(id).setName(name); + return true; + } else { + System.out.println("Task is not in the todo list!"); + return false; + } + } + + public boolean changeStatus(String id, boolean status) { + if (todoList.containsKey(id)) { + todoList.get(id).changeStatus(status); + return true; + } else { + System.out.println("Task is not in the todo list!"); + return false; + } + } +} diff --git a/src/test/java/com/booleanuk/core/TaskTest.java b/src/test/java/com/booleanuk/core/TaskTest.java new file mode 100644 index 000000000..7310005f3 --- /dev/null +++ b/src/test/java/com/booleanuk/core/TaskTest.java @@ -0,0 +1,17 @@ +package com.booleanuk.core; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class TaskTest { + + @Test + public void statusChanged() { + Task task = new Task("Take out the garbage"); + task.changeStatus(true); + Assertions.assertTrue(task.isComplete()); + + task.changeStatus(false); + Assertions.assertFalse(task.isComplete()); + } +} diff --git a/src/test/java/com/booleanuk/core/TodoListTest.java b/src/test/java/com/booleanuk/core/TodoListTest.java index 0bef779a4..74e48bfd9 100644 --- a/src/test/java/com/booleanuk/core/TodoListTest.java +++ b/src/test/java/com/booleanuk/core/TodoListTest.java @@ -3,11 +3,139 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import java.util.ArrayList; +import java.util.Comparator; + class TodoListTest { + + @Test + public void addingTask() { + TodoList todoList = new TodoList(); + Task task = new Task("Take out the garbage"); + + Assertions.assertTrue(todoList.add(task)); + Assertions.assertFalse(todoList.add(task)); + } + + @Test + public void viewAllTasks() { + TodoList todoList = new TodoList(); + ArrayList empty = new ArrayList<>(); + Assertions.assertIterableEquals(empty, todoList.viewTasks()); + + Task task = new Task("Take out the garbage"); + todoList.add(task); + empty.add(task); + + Assertions.assertIterableEquals(empty, todoList.viewTasks()); + } + + @Test + public void checkViewAllIncompleteTasks() { + TodoList todoList = new TodoList(); + + Task task = new Task("Take out the garbage"); + Task taskComplete = new Task("Take out the garbage"); + taskComplete.setComplete(true); + todoList.add(taskComplete); + todoList.add(task); + + Assertions.assertNotEquals(todoList.viewTasks(), todoList.viewIncompleteTasks()); + } + @Test - public void exampleTest() { - String hello = "Hello"; - Assertions.assertEquals("Hello", hello); - Assertions.assertNotEquals("Goodbye", hello); + public void checkViewAllCompleteTasks() { + TodoList todoList = new TodoList(); + + Task task = new Task("Take out the garbage"); + Task taskComplete = new Task("Take out the garbage"); + taskComplete.setComplete(true); + todoList.add(task); + todoList.add(taskComplete); + + Assertions.assertNotEquals(todoList.viewTasks(), todoList.viewCompleteTasks()); } + + @Test + public void searchForTask() { + TodoList todoList = new TodoList(); + + Task task = new Task("Take out the garbage"); + Assertions.assertNotEquals(task, todoList.search(task)); + + todoList.add(task); + + Assertions.assertEquals(task, todoList.search(task)); + } + + @Test + public void removeTaskFromTodoList() { + TodoList todoList = new TodoList(); + + int numOfTasks = todoList.viewTasks().size(); + + Task task = new Task("Take out the garbage"); + todoList.add(task); + + Assertions.assertNotEquals(numOfTasks, todoList.viewTasks().size()); + + todoList.remove(task); + + Assertions.assertEquals(numOfTasks, todoList.viewTasks().size()); + } + + @Test + public void viewTasksAlphabeticallyAsc() { + TodoList todoList = new TodoList(); + ArrayList testTaskList = new ArrayList<>(); + ArrayList alphabeticalAsc = new ArrayList<>(); + + Task task = new Task("A"); + Task task2 = new Task("Z"); + Task task3 = new Task("D"); + + todoList.add(task); + todoList.add(task2); + todoList.add(task3); + + testTaskList.add(task); + testTaskList.add(task2); + testTaskList.add(task3); + + for(int i = 0; i < testTaskList.size(); i++) { + alphabeticalAsc.add(testTaskList.get(i).getName()); + } + + alphabeticalAsc.sort(null); + + Assertions.assertEquals(alphabeticalAsc, todoList.viewAlphabeticalAsc()); + } + + @Test + public void viewTasksAlphabeticallyDesc() { + TodoList todoList = new TodoList(); + ArrayList testTaskList = new ArrayList<>(); + ArrayList alphabeticalAsc = new ArrayList<>(); + + Task task = new Task("A"); + Task task2 = new Task("Z"); + Task task3 = new Task("D"); + + todoList.add(task); + todoList.add(task2); + todoList.add(task3); + + testTaskList.add(task); + testTaskList.add(task2); + testTaskList.add(task3); + + for(int i = 0; i < testTaskList.size(); i++) { + alphabeticalAsc.add(testTaskList.get(i).getName()); + } + + alphabeticalAsc.sort(Comparator.reverseOrder()); + + Assertions.assertEquals(alphabeticalAsc, todoList.viewAlphabeticalDesc()); + } + } diff --git a/src/test/java/com/booleanuk/extension/TodoListExtensionTest.java b/src/test/java/com/booleanuk/extension/TodoListExtensionTest.java new file mode 100644 index 000000000..419cc1749 --- /dev/null +++ b/src/test/java/com/booleanuk/extension/TodoListExtensionTest.java @@ -0,0 +1,54 @@ +package com.booleanuk.extension; + +import com.booleanuk.core.Task; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.time.format.DateTimeFormatter; + +public class TodoListExtensionTest { + + @Test + public void addingTask() { + TodoListExtensions todoList = new TodoListExtensions(); + TaskExtension task = new TaskExtension("Take out the garbage"); + + todoList.add(task); + + Assertions.assertEquals(task, todoList.getTodoList().get(task.getId())); + } + + @Test + public void changingNameOfTask() { + TodoListExtensions todoList = new TodoListExtensions(); + TaskExtension task = new TaskExtension("Take out the garbage"); + + todoList.add(task); + todoList.changeName(task.getId(), "Go grocery shopping"); + + Assertions.assertEquals("Go grocery shopping", task.getName()); + } + + @Test + public void changingStatusOfTask() { + TodoListExtensions todoList = new TodoListExtensions(); + TaskExtension task = new TaskExtension("Take out the garbage"); + + todoList.add(task); + todoList.changeStatus(task.getId(), true); + + Assertions.assertTrue(task.isComplete()); + } + + @Test + public void getDateOfTasks() { + TodoListExtensions todoList = new TodoListExtensions(); + TaskExtension task = new TaskExtension("Take out the garbage"); + String dateAtm = java.time.ZonedDateTime.now().format(DateTimeFormatter.ofPattern("MM/dd/yyyy HH:mm")); + + todoList.add(task); + String date = task.getDate(); + + Assertions.assertEquals(dateAtm, date); + } +}