From 00fbb12924b42d37b797ebc04e8ed22dda16ad70 Mon Sep 17 00:00:00 2001 From: Magnus-droid Date: Thu, 9 Jan 2025 13:13:47 +0100 Subject: [PATCH 1/9] Create domain-model.md for TodoList class and Task class --- domain-model.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 domain-model.md diff --git a/domain-model.md b/domain-model.md new file mode 100644 index 000000000..323481d1f --- /dev/null +++ b/domain-model.md @@ -0,0 +1,23 @@ + + # TodoList class + +| Members | Methods | Scenarios | Result | +|------------------------|-------------------------------------------|----------------------------------|-----------------------------| +| ArrayList\ tasks | boolean add(Task task) | Task is already in list | False | +| | | Task is not in list | True | +| | ArrayList\ viewTasks() | | Return entire todo list | +| | ArrayList\ viewIncompleteTasks() | | Return incomplete task list | +| | ArrayList\ viewCompleteTasks() | | Return complete task list | +| | Task searchTask(String name) | Task not found | Return null + error message | +| | | Task found | Return task | +| | void removeTask(Task task) | Task to be removed doesn't exist | Do nothing | +| | | Task to be removed exists | Remove task from todo list | +| | ArrayList\ alphabeticallyAscView() | | Return sorted todo list | +| | ArrayList\ alphabeticallyDescView() | | Return sorted todo list | + +# Task class + +| Members | Methods | Scenarios | Result | +|------------------|-----------------------------------|-----------------|-------------------------------| +| boolean complete | void changeStatus(boolean status) | status is true | Member complete becomes true | +| String name | | status is false | Member complete becomes false | From 6c1ce75f738b51936f99fe3fb045d9f151f5bd98 Mon Sep 17 00:00:00 2001 From: Magnus-droid Date: Thu, 9 Jan 2025 13:50:53 +0100 Subject: [PATCH 2/9] implement tests for Task class --- src/main/java/com/booleanuk/core/Task.java | 15 +++++++++++++++ src/test/java/com/booleanuk/core/TaskTest.java | 17 +++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 src/main/java/com/booleanuk/core/Task.java create mode 100644 src/test/java/com/booleanuk/core/TaskTest.java 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..56b9f294f --- /dev/null +++ b/src/main/java/com/booleanuk/core/Task.java @@ -0,0 +1,15 @@ +package com.booleanuk.core; + +public class Task { + String name; + boolean complete; + + public Task(String name) { + this.name = name; + this.complete = false; + + } + + void changeStatus(boolean status) { + } +} 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..14622e67a --- /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; + +class TaskTest { + @Test + public void testStatusChanges(){ + Task testTask = new Task("TestTask"); + testTask.changeStatus(true); + Assertions.assertTrue(testTask.complete); + testTask.changeStatus(false); + Assertions.assertFalse(testTask.complete); + } + + +} \ No newline at end of file From f50cf4b18f30427349b40d6239e5b145ca69b084 Mon Sep 17 00:00:00 2001 From: Magnus-droid Date: Thu, 9 Jan 2025 13:53:39 +0100 Subject: [PATCH 3/9] implemented Task functionality --- src/main/java/com/booleanuk/core/Task.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/booleanuk/core/Task.java b/src/main/java/com/booleanuk/core/Task.java index 56b9f294f..f6b6c9124 100644 --- a/src/main/java/com/booleanuk/core/Task.java +++ b/src/main/java/com/booleanuk/core/Task.java @@ -11,5 +11,6 @@ public Task(String name) { } void changeStatus(boolean status) { + this.complete = status; } } From c25fbf856800b324702bd2300902481655755520 Mon Sep 17 00:00:00 2001 From: Magnus-droid Date: Thu, 9 Jan 2025 14:55:43 +0100 Subject: [PATCH 4/9] Impemented searchTask + tests for it --- .../java/com/booleanuk/core/TodoList.java | 46 ++++++++++++++ .../java/com/booleanuk/core/TodoListTest.java | 61 +++++++++++++++++-- 2 files changed, 103 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/booleanuk/core/TodoList.java b/src/main/java/com/booleanuk/core/TodoList.java index 675adaf0b..b02de2ad7 100644 --- a/src/main/java/com/booleanuk/core/TodoList.java +++ b/src/main/java/com/booleanuk/core/TodoList.java @@ -1,5 +1,51 @@ package com.booleanuk.core; +import java.lang.reflect.Array; +import java.util.ArrayList; + public class TodoList { + ArrayList tasks = new ArrayList<>(); + + + public boolean add(Task task) { + if (!tasks.contains(task)) { + tasks.add(task); + return true; + } + return false; + } + + public ArrayList viewTasks() { + return tasks; + } + + public ArrayList viewIncompleteTasks() { + ArrayList incomplete = new ArrayList<>(); + for (Task task : this.tasks) { + if (!task.complete) { + incomplete.add(task); + } + } + return incomplete; + } + + public ArrayList viewCompleteTasks() { + ArrayList complete = new ArrayList<>(); + for (Task task : this.tasks) { + if (task.complete) { + complete.add(task); + } + } + return complete; + } + + Task searchTask(Task task) { + if(tasks.contains(task)) { + return task; + } + System.out.println("Task not found!"); + return null; + } + } diff --git a/src/test/java/com/booleanuk/core/TodoListTest.java b/src/test/java/com/booleanuk/core/TodoListTest.java index 0bef779a4..c7db79507 100644 --- a/src/test/java/com/booleanuk/core/TodoListTest.java +++ b/src/test/java/com/booleanuk/core/TodoListTest.java @@ -3,11 +3,64 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import java.lang.reflect.Array; +import java.util.ArrayList; + class TodoListTest { @Test - public void exampleTest() { - String hello = "Hello"; - Assertions.assertEquals("Hello", hello); - Assertions.assertNotEquals("Goodbye", hello); + public void checkForTaskInList() { + Task task = new Task("Test"); + TodoList todo = new TodoList(); + Assertions.assertTrue(todo.add(task)); + Assertions.assertFalse(todo.add(task)); + + } + + @Test + public void checkViewTask() { + Task task = new Task("Test"); + TodoList todo = new TodoList(); + ArrayList empty = new ArrayList<>(); + Assertions.assertIterableEquals(empty, todo.viewTasks()); + todo.add(task); + empty.add(task); + Assertions.assertIterableEquals(empty, todo.viewTasks()); + + } + + @Test + public void checkIncompleteTaskView() { + TodoList todo = new TodoList(); + Task taskIncomplete = new Task("Task incomplete"); + Task taskComplete = new Task("Task complete"); + taskComplete.changeStatus(true); + todo.add(taskIncomplete); + todo.add(taskComplete); + Assertions.assertNotEquals(todo.viewTasks(), todo.viewIncompleteTasks()); + } + + @Test + public void checkCompleteTaskView() { + TodoList todo = new TodoList(); + Task taskIncomplete = new Task("Task incomplete"); + Task taskComplete = new Task("Task complete"); + taskComplete.changeStatus(true); + todo.add(taskIncomplete); + todo.add(taskComplete); + Assertions.assertNotEquals(todo.viewTasks(), todo.viewCompleteTasks()); + } + + @Test + public void testSearchTaskName() { + TodoList todo = new TodoList(); + Task example = new Task("Example"); + + Assertions.assertNotEquals(example, todo.searchTask(example)); + todo.add(example); + + Assertions.assertEquals(example, todo.searchTask(example)); + + } + } From af4f0adc611f195b21bebaa2a36f7af86566c36c Mon Sep 17 00:00:00 2001 From: Magnus-droid Date: Thu, 9 Jan 2025 15:40:39 +0100 Subject: [PATCH 5/9] added test for ascening and removeTask --- domain-model.md | 2 +- .../java/com/booleanuk/core/TodoList.java | 8 +++++ .../java/com/booleanuk/core/TodoListTest.java | 32 +++++++++++++++++++ 3 files changed, 41 insertions(+), 1 deletion(-) diff --git a/domain-model.md b/domain-model.md index 323481d1f..5ce2b0ec9 100644 --- a/domain-model.md +++ b/domain-model.md @@ -8,7 +8,7 @@ | | ArrayList\ viewTasks() | | Return entire todo list | | | ArrayList\ viewIncompleteTasks() | | Return incomplete task list | | | ArrayList\ viewCompleteTasks() | | Return complete task list | -| | Task searchTask(String name) | Task not found | Return null + error message | +| | Task searchTask(Task task) | Task not found | Return null + error message | | | | Task found | Return task | | | void removeTask(Task task) | Task to be removed doesn't exist | Do nothing | | | | Task to be removed exists | Remove task from todo list | diff --git a/src/main/java/com/booleanuk/core/TodoList.java b/src/main/java/com/booleanuk/core/TodoList.java index b02de2ad7..e4cf1eba9 100644 --- a/src/main/java/com/booleanuk/core/TodoList.java +++ b/src/main/java/com/booleanuk/core/TodoList.java @@ -48,4 +48,12 @@ Task searchTask(Task task) { return null; } + void removeTask(Task task) { + + } + + ArrayList alphabeticallyAscView() { + return this.tasks; + } + } diff --git a/src/test/java/com/booleanuk/core/TodoListTest.java b/src/test/java/com/booleanuk/core/TodoListTest.java index c7db79507..d4a1a5670 100644 --- a/src/test/java/com/booleanuk/core/TodoListTest.java +++ b/src/test/java/com/booleanuk/core/TodoListTest.java @@ -60,6 +60,38 @@ public void testSearchTaskName() { Assertions.assertEquals(example, todo.searchTask(example)); + } + + @Test + public void testRemoveTask() { + TodoList todo = new TodoList(); + Task example = new Task("Example"); + Task example2 = new Task("Example2"); + todo.add(example); + ArrayList tasks = todo.viewTasks(); + todo.removeTask(example2); + Assertions.assertEquals(tasks, todo.viewTasks()); + + todo.add(example2); + tasks = todo.viewTasks(); + todo.removeTask(example2); + Assertions.assertNotEquals(todo.viewTasks(), tasks); + + } + + @Test + public void testAscending() { + TodoList todo = new TodoList(); + Task a = new Task("A"); + Task z = new Task("Zebra"); + Task f = new Task("Fair"); + + todo.add(a); + todo.add(f); + todo.add(z); + + Assertions.assertEquals(todo.viewTasks(), todo.alphabeticallyAscView()); + } From 75e0c9e145ce98f8a88ec7839f5069387c7eed47 Mon Sep 17 00:00:00 2001 From: Magnus-droid Date: Thu, 9 Jan 2025 16:00:28 +0100 Subject: [PATCH 6/9] added test for ascening and removeTask --- src/main/java/com/booleanuk/core/TodoList.java | 1 + src/test/java/com/booleanuk/core/TodoListTest.java | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/booleanuk/core/TodoList.java b/src/main/java/com/booleanuk/core/TodoList.java index e4cf1eba9..71241b59b 100644 --- a/src/main/java/com/booleanuk/core/TodoList.java +++ b/src/main/java/com/booleanuk/core/TodoList.java @@ -49,6 +49,7 @@ Task searchTask(Task task) { } void removeTask(Task task) { + this.tasks.remove(task); } diff --git a/src/test/java/com/booleanuk/core/TodoListTest.java b/src/test/java/com/booleanuk/core/TodoListTest.java index d4a1a5670..8a816e230 100644 --- a/src/test/java/com/booleanuk/core/TodoListTest.java +++ b/src/test/java/com/booleanuk/core/TodoListTest.java @@ -67,15 +67,16 @@ public void testRemoveTask() { TodoList todo = new TodoList(); Task example = new Task("Example"); Task example2 = new Task("Example2"); + todo.add(example); ArrayList tasks = todo.viewTasks(); todo.removeTask(example2); Assertions.assertEquals(tasks, todo.viewTasks()); todo.add(example2); - tasks = todo.viewTasks(); + int tasks_size = todo.tasks.size(); todo.removeTask(example2); - Assertions.assertNotEquals(todo.viewTasks(), tasks); + Assertions.assertNotEquals(todo.tasks.size(), tasks_size); } From e588a1776fcf0d019fa8c1ca8b744f90a0d7aefe Mon Sep 17 00:00:00 2001 From: Magnus-droid Date: Thu, 9 Jan 2025 16:23:30 +0100 Subject: [PATCH 7/9] Added ascening and descening tests + fixed domain-model.md --- domain-model.md | 26 +++++++++---------- .../java/com/booleanuk/core/TodoList.java | 21 +++++++++++++-- .../java/com/booleanuk/core/TodoListTest.java | 25 +++++++++++++++--- 3 files changed, 54 insertions(+), 18 deletions(-) diff --git a/domain-model.md b/domain-model.md index 5ce2b0ec9..07c81c722 100644 --- a/domain-model.md +++ b/domain-model.md @@ -1,19 +1,19 @@ # TodoList class -| Members | Methods | Scenarios | Result | -|------------------------|-------------------------------------------|----------------------------------|-----------------------------| -| ArrayList\ tasks | boolean add(Task task) | Task is already in list | False | -| | | Task is not in list | True | -| | ArrayList\ viewTasks() | | Return entire todo list | -| | ArrayList\ viewIncompleteTasks() | | Return incomplete task list | -| | ArrayList\ viewCompleteTasks() | | Return complete task list | -| | Task searchTask(Task task) | Task not found | Return null + error message | -| | | Task found | Return task | -| | void removeTask(Task task) | Task to be removed doesn't exist | Do nothing | -| | | Task to be removed exists | Remove task from todo list | -| | ArrayList\ alphabeticallyAscView() | | Return sorted todo list | -| | ArrayList\ alphabeticallyDescView() | | Return sorted todo list | +| Members | Methods | Scenarios | Result | +|------------------------|---------------------------------------------|----------------------------------|-----------------------------| +| ArrayList\ tasks | boolean add(Task task) | Task is already in list | False | +| | | Task is not in list | True | +| | ArrayList\ viewTasks() | | Return entire todo list | +| | ArrayList\ viewIncompleteTasks() | | Return incomplete task list | +| | ArrayList\ viewCompleteTasks() | | Return complete task list | +| | Task searchTask(Task task) | Task not found | Return null + error message | +| | | Task found | Return task | +| | void removeTask(Task task) | Task to be removed doesn't exist | Do nothing | +| | | Task to be removed exists | Remove task from todo list | +| | ArrayList\ alphabeticallyAscView() | | Return sorted todo list | +| | ArrayList\ alphabeticallyDescView() | | Return sorted todo list | # Task class diff --git a/src/main/java/com/booleanuk/core/TodoList.java b/src/main/java/com/booleanuk/core/TodoList.java index 71241b59b..1dc722084 100644 --- a/src/main/java/com/booleanuk/core/TodoList.java +++ b/src/main/java/com/booleanuk/core/TodoList.java @@ -2,6 +2,7 @@ import java.lang.reflect.Array; import java.util.ArrayList; +import java.util.Comparator; public class TodoList { @@ -53,8 +54,24 @@ void removeTask(Task task) { } - ArrayList alphabeticallyAscView() { - return this.tasks; + ArrayList alphabeticallyAscView() { + ArrayList results = new ArrayList<>(); + for (int i = 0; i < this.tasks.size(); i++) { + results.add(tasks.get(i).name); + + } + results.sort(null); + return results; + } + + ArrayList alphabeticallyDescView() { + ArrayList results = new ArrayList<>(); + for (int i = 0; i < this.tasks.size(); i++) { + results.add(tasks.get(i).name); + + } + results.sort(Comparator.reverseOrder()); + return results; } } diff --git a/src/test/java/com/booleanuk/core/TodoListTest.java b/src/test/java/com/booleanuk/core/TodoListTest.java index 8a816e230..77b31434c 100644 --- a/src/test/java/com/booleanuk/core/TodoListTest.java +++ b/src/test/java/com/booleanuk/core/TodoListTest.java @@ -87,12 +87,31 @@ public void testAscending() { Task z = new Task("Zebra"); Task f = new Task("Fair"); - todo.add(a); - todo.add(f); todo.add(z); + todo.add(f); + todo.add(a); + + Assertions.assertNotEquals(todo.viewTasks().get(0).name, todo.alphabeticallyAscView().get(0)); + Assertions.assertEquals(todo.viewTasks().get(1).name, todo.alphabeticallyAscView().get(1)); + Assertions.assertNotEquals(todo.viewTasks().get(2).name, todo.alphabeticallyAscView().get(2)); - Assertions.assertEquals(todo.viewTasks(), todo.alphabeticallyAscView()); + } + + + @Test + public void testDescending() { + TodoList todo = new TodoList(); + Task a = new Task("A"); + Task z = new Task("Zebra"); + Task f = new Task("Fair"); + + todo.add(z); + todo.add(f); + todo.add(a); + Assertions.assertEquals(todo.viewTasks().get(0).name, todo.alphabeticallyDescView().get(0)); + Assertions.assertEquals(todo.viewTasks().get(1).name, todo.alphabeticallyDescView().get(1)); + Assertions.assertEquals(todo.viewTasks().get(2).name, todo.alphabeticallyDescView().get(2)); } From 8051b7c75416c305cfa5a8362c3d1f9a0bb9383e Mon Sep 17 00:00:00 2001 From: Magnus-droid Date: Fri, 10 Jan 2025 08:06:06 +0100 Subject: [PATCH 8/9] Added tests for updateTaskNameByID, updateTaskStatusByID, getTaskByID and updated domain model --- domain-model.md | 33 ++-- src/main/java/com/booleanuk/core/Task.java | 2 +- .../java/com/booleanuk/core/TodoList.java | 10 +- .../booleanuk/extension/TaskExtension.java | 20 +++ .../extension/TodoListExtension.java | 101 ++++++++++++ .../java/com/booleanuk/core/TaskTest.java | 1 + .../extension/TaskExtensionTest.java | 16 ++ .../extension/TodoListExtensionTest.java | 150 ++++++++++++++++++ 8 files changed, 315 insertions(+), 18 deletions(-) create mode 100644 src/main/java/com/booleanuk/extension/TaskExtension.java create mode 100644 src/main/java/com/booleanuk/extension/TodoListExtension.java create mode 100644 src/test/java/com/booleanuk/extension/TaskExtensionTest.java create mode 100644 src/test/java/com/booleanuk/extension/TodoListExtensionTest.java diff --git a/domain-model.md b/domain-model.md index 07c81c722..5431d8def 100644 --- a/domain-model.md +++ b/domain-model.md @@ -1,19 +1,25 @@ # TodoList class -| Members | Methods | Scenarios | Result | -|------------------------|---------------------------------------------|----------------------------------|-----------------------------| -| ArrayList\ tasks | boolean add(Task task) | Task is already in list | False | -| | | Task is not in list | True | -| | ArrayList\ viewTasks() | | Return entire todo list | -| | ArrayList\ viewIncompleteTasks() | | Return incomplete task list | -| | ArrayList\ viewCompleteTasks() | | Return complete task list | -| | Task searchTask(Task task) | Task not found | Return null + error message | -| | | Task found | Return task | -| | void removeTask(Task task) | Task to be removed doesn't exist | Do nothing | -| | | Task to be removed exists | Remove task from todo list | -| | ArrayList\ alphabeticallyAscView() | | Return sorted todo list | -| | ArrayList\ alphabeticallyDescView() | | Return sorted todo list | +| Members | Methods | Scenarios | Result | +|------------------------|--------------------------------------------------------|----------------------------------|-----------------------------| +| ArrayList\ tasks | boolean add(Task task) | Task is already in list | False | +| | | Task is not in list | True | +| | ArrayList\ viewTasks() | | Return entire todo list | +| | ArrayList\ viewIncompleteTasks() | | Return incomplete task list | +| | ArrayList\ viewCompleteTasks() | | Return complete task list | +| | Task searchTask(Task task) | Task not found | Return null + error message | +| | | Task found | Return task | +| | void removeTask(Task task) | Task to be removed doesn't exist | Do nothing | +| | | Task to be removed exists | Remove task from todo list | +| | ArrayList\ alphabeticallyAscView() | | Return sorted todo list | +| | ArrayList\ alphabeticallyDescView() | | Return sorted todo list | +| | void updateTaskNameByID(UUID uid, String newName) | Invalid ID or task doesn't exist | Do nothing | +| | | Valid ID and task exists | Update the task name | +| | void updateTaskStatusByID(UUID uid, boolean newStatus) | Invalid ID or task doesn't exist | Do nothing | +| | | Valid ID and task exists | Update the task status | +| | TaskExtension getTaskByID(UUID uid) | Invalid ID or task doesn't exist | Do nothing | +| | | Valid ID and task exists | Return the task by ID | # Task class @@ -21,3 +27,4 @@ |------------------|-----------------------------------|-----------------|-------------------------------| | boolean complete | void changeStatus(boolean status) | status is true | Member complete becomes true | | String name | | status is false | Member complete becomes false | +| UUID uid | | | | diff --git a/src/main/java/com/booleanuk/core/Task.java b/src/main/java/com/booleanuk/core/Task.java index f6b6c9124..974f9323b 100644 --- a/src/main/java/com/booleanuk/core/Task.java +++ b/src/main/java/com/booleanuk/core/Task.java @@ -10,7 +10,7 @@ public Task(String name) { } - void changeStatus(boolean status) { + public void changeStatus(boolean status) { this.complete = status; } } diff --git a/src/main/java/com/booleanuk/core/TodoList.java b/src/main/java/com/booleanuk/core/TodoList.java index 1dc722084..6270cc335 100644 --- a/src/main/java/com/booleanuk/core/TodoList.java +++ b/src/main/java/com/booleanuk/core/TodoList.java @@ -56,21 +56,23 @@ void removeTask(Task task) { ArrayList alphabeticallyAscView() { ArrayList results = new ArrayList<>(); - for (int i = 0; i < this.tasks.size(); i++) { - results.add(tasks.get(i).name); + for (Task task : this.tasks) { + results.add(task.name); } results.sort(null); + //TODO: return a task ArrayList instead of a string ArrayList return results; } ArrayList alphabeticallyDescView() { ArrayList results = new ArrayList<>(); - for (int i = 0; i < this.tasks.size(); i++) { - results.add(tasks.get(i).name); + for (Task task : this.tasks) { + results.add(task.name); } results.sort(Comparator.reverseOrder()); + //TODO: return a task ArrayList instead of a string ArrayList return results; } 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..e7c9fbecb --- /dev/null +++ b/src/main/java/com/booleanuk/extension/TaskExtension.java @@ -0,0 +1,20 @@ +package com.booleanuk.extension; +import java.util.UUID; + +public class TaskExtension { + String name; + boolean complete; + UUID uid; + + public TaskExtension(String name) { + this.name = name; + this.complete = false; + this.uid = UUID.randomUUID(); + + } + + public void changeStatus(boolean status) { + this.complete = status; + } + +} diff --git a/src/main/java/com/booleanuk/extension/TodoListExtension.java b/src/main/java/com/booleanuk/extension/TodoListExtension.java new file mode 100644 index 000000000..c6c7f8410 --- /dev/null +++ b/src/main/java/com/booleanuk/extension/TodoListExtension.java @@ -0,0 +1,101 @@ +package com.booleanuk.extension; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.UUID; + +public class TodoListExtension { + + ArrayList tasks = new ArrayList<>(); + + + public boolean add(TaskExtension task) { + if (!tasks.contains(task)) { + tasks.add(task); + return true; + } + return false; + } + + public ArrayList viewTasks() { + return tasks; + } + + public ArrayList viewIncompleteTasks() { + ArrayList incomplete = new ArrayList<>(); + for (TaskExtension task : this.tasks) { + if (!task.complete) { + incomplete.add(task); + } + } + return incomplete; + } + + public ArrayList viewCompleteTasks() { + ArrayList complete = new ArrayList<>(); + for (TaskExtension task : this.tasks) { + if (task.complete) { + complete.add(task); + } + } + return complete; + } + + public TaskExtension searchTask(TaskExtension task) { + if(tasks.contains(task)) { + return task; + } + System.out.println("Task not found!"); + return null; + } + + public void removeTask(TaskExtension task) { + this.tasks.remove(task); + + } + + ArrayList alphabeticallyAscView() { + ArrayList names = new ArrayList<>(); + for (TaskExtension task : this.tasks) { + names.add(task.name); + + } + names.sort(null); + return names; + } + + ArrayList alphabeticallyDescView() { + ArrayList names = new ArrayList<>(); + for (TaskExtension task : this.tasks) { + names.add(task.name); + + } + names.sort(Comparator.reverseOrder()); + return names; + } + + public void updateTaskNameByID(UUID uid, String newName) { + for (TaskExtension task : this.tasks) { + if (task.uid == uid) { + task.name = newName; + } + } + } + + public void updateTaskStatusByID(UUID uid, boolean newStatus) { + for (TaskExtension task : this.tasks) { + if (task.uid == uid) { + task.changeStatus(newStatus); + } + } + } + + TaskExtension getTaskByID(UUID uid) { + for (TaskExtension task : this.tasks) { + if (task.uid == uid) { + return task; + } + } return null; + } + +} diff --git a/src/test/java/com/booleanuk/core/TaskTest.java b/src/test/java/com/booleanuk/core/TaskTest.java index 14622e67a..28b6be030 100644 --- a/src/test/java/com/booleanuk/core/TaskTest.java +++ b/src/test/java/com/booleanuk/core/TaskTest.java @@ -14,4 +14,5 @@ public void testStatusChanges(){ } + } \ No newline at end of file diff --git a/src/test/java/com/booleanuk/extension/TaskExtensionTest.java b/src/test/java/com/booleanuk/extension/TaskExtensionTest.java new file mode 100644 index 000000000..69f2c2e0e --- /dev/null +++ b/src/test/java/com/booleanuk/extension/TaskExtensionTest.java @@ -0,0 +1,16 @@ +package com.booleanuk.extension; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +class TaskExtensionTest { + @Test + public void testStatusChanges(){ + TaskExtension testTask = new TaskExtension("TestTask"); + testTask.changeStatus(true); + Assertions.assertTrue(testTask.complete); + testTask.changeStatus(false); + Assertions.assertFalse(testTask.complete); + } + +} \ No newline at end of file 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..5203639b7 --- /dev/null +++ b/src/test/java/com/booleanuk/extension/TodoListExtensionTest.java @@ -0,0 +1,150 @@ +package com.booleanuk.extension; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.UUID; + +class TodoListExtensionTest { + @Test + public void checkForTaskInList() { + TaskExtension task = new TaskExtension("Test"); + TodoListExtension todo = new TodoListExtension(); + Assertions.assertTrue(todo.add(task)); + Assertions.assertFalse(todo.add(task)); + + } + + @Test + public void checkViewTask() { + TaskExtension task = new TaskExtension("Test"); + TodoListExtension todo = new TodoListExtension(); + ArrayList empty = new ArrayList<>(); + Assertions.assertIterableEquals(empty, todo.viewTasks()); + todo.add(task); + empty.add(task); + Assertions.assertIterableEquals(empty, todo.viewTasks()); + + } + + @Test + public void checkIncompleteTaskView() { + TodoListExtension todo = new TodoListExtension(); + TaskExtension taskIncomplete = new TaskExtension("Task incomplete"); + TaskExtension taskComplete = new TaskExtension("Task complete"); + taskComplete.changeStatus(true); + todo.add(taskIncomplete); + todo.add(taskComplete); + Assertions.assertNotEquals(todo.viewTasks(), todo.viewIncompleteTasks()); + } + + @Test + public void checkCompleteTaskView() { + TodoListExtension todo = new TodoListExtension(); + TaskExtension taskIncomplete = new TaskExtension("Task incomplete"); + TaskExtension taskComplete = new TaskExtension("Task complete"); + taskComplete.changeStatus(true); + todo.add(taskIncomplete); + todo.add(taskComplete); + Assertions.assertNotEquals(todo.viewTasks(), todo.viewCompleteTasks()); + } + + @Test + public void testSearchTaskName() { + TodoListExtension todo = new TodoListExtension(); + TaskExtension example = new TaskExtension("Example"); + + Assertions.assertNotEquals(example, todo.searchTask(example)); + todo.add(example); + + Assertions.assertEquals(example, todo.searchTask(example)); + + } + + @Test + public void testRemoveTask() { + TodoListExtension todo = new TodoListExtension(); + TaskExtension example = new TaskExtension("Example"); + TaskExtension example2 = new TaskExtension("Example2"); + + todo.add(example); + ArrayList tasks = todo.viewTasks(); + todo.removeTask(example2); + Assertions.assertEquals(tasks, todo.viewTasks()); + + todo.add(example2); + int tasks_size = todo.tasks.size(); + todo.removeTask(example2); + Assertions.assertNotEquals(todo.tasks.size(), tasks_size); + + } + + @Test + public void testAscending() { + TodoListExtension todo = new TodoListExtension(); + TaskExtension a = new TaskExtension("A"); + TaskExtension z = new TaskExtension("Zebra"); + TaskExtension f = new TaskExtension("Fair"); + + todo.add(z); + todo.add(f); + todo.add(a); + + Assertions.assertNotEquals(todo.viewTasks().get(0).name, todo.alphabeticallyAscView().get(0)); + Assertions.assertEquals(todo.viewTasks().get(1).name, todo.alphabeticallyAscView().get(1)); + Assertions.assertNotEquals(todo.viewTasks().get(2).name, todo.alphabeticallyAscView().get(2)); + + } + + + @Test + public void testDescending() { + TodoListExtension todo = new TodoListExtension(); + TaskExtension a = new TaskExtension("A"); + TaskExtension z = new TaskExtension("Zebra"); + TaskExtension f = new TaskExtension("Fair"); + + todo.add(z); + todo.add(f); + todo.add(a); + + Assertions.assertEquals(todo.viewTasks().get(0).name, todo.alphabeticallyDescView().get(0)); + Assertions.assertEquals(todo.viewTasks().get(1).name, todo.alphabeticallyDescView().get(1)); + Assertions.assertEquals(todo.viewTasks().get(2).name, todo.alphabeticallyDescView().get(2)); + + } + + @Test + public void testUpdateName() { + TodoListExtension todo = new TodoListExtension(); + TaskExtension task = new TaskExtension("Task1"); + UUID taskID = task.uid; + todo.add(task); + todo.updateTaskNameByID(taskID, "new Name"); + Assertions.assertEquals("new Name", task.name); + } + + @Test + public void testUpdateStatus() { + TodoListExtension todo = new TodoListExtension(); + TaskExtension task = new TaskExtension("Task1"); + UUID taskID = task.uid; + todo.add(task); + todo.updateTaskStatusByID(taskID, true); + Assertions.assertTrue(task.complete); + todo.updateTaskStatusByID(taskID, false); + Assertions.assertFalse(task.complete); + } + + @Test + public void testGetTask() { + TodoListExtension todo = new TodoListExtension(); + TaskExtension task = new TaskExtension("Task1"); + UUID taskID = task.uid; + todo.add(task); + TaskExtension testTask = todo.getTaskByID(taskID); + Assertions.assertEquals(task, testTask); + } + +} From 4de89623d59cc960244837f3be7ce589fa326734 Mon Sep 17 00:00:00 2001 From: Magnus-droid Date: Fri, 10 Jan 2025 08:28:47 +0100 Subject: [PATCH 9/9] remove TODOs in core --- src/main/java/com/booleanuk/core/TodoList.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/com/booleanuk/core/TodoList.java b/src/main/java/com/booleanuk/core/TodoList.java index 6270cc335..3bb791ee5 100644 --- a/src/main/java/com/booleanuk/core/TodoList.java +++ b/src/main/java/com/booleanuk/core/TodoList.java @@ -61,7 +61,6 @@ ArrayList alphabeticallyAscView() { } results.sort(null); - //TODO: return a task ArrayList instead of a string ArrayList return results; } @@ -72,7 +71,6 @@ ArrayList alphabeticallyDescView() { } results.sort(Comparator.reverseOrder()); - //TODO: return a task ArrayList instead of a string ArrayList return results; }