From 20a7794e13c6a337e8c68ec393998c958f0d0177 Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Thu, 9 Jan 2025 14:32:45 +0100 Subject: [PATCH 01/46] First version domain model, from collaboration with peers --- domain-model.md | 62 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 domain-model.md diff --git a/domain-model.md b/domain-model.md new file mode 100644 index 000000000..9bfad9d7a --- /dev/null +++ b/domain-model.md @@ -0,0 +1,62 @@ +## Todo + +| Method | Member Variable | Scenario | Result | +|-----------------------------------------------|--------------------------------|-------------------------------------------------------------------------------|------------------------------------| +| add(String name) | HashMap tasks | Task with the provided name is not already in the todolist | true | +| | | Task with the provided name is already in the todolist | false | +| | | | | +| listTasks( ) | | There are tasks in the todolist | string with all tasks | +| | | There are no tasks in the todolist | string with error message | +| | | | | +| updateTaskStatus(String name, Boolean status) | | There is a task with the provided name and has the requested status | true | +| | | There is no task with the provided name or does not have the requested status | false | +| | | | | +| getCompletedTasks() | | There are completed tasks in the todolist | string with all completed tasks | +| | | There are no completed tasks in the todolist | string with error message | +| | | | | +| getNotCompletedTasks() | | There are uncompleted tasks in the todolist | string with all uncompleted tasks | +| | | There are no uncompleted tasks in the todolist | string with error message | +| | | | | +| SearchTask(String) | | There was a task with the provided name | string with the task | +| | | There was no task with the provided name | string with error message | +| | | | | +| removeTask(String) | | Task with the provided name is not in the todolist | true | +| | | Task with the provided name is in the todolist | false | +| | | | | +| taskDescending() | | There are tasks in the todolist | string in descending order by name | +| | | There are no tasks in the todolist | string with error message | +| | | | | +| taskAscending() | | There are tasks in the todolist | string in ascending order by name | +| | | There are no tasks in the todolist | string with error message | + + + +# Extension + +## Todo + +| Method | Member Variable | Scenario | Result | +|----------------------------------------------|-----------------------|----------|--------| +| add(String name) | ArrayList tasks | | | +| | id | | | +| listTasks( ) | | | | +| updateTaskStatus(Task task, Boolean state) | | | | +| | | | | +| getCompletedTasks() | | | | +| getNotCompletedTasks() | | | | +| SearchTask(Task task) | | | | +| removeTask(Task task) | | | | +| taskDescending() | | | | +| taskAscending() | | | | +| getTaskById(int id) | | | | +| updateTaskName(int id, String newName) | | | | +| updateTaskStatusById(int id, Boolean status) | | | | +| | | | | + +## Task + +| Method | Member Variable | Scenario | Result | +|--------|------------------|----------|--------| +| | | | | +| | Boolean complete | | | +| | String name | | | \ No newline at end of file From d47db52045f55c40d2e941f3708c4c517b5992ca Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Thu, 9 Jan 2025 14:33:46 +0100 Subject: [PATCH 02/46] testAddNewTaskToList red implementation --- .../java/com/booleanuk/core/TodoListTest.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/test/java/com/booleanuk/core/TodoListTest.java b/src/test/java/com/booleanuk/core/TodoListTest.java index 0bef779a4..06e907521 100644 --- a/src/test/java/com/booleanuk/core/TodoListTest.java +++ b/src/test/java/com/booleanuk/core/TodoListTest.java @@ -3,11 +3,19 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import java.util.HashMap; + class TodoListTest { + + HashMap tasks = new HashMap<>() {{ + put("Tidy up", false); + put("Finish task", false); + put("Lunch", true); + }}; + @Test - public void exampleTest() { - String hello = "Hello"; - Assertions.assertEquals("Hello", hello); - Assertions.assertNotEquals("Goodbye", hello); + public void testAddNewTaskToList() { + tasks.put("Sleep", false); + Assertions.assertTrue(true); } } From 18307048c50b7f0026a2a707578a27c791881880 Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Thu, 9 Jan 2025 16:08:45 +0100 Subject: [PATCH 03/46] Added add method to pass testAddNewTaskToList green implementation. Slight change to domain model --- domain-model.md | 56 +++++++++---------- .../java/com/booleanuk/core/TodoList.java | 10 ++++ .../java/com/booleanuk/core/TodoListTest.java | 15 +++-- 3 files changed, 45 insertions(+), 36 deletions(-) diff --git a/domain-model.md b/domain-model.md index 9bfad9d7a..9506184a1 100644 --- a/domain-model.md +++ b/domain-model.md @@ -1,33 +1,33 @@ ## Todo -| Method | Member Variable | Scenario | Result | -|-----------------------------------------------|--------------------------------|-------------------------------------------------------------------------------|------------------------------------| -| add(String name) | HashMap tasks | Task with the provided name is not already in the todolist | true | -| | | Task with the provided name is already in the todolist | false | -| | | | | -| listTasks( ) | | There are tasks in the todolist | string with all tasks | -| | | There are no tasks in the todolist | string with error message | -| | | | | -| updateTaskStatus(String name, Boolean status) | | There is a task with the provided name and has the requested status | true | -| | | There is no task with the provided name or does not have the requested status | false | -| | | | | -| getCompletedTasks() | | There are completed tasks in the todolist | string with all completed tasks | -| | | There are no completed tasks in the todolist | string with error message | -| | | | | -| getNotCompletedTasks() | | There are uncompleted tasks in the todolist | string with all uncompleted tasks | -| | | There are no uncompleted tasks in the todolist | string with error message | -| | | | | -| SearchTask(String) | | There was a task with the provided name | string with the task | -| | | There was no task with the provided name | string with error message | -| | | | | -| removeTask(String) | | Task with the provided name is not in the todolist | true | -| | | Task with the provided name is in the todolist | false | -| | | | | -| taskDescending() | | There are tasks in the todolist | string in descending order by name | -| | | There are no tasks in the todolist | string with error message | -| | | | | -| taskAscending() | | There are tasks in the todolist | string in ascending order by name | -| | | There are no tasks in the todolist | string with error message | +| Method | Member Variable | Scenario | Result | +|-------------------------------------------------------|--------------------------------|-------------------------------------------------------------------------------|------------------------------------| +| add(HashMap tasks, String name) | HashMap tasks | Task with the provided name is not already in the todolist | true | +| | | Task with the provided name is already in the todolist | false | +| | | | | +| listTasks( ) | | There are tasks in the todolist | string with all tasks | +| | | There are no tasks in the todolist | string with error message | +| | | | | +| updateTaskStatus(String name, Boolean status) | | There is a task with the provided name and has the requested status | true | +| | | There is no task with the provided name or does not have the requested status | false | +| | | | | +| getCompletedTasks() | | There are completed tasks in the todolist | string with all completed tasks | +| | | There are no completed tasks in the todolist | string with error message | +| | | | | +| getNotCompletedTasks() | | There are uncompleted tasks in the todolist | string with all uncompleted tasks | +| | | There are no uncompleted tasks in the todolist | string with error message | +| | | | | +| SearchTask(String) | | There was a task with the provided name | string with the task | +| | | There was no task with the provided name | string with error message | +| | | | | +| removeTask(String) | | Task with the provided name is not in the todolist | true | +| | | Task with the provided name is in the todolist | false | +| | | | | +| taskDescending() | | There are tasks in the todolist | string in descending order by name | +| | | There are no tasks in the todolist | string with error message | +| | | | | +| taskAscending() | | There are tasks in the todolist | string in ascending order by name | +| | | There are no tasks in the todolist | string with error message | diff --git a/src/main/java/com/booleanuk/core/TodoList.java b/src/main/java/com/booleanuk/core/TodoList.java index 675adaf0b..e6c70aba3 100644 --- a/src/main/java/com/booleanuk/core/TodoList.java +++ b/src/main/java/com/booleanuk/core/TodoList.java @@ -1,5 +1,15 @@ package com.booleanuk.core; +import java.util.HashMap; + public class TodoList { + public Boolean add(HashMap tasks, String name) { + Boolean status = false; + if (!tasks.containsKey(name)) { + tasks.put(name, status); + return true; + } + return false; + } } diff --git a/src/test/java/com/booleanuk/core/TodoListTest.java b/src/test/java/com/booleanuk/core/TodoListTest.java index 06e907521..1443c738c 100644 --- a/src/test/java/com/booleanuk/core/TodoListTest.java +++ b/src/test/java/com/booleanuk/core/TodoListTest.java @@ -7,15 +7,14 @@ class TodoListTest { - HashMap tasks = new HashMap<>() {{ - put("Tidy up", false); - put("Finish task", false); - put("Lunch", true); - }}; - @Test public void testAddNewTaskToList() { - tasks.put("Sleep", false); - Assertions.assertTrue(true); + TodoList todoList = new TodoList(); + HashMap tasks = new HashMap<>() {{ + put("Tidy up", false); + put("Finish task", false); + put("Lunch", true); + }}; + Assertions.assertTrue(todoList.add(tasks, "Sleep")); } } From 7b563d922bdd529ca5ae8cc96db215e3e73816e4 Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Thu, 9 Jan 2025 16:12:47 +0100 Subject: [PATCH 04/46] Forgot to add test to check for already existing task, added now but passes immediately --- src/test/java/com/booleanuk/core/TodoListTest.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/test/java/com/booleanuk/core/TodoListTest.java b/src/test/java/com/booleanuk/core/TodoListTest.java index 1443c738c..ce64945ae 100644 --- a/src/test/java/com/booleanuk/core/TodoListTest.java +++ b/src/test/java/com/booleanuk/core/TodoListTest.java @@ -17,4 +17,15 @@ public void testAddNewTaskToList() { }}; Assertions.assertTrue(todoList.add(tasks, "Sleep")); } + + @Test + public void testAddOldTaskToList() { + TodoList todoList = new TodoList(); + HashMap tasks = new HashMap<>() {{ + put("Tidy up", false); + put("Finish task", false); + put("Lunch", true); + }}; + Assertions.assertFalse(todoList.add(tasks, "Lunch")); + } } From e901abb1b5f93a4b92b65e84cf8999b1f2dc0c57 Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Thu, 9 Jan 2025 16:48:26 +0100 Subject: [PATCH 05/46] Added red testListAllTasks - no code --- .../java/com/booleanuk/core/TodoListTest.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/test/java/com/booleanuk/core/TodoListTest.java b/src/test/java/com/booleanuk/core/TodoListTest.java index ce64945ae..c8c2f7b86 100644 --- a/src/test/java/com/booleanuk/core/TodoListTest.java +++ b/src/test/java/com/booleanuk/core/TodoListTest.java @@ -28,4 +28,19 @@ public void testAddOldTaskToList() { }}; Assertions.assertFalse(todoList.add(tasks, "Lunch")); } + + @Test + public void testListAllTasks() { + TodoList todoList = new TodoList(); + HashMap tasks = new HashMap<>() {{ + put("Tidy up", false); + put("Finish task", false); + put("Lunch", true); + }}; + Assertions.assertEquals(false, todoList.listTasks(tasks, "Tidy up")); + Assertions.assertEquals(false, todoList.listTasks(tasks, "Finish task")); + Assertions.assertEquals(true, todoList.listTasks(tasks, "Lunch")); + } + + } From 87241165aa5a8c9167e892f6dde2157147a852ac Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Thu, 9 Jan 2025 22:26:27 +0100 Subject: [PATCH 06/46] Corrected testListAllTasks --- src/test/java/com/booleanuk/core/TodoListTest.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/test/java/com/booleanuk/core/TodoListTest.java b/src/test/java/com/booleanuk/core/TodoListTest.java index c8c2f7b86..ec0fd8283 100644 --- a/src/test/java/com/booleanuk/core/TodoListTest.java +++ b/src/test/java/com/booleanuk/core/TodoListTest.java @@ -37,9 +37,7 @@ public void testListAllTasks() { put("Finish task", false); put("Lunch", true); }}; - Assertions.assertEquals(false, todoList.listTasks(tasks, "Tidy up")); - Assertions.assertEquals(false, todoList.listTasks(tasks, "Finish task")); - Assertions.assertEquals(true, todoList.listTasks(tasks, "Lunch")); + Assertions.assertEquals("Tidy up, Finish task, Lunch", todoList.listTasks(tasks)); } From ad01e12c699f158eb84bd8e476d6c0be51ba42ed Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Thu, 9 Jan 2025 22:32:05 +0100 Subject: [PATCH 07/46] Add method listTasks to make testListAllTasks pass/be green + minor fix to test --- src/main/java/com/booleanuk/core/TodoList.java | 4 ++++ src/test/java/com/booleanuk/core/TodoListTest.java | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/booleanuk/core/TodoList.java b/src/main/java/com/booleanuk/core/TodoList.java index e6c70aba3..929f7e200 100644 --- a/src/main/java/com/booleanuk/core/TodoList.java +++ b/src/main/java/com/booleanuk/core/TodoList.java @@ -12,4 +12,8 @@ public Boolean add(HashMap tasks, String name) { } return false; } + + public String listTasks(HashMap tasks) { + return tasks.keySet().toString(); + } } diff --git a/src/test/java/com/booleanuk/core/TodoListTest.java b/src/test/java/com/booleanuk/core/TodoListTest.java index ec0fd8283..935b2f518 100644 --- a/src/test/java/com/booleanuk/core/TodoListTest.java +++ b/src/test/java/com/booleanuk/core/TodoListTest.java @@ -37,7 +37,7 @@ public void testListAllTasks() { put("Finish task", false); put("Lunch", true); }}; - Assertions.assertEquals("Tidy up, Finish task, Lunch", todoList.listTasks(tasks)); + Assertions.assertEquals("[Tidy up, Finish task, Lunch]", todoList.listTasks(tasks)); } From 2afd7090c489bcb51a5f4ad889398072912e5e05 Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Thu, 9 Jan 2025 22:34:04 +0100 Subject: [PATCH 08/46] Added testListNoTask- red --- src/test/java/com/booleanuk/core/TodoListTest.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/test/java/com/booleanuk/core/TodoListTest.java b/src/test/java/com/booleanuk/core/TodoListTest.java index 935b2f518..ecf199db7 100644 --- a/src/test/java/com/booleanuk/core/TodoListTest.java +++ b/src/test/java/com/booleanuk/core/TodoListTest.java @@ -40,5 +40,10 @@ public void testListAllTasks() { Assertions.assertEquals("[Tidy up, Finish task, Lunch]", todoList.listTasks(tasks)); } - + @Test + public void testListNoTask() { + TodoList todoList = new TodoList(); + HashMap tasks = new HashMap<>(); + Assertions.assertEquals("Todo-list is empty", todoList.listTasks(tasks)); + } } From aed16d661c1d1a163289d69ee58bcdf1269c59e6 Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Thu, 9 Jan 2025 22:40:13 +0100 Subject: [PATCH 09/46] Add code to make testListNoTask pass - green --- src/main/java/com/booleanuk/core/TodoList.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/booleanuk/core/TodoList.java b/src/main/java/com/booleanuk/core/TodoList.java index 929f7e200..001b5eeec 100644 --- a/src/main/java/com/booleanuk/core/TodoList.java +++ b/src/main/java/com/booleanuk/core/TodoList.java @@ -14,6 +14,12 @@ public Boolean add(HashMap tasks, String name) { } public String listTasks(HashMap tasks) { - return tasks.keySet().toString(); + String output = ""; + if (tasks.isEmpty()) { + output = "Todo-list is empty"; + return output; + } + output = tasks.keySet().toString(); + return output; } } From f181facda571652696330820176486af3bbc7616 Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Thu, 9 Jan 2025 23:24:13 +0100 Subject: [PATCH 10/46] Add failing test testUpdateTaskStatusFalseToTrue - red --- src/test/java/com/booleanuk/core/TodoListTest.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/test/java/com/booleanuk/core/TodoListTest.java b/src/test/java/com/booleanuk/core/TodoListTest.java index ecf199db7..47a6c059a 100644 --- a/src/test/java/com/booleanuk/core/TodoListTest.java +++ b/src/test/java/com/booleanuk/core/TodoListTest.java @@ -46,4 +46,13 @@ public void testListNoTask() { HashMap tasks = new HashMap<>(); Assertions.assertEquals("Todo-list is empty", todoList.listTasks(tasks)); } + + @Test + public void testUpdateTaskStatusFalseToTrue() { + TodoList todoList = new TodoList(); + HashMap tasks = new HashMap<>() {{ + put("Tidy up", false); + }}; + Assertions.assertTrue(todoList.updateTaskStatus(tasks, "Tidy up")); + } } From aae79162eb753fc9be556dbd84f12e20c03cf2c3 Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Thu, 9 Jan 2025 23:41:41 +0100 Subject: [PATCH 11/46] Add method updateTaskStatus to pass testUpdateTaskStatusFalseToTrue - green --- src/main/java/com/booleanuk/core/TodoList.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/booleanuk/core/TodoList.java b/src/main/java/com/booleanuk/core/TodoList.java index 001b5eeec..1a8a90c05 100644 --- a/src/main/java/com/booleanuk/core/TodoList.java +++ b/src/main/java/com/booleanuk/core/TodoList.java @@ -14,7 +14,7 @@ public Boolean add(HashMap tasks, String name) { } public String listTasks(HashMap tasks) { - String output = ""; + String output; if (tasks.isEmpty()) { output = "Todo-list is empty"; return output; @@ -22,4 +22,12 @@ public String listTasks(HashMap tasks) { output = tasks.keySet().toString(); return output; } + + public Boolean updateTaskStatus(HashMap tasks, String name) { + if (tasks.get(name).equals(false)) { + tasks.put(name, true); + return true; + } + return false; + } } From 868a4617fb3d59bf0d836613e2238a09a630a2ce Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Thu, 9 Jan 2025 23:50:56 +0100 Subject: [PATCH 12/46] Update method updateTaskStatus to pass more cases of testUpdateTaskStatusFalseToTrue - green --- src/main/java/com/booleanuk/core/TodoList.java | 5 +++++ src/test/java/com/booleanuk/core/TodoListTest.java | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/booleanuk/core/TodoList.java b/src/main/java/com/booleanuk/core/TodoList.java index 1a8a90c05..0b7559eab 100644 --- a/src/main/java/com/booleanuk/core/TodoList.java +++ b/src/main/java/com/booleanuk/core/TodoList.java @@ -26,6 +26,11 @@ public String listTasks(HashMap tasks) { public Boolean updateTaskStatus(HashMap tasks, String name) { if (tasks.get(name).equals(false)) { tasks.put(name, true); + System.out.println(tasks.entrySet()); + return true; + } else if (tasks.get(name).equals(true)) { + tasks.put(name, false); + System.out.println(tasks.entrySet()); return true; } return false; diff --git a/src/test/java/com/booleanuk/core/TodoListTest.java b/src/test/java/com/booleanuk/core/TodoListTest.java index 47a6c059a..2b657fd6b 100644 --- a/src/test/java/com/booleanuk/core/TodoListTest.java +++ b/src/test/java/com/booleanuk/core/TodoListTest.java @@ -48,11 +48,15 @@ public void testListNoTask() { } @Test - public void testUpdateTaskStatusFalseToTrue() { + public void testUpdateTaskStatus() { TodoList todoList = new TodoList(); HashMap tasks = new HashMap<>() {{ put("Tidy up", false); + put("Lunch", true); }}; Assertions.assertTrue(todoList.updateTaskStatus(tasks, "Tidy up")); + Assertions.assertTrue(todoList.updateTaskStatus(tasks, "Lunch")); + } + } From 91bedffdbff2a4402b9614888f388af05e309ba5 Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Thu, 9 Jan 2025 23:56:48 +0100 Subject: [PATCH 13/46] Update method updateTaskStatus and test to pass more cases of testUpdateTaskStatusFalseToTrue - green --- src/main/java/com/booleanuk/core/TodoList.java | 5 +++-- src/test/java/com/booleanuk/core/TodoListTest.java | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/booleanuk/core/TodoList.java b/src/main/java/com/booleanuk/core/TodoList.java index 0b7559eab..0659ef340 100644 --- a/src/main/java/com/booleanuk/core/TodoList.java +++ b/src/main/java/com/booleanuk/core/TodoList.java @@ -24,13 +24,14 @@ public String listTasks(HashMap tasks) { } public Boolean updateTaskStatus(HashMap tasks, String name) { + if (!tasks.containsKey(name)) { + return false; + } if (tasks.get(name).equals(false)) { tasks.put(name, true); - System.out.println(tasks.entrySet()); return true; } else if (tasks.get(name).equals(true)) { tasks.put(name, false); - System.out.println(tasks.entrySet()); return true; } return false; diff --git a/src/test/java/com/booleanuk/core/TodoListTest.java b/src/test/java/com/booleanuk/core/TodoListTest.java index 2b657fd6b..1708b6610 100644 --- a/src/test/java/com/booleanuk/core/TodoListTest.java +++ b/src/test/java/com/booleanuk/core/TodoListTest.java @@ -56,7 +56,7 @@ public void testUpdateTaskStatus() { }}; Assertions.assertTrue(todoList.updateTaskStatus(tasks, "Tidy up")); Assertions.assertTrue(todoList.updateTaskStatus(tasks, "Lunch")); - + Assertions.assertFalse(todoList.updateTaskStatus(tasks, "Finish task")); } } From 4f817f35da86f0ca9b1d6b4256b25f96cef6a08f Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Fri, 10 Jan 2025 00:13:44 +0100 Subject: [PATCH 14/46] Add failing testListCompletedTasks - red --- src/test/java/com/booleanuk/core/TodoListTest.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/test/java/com/booleanuk/core/TodoListTest.java b/src/test/java/com/booleanuk/core/TodoListTest.java index 1708b6610..c55e38f2a 100644 --- a/src/test/java/com/booleanuk/core/TodoListTest.java +++ b/src/test/java/com/booleanuk/core/TodoListTest.java @@ -59,4 +59,15 @@ public void testUpdateTaskStatus() { Assertions.assertFalse(todoList.updateTaskStatus(tasks, "Finish task")); } + @Test + public void testListCompletedTasks() { + TodoList todoList = new TodoList(); + HashMap tasks = new HashMap<>() {{ + put("Tidy up", false); + put("Finish task", false); + put("Lunch", true); + }}; + Assertions.assertEquals("[Lunch]", todoList.listCompletedTasks(tasks)); + } + } From 01bc3257568ed255e428bef8d0bdadd6611efb53 Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Fri, 10 Jan 2025 00:47:06 +0100 Subject: [PATCH 15/46] Update domain model and add not completed code for listCompletedTasks method --- domain-model.md | 56 +++++++++---------- .../java/com/booleanuk/core/TodoList.java | 10 ++++ 2 files changed, 38 insertions(+), 28 deletions(-) diff --git a/domain-model.md b/domain-model.md index 9506184a1..e7aaf7c3b 100644 --- a/domain-model.md +++ b/domain-model.md @@ -1,33 +1,33 @@ ## Todo -| Method | Member Variable | Scenario | Result | -|-------------------------------------------------------|--------------------------------|-------------------------------------------------------------------------------|------------------------------------| -| add(HashMap tasks, String name) | HashMap tasks | Task with the provided name is not already in the todolist | true | -| | | Task with the provided name is already in the todolist | false | -| | | | | -| listTasks( ) | | There are tasks in the todolist | string with all tasks | -| | | There are no tasks in the todolist | string with error message | -| | | | | -| updateTaskStatus(String name, Boolean status) | | There is a task with the provided name and has the requested status | true | -| | | There is no task with the provided name or does not have the requested status | false | -| | | | | -| getCompletedTasks() | | There are completed tasks in the todolist | string with all completed tasks | -| | | There are no completed tasks in the todolist | string with error message | -| | | | | -| getNotCompletedTasks() | | There are uncompleted tasks in the todolist | string with all uncompleted tasks | -| | | There are no uncompleted tasks in the todolist | string with error message | -| | | | | -| SearchTask(String) | | There was a task with the provided name | string with the task | -| | | There was no task with the provided name | string with error message | -| | | | | -| removeTask(String) | | Task with the provided name is not in the todolist | true | -| | | Task with the provided name is in the todolist | false | -| | | | | -| taskDescending() | | There are tasks in the todolist | string in descending order by name | -| | | There are no tasks in the todolist | string with error message | -| | | | | -| taskAscending() | | There are tasks in the todolist | string in ascending order by name | -| | | There are no tasks in the todolist | string with error message | +| Method | Member Variable | Scenario | Result | +|--------------------------------------------------|--------------------------------|-------------------------------------------------------------------------------|------------------------------------| +| add(HashMap tasks, String name) | HashMap tasks | Task with the provided name is not already in the todolist | true | +| | | Task with the provided name is already in the todolist | false | +| | | | | +| listTasks( ) | | There are tasks in the todolist | string with all tasks | +| | | There are no tasks in the todolist | string with error message | +| | | | | +| updateTaskStatus(String name, Boolean status) | | There is a task with the provided name and has the requested status | true | +| | | There is no task with the provided name or does not have the requested status | false | +| | | | | +| listCompletedTasks() | | There are completed tasks in the todolist | string with all completed tasks | +| | | There are no completed tasks in the todolist | string with error message | +| | | | | +| listNotCompletedTasks() | | There are uncompleted tasks in the todolist | string with all uncompleted tasks | +| | | There are no uncompleted tasks in the todolist | string with error message | +| | | | | +| SearchTask(String) | | There was a task with the provided name | string with the task | +| | | There was no task with the provided name | string with error message | +| | | | | +| removeTask(String) | | Task with the provided name is not in the todolist | true | +| | | Task with the provided name is in the todolist | false | +| | | | | +| taskDescending() | | There are tasks in the todolist | string in descending order by name | +| | | There are no tasks in the todolist | string with error message | +| | | | | +| taskAscending() | | There are tasks in the todolist | string in ascending order by name | +| | | There are no tasks in the todolist | string with error message | diff --git a/src/main/java/com/booleanuk/core/TodoList.java b/src/main/java/com/booleanuk/core/TodoList.java index 0659ef340..7e69a8358 100644 --- a/src/main/java/com/booleanuk/core/TodoList.java +++ b/src/main/java/com/booleanuk/core/TodoList.java @@ -1,6 +1,7 @@ package com.booleanuk.core; import java.util.HashMap; +// import java.util.Map; public class TodoList { @@ -36,4 +37,13 @@ public Boolean updateTaskStatus(HashMap tasks, String name) { } return false; } + + /*public String listCompletedTasks(HashMap tasks) { + HashMap completedTasks; + for (Map.Entry task : tasks.entrySet()) { + if (task.getKey().equals(true)) { + completedTasks.put(task.getKey(), true); + } + } + }*/ } From 623b0af7f84ff6cea66d14c6868b3ab92d5810d6 Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Thu, 16 Jan 2025 16:56:38 +0100 Subject: [PATCH 16/46] Refactor TodoList to keep HashMap of tasks --- .../java/com/booleanuk/core/TodoList.java | 11 ++-- .../java/com/booleanuk/core/TodoListTest.java | 52 +++++++------------ 2 files changed, 28 insertions(+), 35 deletions(-) diff --git a/src/main/java/com/booleanuk/core/TodoList.java b/src/main/java/com/booleanuk/core/TodoList.java index 7e69a8358..041bb4cad 100644 --- a/src/main/java/com/booleanuk/core/TodoList.java +++ b/src/main/java/com/booleanuk/core/TodoList.java @@ -4,8 +4,13 @@ // import java.util.Map; public class TodoList { + private HashMap tasks; - public Boolean add(HashMap tasks, String name) { + public TodoList(HashMap tasks) { + this.tasks = new HashMap<>(tasks); + } + + public Boolean add(String name) { Boolean status = false; if (!tasks.containsKey(name)) { tasks.put(name, status); @@ -14,7 +19,7 @@ public Boolean add(HashMap tasks, String name) { return false; } - public String listTasks(HashMap tasks) { + public String listTasks() { String output; if (tasks.isEmpty()) { output = "Todo-list is empty"; @@ -24,7 +29,7 @@ public String listTasks(HashMap tasks) { return output; } - public Boolean updateTaskStatus(HashMap tasks, String name) { + public Boolean updateTaskStatus(String name) { if (!tasks.containsKey(name)) { return false; } diff --git a/src/test/java/com/booleanuk/core/TodoListTest.java b/src/test/java/com/booleanuk/core/TodoListTest.java index c55e38f2a..957f202e0 100644 --- a/src/test/java/com/booleanuk/core/TodoListTest.java +++ b/src/test/java/com/booleanuk/core/TodoListTest.java @@ -1,65 +1,53 @@ package com.booleanuk.core; import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import java.util.HashMap; class TodoListTest { - @Test - public void testAddNewTaskToList() { - TodoList todoList = new TodoList(); + private TodoList todoList; + + @BeforeEach + public void setUp() { HashMap tasks = new HashMap<>() {{ put("Tidy up", false); - put("Finish task", false); put("Lunch", true); }}; - Assertions.assertTrue(todoList.add(tasks, "Sleep")); + todoList = new TodoList(tasks); + } + + @Test + public void testAddNewTaskToList() { + Assertions.assertTrue(todoList.add("Sleep")); } @Test public void testAddOldTaskToList() { - TodoList todoList = new TodoList(); - HashMap tasks = new HashMap<>() {{ - put("Tidy up", false); - put("Finish task", false); - put("Lunch", true); - }}; - Assertions.assertFalse(todoList.add(tasks, "Lunch")); + Assertions.assertFalse(todoList.add("Lunch")); } @Test public void testListAllTasks() { - TodoList todoList = new TodoList(); - HashMap tasks = new HashMap<>() {{ - put("Tidy up", false); - put("Finish task", false); - put("Lunch", true); - }}; - Assertions.assertEquals("[Tidy up, Finish task, Lunch]", todoList.listTasks(tasks)); + Assertions.assertEquals("[Tidy up, Lunch]", todoList.listTasks()); } @Test public void testListNoTask() { - TodoList todoList = new TodoList(); - HashMap tasks = new HashMap<>(); - Assertions.assertEquals("Todo-list is empty", todoList.listTasks(tasks)); + HashMap noTasks = new HashMap<>(); + TodoList todoList = new TodoList(noTasks); + Assertions.assertEquals("Todo-list is empty", todoList.listTasks()); } @Test public void testUpdateTaskStatus() { - TodoList todoList = new TodoList(); - HashMap tasks = new HashMap<>() {{ - put("Tidy up", false); - put("Lunch", true); - }}; - Assertions.assertTrue(todoList.updateTaskStatus(tasks, "Tidy up")); - Assertions.assertTrue(todoList.updateTaskStatus(tasks, "Lunch")); - Assertions.assertFalse(todoList.updateTaskStatus(tasks, "Finish task")); + Assertions.assertTrue(todoList.updateTaskStatus("Tidy up")); + Assertions.assertTrue(todoList.updateTaskStatus("Lunch")); } - @Test + /*@Test public void testListCompletedTasks() { TodoList todoList = new TodoList(); HashMap tasks = new HashMap<>() {{ @@ -68,6 +56,6 @@ public void testListCompletedTasks() { put("Lunch", true); }}; Assertions.assertEquals("[Lunch]", todoList.listCompletedTasks(tasks)); - } + }*/ } From 962d34e728d5c6d6e5d8c422416c1e202f70ae54 Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Thu, 16 Jan 2025 16:58:25 +0100 Subject: [PATCH 17/46] Add testListCompletedTasks - red --- src/test/java/com/booleanuk/core/TodoListTest.java | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/src/test/java/com/booleanuk/core/TodoListTest.java b/src/test/java/com/booleanuk/core/TodoListTest.java index 957f202e0..e6d06f438 100644 --- a/src/test/java/com/booleanuk/core/TodoListTest.java +++ b/src/test/java/com/booleanuk/core/TodoListTest.java @@ -47,15 +47,9 @@ public void testUpdateTaskStatus() { Assertions.assertTrue(todoList.updateTaskStatus("Lunch")); } - /*@Test + @Test public void testListCompletedTasks() { - TodoList todoList = new TodoList(); - HashMap tasks = new HashMap<>() {{ - put("Tidy up", false); - put("Finish task", false); - put("Lunch", true); - }}; - Assertions.assertEquals("[Lunch]", todoList.listCompletedTasks(tasks)); - }*/ + Assertions.assertEquals("[Lunch]", todoList.listCompletedTasks()); + } } From 2321fe3785e1c926576c965aa2a30070b211d39a Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Thu, 16 Jan 2025 22:34:11 +0100 Subject: [PATCH 18/46] Add method listCompletedTasks - green --- src/main/java/com/booleanuk/core/TodoList.java | 13 +++++++------ src/test/java/com/booleanuk/core/TodoListTest.java | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/booleanuk/core/TodoList.java b/src/main/java/com/booleanuk/core/TodoList.java index 041bb4cad..7b70db71d 100644 --- a/src/main/java/com/booleanuk/core/TodoList.java +++ b/src/main/java/com/booleanuk/core/TodoList.java @@ -1,7 +1,7 @@ package com.booleanuk.core; import java.util.HashMap; -// import java.util.Map; +import java.util.Map; public class TodoList { private HashMap tasks; @@ -43,12 +43,13 @@ public Boolean updateTaskStatus(String name) { return false; } - /*public String listCompletedTasks(HashMap tasks) { - HashMap completedTasks; + public String listCompletedTasks() { + StringBuilder completed = new StringBuilder(); for (Map.Entry task : tasks.entrySet()) { - if (task.getKey().equals(true)) { - completedTasks.put(task.getKey(), true); + if (task.getValue()) { + completed.append(task.getKey()).append(", "); } } - }*/ + return completed.toString(); + } } diff --git a/src/test/java/com/booleanuk/core/TodoListTest.java b/src/test/java/com/booleanuk/core/TodoListTest.java index e6d06f438..516abcaf2 100644 --- a/src/test/java/com/booleanuk/core/TodoListTest.java +++ b/src/test/java/com/booleanuk/core/TodoListTest.java @@ -49,7 +49,7 @@ public void testUpdateTaskStatus() { @Test public void testListCompletedTasks() { - Assertions.assertEquals("[Lunch]", todoList.listCompletedTasks()); + Assertions.assertEquals("Lunch, ", todoList.listCompletedTasks()); } } From e85df578a4c74d277e6ae4ee9927bd89b8a4aa65 Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Thu, 16 Jan 2025 22:41:04 +0100 Subject: [PATCH 19/46] Add testListNotCompletedTasks - red --- src/test/java/com/booleanuk/core/TodoListTest.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/test/java/com/booleanuk/core/TodoListTest.java b/src/test/java/com/booleanuk/core/TodoListTest.java index 516abcaf2..c40a60bbb 100644 --- a/src/test/java/com/booleanuk/core/TodoListTest.java +++ b/src/test/java/com/booleanuk/core/TodoListTest.java @@ -52,4 +52,9 @@ public void testListCompletedTasks() { Assertions.assertEquals("Lunch, ", todoList.listCompletedTasks()); } + @Test + public void testListNotCompletedTasks() { + Assertions.assertEquals("Tidy up, ", todoList.listNotCompletedTasks()); + } + } From 316b049eb9eca1abc3d369833106242579ce8495 Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Thu, 16 Jan 2025 22:42:50 +0100 Subject: [PATCH 20/46] Add method listNotCompletedTasks - green --- src/main/java/com/booleanuk/core/TodoList.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/com/booleanuk/core/TodoList.java b/src/main/java/com/booleanuk/core/TodoList.java index 7b70db71d..3f96faa56 100644 --- a/src/main/java/com/booleanuk/core/TodoList.java +++ b/src/main/java/com/booleanuk/core/TodoList.java @@ -52,4 +52,14 @@ public String listCompletedTasks() { } return completed.toString(); } + + public String listNotCompletedTasks() { + StringBuilder completed = new StringBuilder(); + for (Map.Entry task : tasks.entrySet()) { + if (! task.getValue()) { + completed.append(task.getKey()).append(", "); + } + } + return completed.toString(); + } } From e1a35e4df873ad4292dc9870fd1b5a603095c1bc Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Thu, 16 Jan 2025 22:47:14 +0100 Subject: [PATCH 21/46] Add testSearchForTask - red --- src/test/java/com/booleanuk/core/TodoListTest.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/test/java/com/booleanuk/core/TodoListTest.java b/src/test/java/com/booleanuk/core/TodoListTest.java index c40a60bbb..f0e2562e6 100644 --- a/src/test/java/com/booleanuk/core/TodoListTest.java +++ b/src/test/java/com/booleanuk/core/TodoListTest.java @@ -57,4 +57,9 @@ public void testListNotCompletedTasks() { Assertions.assertEquals("Tidy up, ", todoList.listNotCompletedTasks()); } + @Test + public void testSearchForTask() { + Assertions.assertEquals("Task could not be found", todoList.searchForTask("Shower")); + } + } From e9ac4b8614f41ae5160273f16a88eacc39d9c832 Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Thu, 16 Jan 2025 22:50:50 +0100 Subject: [PATCH 22/46] Add method searchForTask - green --- src/main/java/com/booleanuk/core/TodoList.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/com/booleanuk/core/TodoList.java b/src/main/java/com/booleanuk/core/TodoList.java index 3f96faa56..5018971c1 100644 --- a/src/main/java/com/booleanuk/core/TodoList.java +++ b/src/main/java/com/booleanuk/core/TodoList.java @@ -62,4 +62,11 @@ public String listNotCompletedTasks() { } return completed.toString(); } + + public String searchForTask(String task) { + if (!tasks.containsKey(task)) { + return "Task could not be found"; + } + return "Here's your task: " + task; + } } From 0ba23e96dd89b9fb12e99811e24cdde167adaa71 Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Thu, 16 Jan 2025 22:53:40 +0100 Subject: [PATCH 23/46] Add testRemoveTask - red --- src/test/java/com/booleanuk/core/TodoListTest.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/test/java/com/booleanuk/core/TodoListTest.java b/src/test/java/com/booleanuk/core/TodoListTest.java index f0e2562e6..d52b4538b 100644 --- a/src/test/java/com/booleanuk/core/TodoListTest.java +++ b/src/test/java/com/booleanuk/core/TodoListTest.java @@ -62,4 +62,8 @@ public void testSearchForTask() { Assertions.assertEquals("Task could not be found", todoList.searchForTask("Shower")); } + @Test + public void testRemoveTask() { + Assertions.assertEquals("Task removed successfully", todoList.removeTask()); + } } From 2f9b6f61f013cd228dab11a8fb31b23959bae2d1 Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Thu, 16 Jan 2025 22:55:03 +0100 Subject: [PATCH 24/46] Add an actual task to remove in testRemoveTask - red --- src/test/java/com/booleanuk/core/TodoListTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/booleanuk/core/TodoListTest.java b/src/test/java/com/booleanuk/core/TodoListTest.java index d52b4538b..dce0258df 100644 --- a/src/test/java/com/booleanuk/core/TodoListTest.java +++ b/src/test/java/com/booleanuk/core/TodoListTest.java @@ -64,6 +64,6 @@ public void testSearchForTask() { @Test public void testRemoveTask() { - Assertions.assertEquals("Task removed successfully", todoList.removeTask()); + Assertions.assertEquals("Task removed successfully", todoList.removeTask("Lunch")); } } From 084bb7173d455ec35d952bdb94ed3545d7b74069 Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Thu, 16 Jan 2025 22:56:25 +0100 Subject: [PATCH 25/46] Add method removeTask - green --- src/main/java/com/booleanuk/core/TodoList.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/com/booleanuk/core/TodoList.java b/src/main/java/com/booleanuk/core/TodoList.java index 5018971c1..019e6bf87 100644 --- a/src/main/java/com/booleanuk/core/TodoList.java +++ b/src/main/java/com/booleanuk/core/TodoList.java @@ -69,4 +69,9 @@ public String searchForTask(String task) { } return "Here's your task: " + task; } + + public String removeTask(String task) { + tasks.remove(task); + return "Task removed successfully"; + } } From cb634629463178cf88db5078954c4cb14c08b91e Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Thu, 16 Jan 2025 22:58:29 +0100 Subject: [PATCH 26/46] Refactor removeTask to verify task is actually removed from list - green --- src/main/java/com/booleanuk/core/TodoList.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/booleanuk/core/TodoList.java b/src/main/java/com/booleanuk/core/TodoList.java index 019e6bf87..ae88b9ff9 100644 --- a/src/main/java/com/booleanuk/core/TodoList.java +++ b/src/main/java/com/booleanuk/core/TodoList.java @@ -72,6 +72,9 @@ public String searchForTask(String task) { public String removeTask(String task) { tasks.remove(task); - return "Task removed successfully"; + if (!tasks.containsKey(task)) { + return "Task removed successfully"; + } + return "Could not remove task"; } } From 2393460eae4cdaf281987214ccdf2f00281c0b95 Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Thu, 16 Jan 2025 23:02:48 +0100 Subject: [PATCH 27/46] Refactor removeTask and test to verify task was on todolist before - green --- src/main/java/com/booleanuk/core/TodoList.java | 3 +++ src/test/java/com/booleanuk/core/TodoListTest.java | 1 + 2 files changed, 4 insertions(+) diff --git a/src/main/java/com/booleanuk/core/TodoList.java b/src/main/java/com/booleanuk/core/TodoList.java index ae88b9ff9..8f4002c47 100644 --- a/src/main/java/com/booleanuk/core/TodoList.java +++ b/src/main/java/com/booleanuk/core/TodoList.java @@ -71,6 +71,9 @@ public String searchForTask(String task) { } public String removeTask(String task) { + if (!tasks.containsKey(task)) { + return "This task is not on your todolist"; + } tasks.remove(task); if (!tasks.containsKey(task)) { return "Task removed successfully"; diff --git a/src/test/java/com/booleanuk/core/TodoListTest.java b/src/test/java/com/booleanuk/core/TodoListTest.java index dce0258df..2bf3bc99d 100644 --- a/src/test/java/com/booleanuk/core/TodoListTest.java +++ b/src/test/java/com/booleanuk/core/TodoListTest.java @@ -65,5 +65,6 @@ public void testSearchForTask() { @Test public void testRemoveTask() { Assertions.assertEquals("Task removed successfully", todoList.removeTask("Lunch")); + Assertions.assertEquals("This task is not on your todolist", todoList.removeTask("Shower")); } } From bf463d5edb8a077f748671aaeb25fdaf9b9f9aa7 Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Thu, 16 Jan 2025 23:06:14 +0100 Subject: [PATCH 28/46] Add testListAscending - red --- src/test/java/com/booleanuk/core/TodoListTest.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/test/java/com/booleanuk/core/TodoListTest.java b/src/test/java/com/booleanuk/core/TodoListTest.java index 2bf3bc99d..6aca84293 100644 --- a/src/test/java/com/booleanuk/core/TodoListTest.java +++ b/src/test/java/com/booleanuk/core/TodoListTest.java @@ -67,4 +67,9 @@ public void testRemoveTask() { Assertions.assertEquals("Task removed successfully", todoList.removeTask("Lunch")); Assertions.assertEquals("This task is not on your todolist", todoList.removeTask("Shower")); } + + @Test + public void testListsAscending() { + Assertions.assertEquals("Lunch, Tidy up, ", todoList.listAscending()); + } } From 5641ca6d57fc3ae6c9515bd85249c4dda7ac20f8 Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Thu, 16 Jan 2025 23:19:53 +0100 Subject: [PATCH 29/46] Add method listAscending - green --- src/main/java/com/booleanuk/core/TodoList.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/booleanuk/core/TodoList.java b/src/main/java/com/booleanuk/core/TodoList.java index 8f4002c47..7b5c384fb 100644 --- a/src/main/java/com/booleanuk/core/TodoList.java +++ b/src/main/java/com/booleanuk/core/TodoList.java @@ -1,7 +1,6 @@ package com.booleanuk.core; -import java.util.HashMap; -import java.util.Map; +import java.util.*; public class TodoList { private HashMap tasks; @@ -80,4 +79,14 @@ public String removeTask(String task) { } return "Could not remove task"; } + + public String listAscending() { + StringBuilder ascending = new StringBuilder(); + List tasksNames = new ArrayList<>(tasks.keySet()); + Collections.sort(tasksNames); + for (String task : tasksNames) { + ascending.append(task).append(", "); + } + return ascending.toString(); + } } From ac48219a3a9d04a894e684057119e7f631951fd8 Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Thu, 16 Jan 2025 23:20:56 +0100 Subject: [PATCH 30/46] Add testListDescending - red --- src/test/java/com/booleanuk/core/TodoListTest.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/test/java/com/booleanuk/core/TodoListTest.java b/src/test/java/com/booleanuk/core/TodoListTest.java index 6aca84293..f4cb691ac 100644 --- a/src/test/java/com/booleanuk/core/TodoListTest.java +++ b/src/test/java/com/booleanuk/core/TodoListTest.java @@ -72,4 +72,9 @@ public void testRemoveTask() { public void testListsAscending() { Assertions.assertEquals("Lunch, Tidy up, ", todoList.listAscending()); } + + @Test + public void testListsDescending() { + Assertions.assertEquals("Tidy up, Lunch, ", todoList.listDescending()); + } } From a8ead4e7b45113fc49fc349b62bea157d97ea4ed Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Thu, 16 Jan 2025 23:23:10 +0100 Subject: [PATCH 31/46] Add method listDescending - green --- src/main/java/com/booleanuk/core/TodoList.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/com/booleanuk/core/TodoList.java b/src/main/java/com/booleanuk/core/TodoList.java index 7b5c384fb..2ce2ae263 100644 --- a/src/main/java/com/booleanuk/core/TodoList.java +++ b/src/main/java/com/booleanuk/core/TodoList.java @@ -89,4 +89,14 @@ public String listAscending() { } return ascending.toString(); } + + public String listDescending() { + StringBuilder ascending = new StringBuilder(); + List tasksNames = new ArrayList<>(tasks.keySet()); + Collections.sort(tasksNames, Collections.reverseOrder()); + for (String task : tasksNames) { + ascending.append(task).append(", "); + } + return ascending.toString(); + } } From 729ddbdf331e1ffc10cbbdfa79ad8ba9b83a9515 Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Thu, 16 Jan 2025 23:37:23 +0100 Subject: [PATCH 32/46] Refactor listCompletedTasks and listNotCompletedTasks and their tests to include case of no completed tasks or no incomplete tasks --- .../java/com/booleanuk/core/TodoList.java | 26 ++++++++++++------- .../java/com/booleanuk/core/TodoListTest.java | 4 +++ 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/booleanuk/core/TodoList.java b/src/main/java/com/booleanuk/core/TodoList.java index 2ce2ae263..9f6a0672d 100644 --- a/src/main/java/com/booleanuk/core/TodoList.java +++ b/src/main/java/com/booleanuk/core/TodoList.java @@ -43,23 +43,29 @@ public Boolean updateTaskStatus(String name) { } public String listCompletedTasks() { - StringBuilder completed = new StringBuilder(); - for (Map.Entry task : tasks.entrySet()) { - if (task.getValue()) { - completed.append(task.getKey()).append(", "); + if (tasks.containsValue(true)) { + StringBuilder completed = new StringBuilder(); + for (Map.Entry task : tasks.entrySet()) { + if (task.getValue()) { + completed.append(task.getKey()).append(", "); + } } + return completed.toString(); } - return completed.toString(); + return "You have no completed tasks"; } public String listNotCompletedTasks() { - StringBuilder completed = new StringBuilder(); - for (Map.Entry task : tasks.entrySet()) { - if (! task.getValue()) { - completed.append(task.getKey()).append(", "); + if (tasks.containsValue(false)) { + StringBuilder completed = new StringBuilder(); + for (Map.Entry task : tasks.entrySet()) { + if (!task.getValue()) { + completed.append(task.getKey()).append(", "); + } } + return completed.toString(); } - return completed.toString(); + return "You have no incomplete tasks"; } public String searchForTask(String task) { diff --git a/src/test/java/com/booleanuk/core/TodoListTest.java b/src/test/java/com/booleanuk/core/TodoListTest.java index f4cb691ac..a7ac243e2 100644 --- a/src/test/java/com/booleanuk/core/TodoListTest.java +++ b/src/test/java/com/booleanuk/core/TodoListTest.java @@ -50,11 +50,15 @@ public void testUpdateTaskStatus() { @Test public void testListCompletedTasks() { Assertions.assertEquals("Lunch, ", todoList.listCompletedTasks()); + todoList.removeTask("Lunch"); + Assertions.assertEquals("You have no completed tasks", todoList.listCompletedTasks()); } @Test public void testListNotCompletedTasks() { Assertions.assertEquals("Tidy up, ", todoList.listNotCompletedTasks()); + todoList.removeTask("Tidy up"); + Assertions.assertEquals("You have no incomplete tasks", todoList.listNotCompletedTasks()); } @Test From f8aa9761024350b5ba01087e177958b56acd52b0 Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Thu, 16 Jan 2025 23:45:27 +0100 Subject: [PATCH 33/46] Refactor listAscending and listDescending and their tests to account for empty todolist --- .../java/com/booleanuk/core/TodoList.java | 30 +++++++++++-------- .../java/com/booleanuk/core/TodoListTest.java | 6 ++++ 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/booleanuk/core/TodoList.java b/src/main/java/com/booleanuk/core/TodoList.java index 9f6a0672d..42839bdcd 100644 --- a/src/main/java/com/booleanuk/core/TodoList.java +++ b/src/main/java/com/booleanuk/core/TodoList.java @@ -87,22 +87,28 @@ public String removeTask(String task) { } public String listAscending() { - StringBuilder ascending = new StringBuilder(); - List tasksNames = new ArrayList<>(tasks.keySet()); - Collections.sort(tasksNames); - for (String task : tasksNames) { - ascending.append(task).append(", "); + if (!tasks.isEmpty()) { + StringBuilder ascending = new StringBuilder(); + List tasksNames = new ArrayList<>(tasks.keySet()); + Collections.sort(tasksNames); + for (String task : tasksNames) { + ascending.append(task).append(", "); + } + return ascending.toString(); } - return ascending.toString(); + return "Your todolist is empty"; } public String listDescending() { - StringBuilder ascending = new StringBuilder(); - List tasksNames = new ArrayList<>(tasks.keySet()); - Collections.sort(tasksNames, Collections.reverseOrder()); - for (String task : tasksNames) { - ascending.append(task).append(", "); + if (!tasks.isEmpty()) { + StringBuilder ascending = new StringBuilder(); + List tasksNames = new ArrayList<>(tasks.keySet()); + Collections.sort(tasksNames, Collections.reverseOrder()); + for (String task : tasksNames) { + ascending.append(task).append(", "); + } + return ascending.toString(); } - return ascending.toString(); + return "Your todolist is empty"; } } diff --git a/src/test/java/com/booleanuk/core/TodoListTest.java b/src/test/java/com/booleanuk/core/TodoListTest.java index a7ac243e2..89d0da39c 100644 --- a/src/test/java/com/booleanuk/core/TodoListTest.java +++ b/src/test/java/com/booleanuk/core/TodoListTest.java @@ -75,10 +75,16 @@ public void testRemoveTask() { @Test public void testListsAscending() { Assertions.assertEquals("Lunch, Tidy up, ", todoList.listAscending()); + todoList.removeTask("Lunch"); + todoList.removeTask("Tidy up"); + Assertions.assertEquals("Your todolist is empty", todoList.listAscending()); } @Test public void testListsDescending() { Assertions.assertEquals("Tidy up, Lunch, ", todoList.listDescending()); + todoList.removeTask("Lunch"); + todoList.removeTask("Tidy up"); + Assertions.assertEquals("Your todolist is empty", todoList.listDescending()); } } From 3c5be4ca49336a3949464f7dffefce62db2e26b9 Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Thu, 16 Jan 2025 23:45:57 +0100 Subject: [PATCH 34/46] Update domain-model to reflect code --- domain-model.md | 87 ++++++++++++++++--------------------------------- 1 file changed, 28 insertions(+), 59 deletions(-) diff --git a/domain-model.md b/domain-model.md index e7aaf7c3b..6b22ac25f 100644 --- a/domain-model.md +++ b/domain-model.md @@ -1,62 +1,31 @@ ## Todo -| Method | Member Variable | Scenario | Result | -|--------------------------------------------------|--------------------------------|-------------------------------------------------------------------------------|------------------------------------| -| add(HashMap tasks, String name) | HashMap tasks | Task with the provided name is not already in the todolist | true | -| | | Task with the provided name is already in the todolist | false | -| | | | | -| listTasks( ) | | There are tasks in the todolist | string with all tasks | -| | | There are no tasks in the todolist | string with error message | -| | | | | -| updateTaskStatus(String name, Boolean status) | | There is a task with the provided name and has the requested status | true | -| | | There is no task with the provided name or does not have the requested status | false | -| | | | | -| listCompletedTasks() | | There are completed tasks in the todolist | string with all completed tasks | -| | | There are no completed tasks in the todolist | string with error message | -| | | | | -| listNotCompletedTasks() | | There are uncompleted tasks in the todolist | string with all uncompleted tasks | -| | | There are no uncompleted tasks in the todolist | string with error message | -| | | | | -| SearchTask(String) | | There was a task with the provided name | string with the task | -| | | There was no task with the provided name | string with error message | -| | | | | -| removeTask(String) | | Task with the provided name is not in the todolist | true | -| | | Task with the provided name is in the todolist | false | -| | | | | -| taskDescending() | | There are tasks in the todolist | string in descending order by name | -| | | There are no tasks in the todolist | string with error message | -| | | | | -| taskAscending() | | There are tasks in the todolist | string in ascending order by name | -| | | There are no tasks in the todolist | string with error message | +| Method | Member Variable | Scenario | Result | +|-------------------------------|--------------------------------|-------------------------------------------------------------------------------|-------------------------------------| +| add(String name) | HashMap tasks | Task with the provided name is not already in the todolist | true | +| | | Task with the provided name is already in the todolist | false | +| | | | | +| listTasks() | | There are tasks in the todolist | string with all tasks | +| | | There are no tasks in the todolist | string with error message | +| | | | | +| updateTaskStatus(String name) | | There is a task with the provided name and has the requested status | true | +| | | There is no task with the provided name or does not have the requested status | false | +| | | | | +| listCompletedTasks() | | There are completed tasks in the todolist | string with all completed tasks | +| | | There are no completed tasks in the todolist | string with error message | +| | | | | +| listNotCompletedTasks() | | There are uncompleted tasks in the todolist | string with all uncompleted tasks | +| | | There are no uncompleted tasks in the todolist | string with error message | +| | | | | +| searchForTask(String) | | There was a task with the provided name | string with the task | +| | | There was no task with the provided name | string with error message | +| | | | | +| removeTask(String) | | Task was in todolist and has been removed | string with confirmation of removal | +| | | Task was not in todolist or could not be removed | string with error message | +| | | | | +| taskDescending() | | There are tasks in the todolist | string in descending order by name | +| | | There are no tasks in the todolist | string with error message | +| | | | | +| taskAscending() | | There are tasks in the todolist | string in ascending order by name | +| | | There are no tasks in the todolist | string with error message | - - -# Extension - -## Todo - -| Method | Member Variable | Scenario | Result | -|----------------------------------------------|-----------------------|----------|--------| -| add(String name) | ArrayList tasks | | | -| | id | | | -| listTasks( ) | | | | -| updateTaskStatus(Task task, Boolean state) | | | | -| | | | | -| getCompletedTasks() | | | | -| getNotCompletedTasks() | | | | -| SearchTask(Task task) | | | | -| removeTask(Task task) | | | | -| taskDescending() | | | | -| taskAscending() | | | | -| getTaskById(int id) | | | | -| updateTaskName(int id, String newName) | | | | -| updateTaskStatusById(int id, Boolean status) | | | | -| | | | | - -## Task - -| Method | Member Variable | Scenario | Result | -|--------|------------------|----------|--------| -| | | | | -| | Boolean complete | | | -| | String name | | | \ No newline at end of file From 99e660f927aa5c353266712a39f7546c2d580c9e Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Mon, 20 Jan 2025 20:16:37 +0100 Subject: [PATCH 35/46] Add updated domain model for extension and add testGetTaskById - red --- domain-model.md | 28 ++++++++++++++++++- .../extension/ExtensionTodoListTest.java | 25 +++++++++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 src/test/java/com/booleanuk/extension/ExtensionTodoListTest.java diff --git a/domain-model.md b/domain-model.md index 6b22ac25f..32cb95b65 100644 --- a/domain-model.md +++ b/domain-model.md @@ -1,4 +1,4 @@ -## Todo +## Core TodoList class | Method | Member Variable | Scenario | Result | |-------------------------------|--------------------------------|-------------------------------------------------------------------------------|-------------------------------------| @@ -29,3 +29,29 @@ | taskAscending() | | There are tasks in the todolist | string in ascending order by name | | | | There are no tasks in the todolist | string with error message | +## Extension TodoList class + +| Method | Member Variables | Scenario | Result | +|-------------------------------------|------------------|-------------------------------------------------------|-----------------------------| +| | ArrayList | | | +| | | | | +| getTaskById(int id) | | id exists | success string | +| | | id does not exist | error string | +| updateTaskName(int id, String name) | | id exists | success string | +| | | id does not exist | error string | +| updateTaskStatus(int id) | | task exists and has requested status | true | +| | | task does not exist or does not have requested status | false | +| showDateTime() | | list has tasks | string of tasks | +| | | last has no tasks | string message for no tasks | + +## Extension Task class + +| Method | Member variables | Scenario | Result | +|---------|------------------|----------|--------| +| | int id | | | +| | String name | | | +| | boolean status | | | +| | String time | | | +| getters | | | | +| setters | | | | + diff --git a/src/test/java/com/booleanuk/extension/ExtensionTodoListTest.java b/src/test/java/com/booleanuk/extension/ExtensionTodoListTest.java new file mode 100644 index 000000000..1ffdb80eb --- /dev/null +++ b/src/test/java/com/booleanuk/extension/ExtensionTodoListTest.java @@ -0,0 +1,25 @@ +package com.booleanuk.extension; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; + +public class ExtensionTodoListTest { + private ExtensionTodoList todoList; + + @BeforeEach + public void setUp() { + ArrayList tasks = new ArrayList<>() {{ + add(new Task("Eat", false)); + add(new Task("Sleep", true)); + }}; + todoList = new ExtensionTodoList(tasks); + } + + @Test + public void testGetTaskById() { + Assertions.assertEquals("Sleep, completed", todoList.getTaskById(2)); + } +} From 4cab06c79f8829728b3099381445e17786902425 Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Tue, 21 Jan 2025 19:01:04 +0100 Subject: [PATCH 36/46] Add Task object and getTaskById to pass test - green --- .../extension/ExtensionTodoList.java | 27 +++++++++++ .../java/com/booleanuk/extension/Task.java | 48 +++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 src/main/java/com/booleanuk/extension/ExtensionTodoList.java create mode 100644 src/main/java/com/booleanuk/extension/Task.java diff --git a/src/main/java/com/booleanuk/extension/ExtensionTodoList.java b/src/main/java/com/booleanuk/extension/ExtensionTodoList.java new file mode 100644 index 000000000..b966c2243 --- /dev/null +++ b/src/main/java/com/booleanuk/extension/ExtensionTodoList.java @@ -0,0 +1,27 @@ +package com.booleanuk.extension; + +import java.util.ArrayList; + +public class ExtensionTodoList { + + private ArrayList tasks; + + public ExtensionTodoList(ArrayList tasks) { + this.tasks = new ArrayList<>(tasks); + } + + public String getTaskById(int id) { + String output = ""; + String status = ""; + for (Task task : this.tasks) { + if (task.getId() == id) { + if (task.isStatus()) { + status = "completed"; + } + output = task.getName() + ", " + status; + return output; + } + } + return output; + } +} diff --git a/src/main/java/com/booleanuk/extension/Task.java b/src/main/java/com/booleanuk/extension/Task.java new file mode 100644 index 000000000..25fed091a --- /dev/null +++ b/src/main/java/com/booleanuk/extension/Task.java @@ -0,0 +1,48 @@ +package com.booleanuk.extension; + +public class Task { + private static int nextId = 1; + private int id; + private String name; + private boolean status; + private String time; + + public Task(String name, boolean status) { + this.id = nextId; + nextId++; + this.name = name; + this.status = status; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public boolean isStatus() { + return status; + } + + public void setStatus(boolean status) { + this.status = status; + } + + public String getTime() { + return time; + } + + public void setTime(String time) { + this.time = time; + } +} From 819f201efa6e32964e81ba2a3628ae576e6dd90d Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Tue, 21 Jan 2025 19:47:44 +0100 Subject: [PATCH 37/46] Refactor getTaskById and test to cover incomplete tasks - green --- .../booleanuk/extension/ExtensionTodoList.java | 16 ++++++---------- .../extension/ExtensionTodoListTest.java | 3 ++- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/booleanuk/extension/ExtensionTodoList.java b/src/main/java/com/booleanuk/extension/ExtensionTodoList.java index b966c2243..2429df904 100644 --- a/src/main/java/com/booleanuk/extension/ExtensionTodoList.java +++ b/src/main/java/com/booleanuk/extension/ExtensionTodoList.java @@ -11,17 +11,13 @@ public ExtensionTodoList(ArrayList tasks) { } public String getTaskById(int id) { - String output = ""; - String status = ""; - for (Task task : this.tasks) { - if (task.getId() == id) { - if (task.isStatus()) { - status = "completed"; - } - output = task.getName() + ", " + status; - return output; - } + String output; + Task task = this.tasks.get(id); + if (task.isStatus()) { + output = task.getName() + ", completed"; + return output; } + output = task.getName() + ", incomplete"; return output; } } diff --git a/src/test/java/com/booleanuk/extension/ExtensionTodoListTest.java b/src/test/java/com/booleanuk/extension/ExtensionTodoListTest.java index 1ffdb80eb..cc7240bf1 100644 --- a/src/test/java/com/booleanuk/extension/ExtensionTodoListTest.java +++ b/src/test/java/com/booleanuk/extension/ExtensionTodoListTest.java @@ -20,6 +20,7 @@ public void setUp() { @Test public void testGetTaskById() { - Assertions.assertEquals("Sleep, completed", todoList.getTaskById(2)); + Assertions.assertEquals("Eat, incomplete", todoList.getTaskById(0)); + Assertions.assertEquals("Sleep, completed", todoList.getTaskById(1)); } } From 2bd75bb22f37429380cfb541d49b9b73332cdf5b Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Tue, 21 Jan 2025 19:52:17 +0100 Subject: [PATCH 38/46] Add testUpdateTaskName - red --- .../java/com/booleanuk/extension/ExtensionTodoListTest.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/test/java/com/booleanuk/extension/ExtensionTodoListTest.java b/src/test/java/com/booleanuk/extension/ExtensionTodoListTest.java index cc7240bf1..f1bea2d54 100644 --- a/src/test/java/com/booleanuk/extension/ExtensionTodoListTest.java +++ b/src/test/java/com/booleanuk/extension/ExtensionTodoListTest.java @@ -23,4 +23,9 @@ public void testGetTaskById() { Assertions.assertEquals("Eat, incomplete", todoList.getTaskById(0)); Assertions.assertEquals("Sleep, completed", todoList.getTaskById(1)); } + + @Test + public void testUpdateTaskName() { + Assertions.assertEquals("Task successfully updated to: Dinner", todoList.updateTaskName(0, "Dinner")); + } } From 9ddfb6386087e8bc196ab2fe58acf50864385dbf Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Tue, 21 Jan 2025 20:02:29 +0100 Subject: [PATCH 39/46] Add method updateTaskName to pass test - green --- .../java/com/booleanuk/extension/ExtensionTodoList.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/com/booleanuk/extension/ExtensionTodoList.java b/src/main/java/com/booleanuk/extension/ExtensionTodoList.java index 2429df904..176cce761 100644 --- a/src/main/java/com/booleanuk/extension/ExtensionTodoList.java +++ b/src/main/java/com/booleanuk/extension/ExtensionTodoList.java @@ -20,4 +20,10 @@ public String getTaskById(int id) { output = task.getName() + ", incomplete"; return output; } + + public String updateTaskName(int id, String name) { + Task task = this.tasks.get(id); + task.setName(name); + return "Task successfully updated to: " + task.getName(); + } } From 008a1238d03db31fd3cbb93866815a27a008177b Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Tue, 21 Jan 2025 20:05:21 +0100 Subject: [PATCH 40/46] Refactor testUpdateTaskName to include incomplete task - green --- src/test/java/com/booleanuk/extension/ExtensionTodoListTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/java/com/booleanuk/extension/ExtensionTodoListTest.java b/src/test/java/com/booleanuk/extension/ExtensionTodoListTest.java index f1bea2d54..bf066b295 100644 --- a/src/test/java/com/booleanuk/extension/ExtensionTodoListTest.java +++ b/src/test/java/com/booleanuk/extension/ExtensionTodoListTest.java @@ -27,5 +27,6 @@ public void testGetTaskById() { @Test public void testUpdateTaskName() { Assertions.assertEquals("Task successfully updated to: Dinner", todoList.updateTaskName(0, "Dinner")); + Assertions.assertEquals("Task successfully updated to: sleep", todoList.updateTaskName(1, "sleep")); } } From c6801825c258e0ac5e11aa43682d907e0f699c20 Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Tue, 21 Jan 2025 20:10:04 +0100 Subject: [PATCH 41/46] Add testUpdateTaskStatus - red --- .../java/com/booleanuk/extension/ExtensionTodoListTest.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/test/java/com/booleanuk/extension/ExtensionTodoListTest.java b/src/test/java/com/booleanuk/extension/ExtensionTodoListTest.java index bf066b295..aaf009b16 100644 --- a/src/test/java/com/booleanuk/extension/ExtensionTodoListTest.java +++ b/src/test/java/com/booleanuk/extension/ExtensionTodoListTest.java @@ -29,4 +29,9 @@ public void testUpdateTaskName() { Assertions.assertEquals("Task successfully updated to: Dinner", todoList.updateTaskName(0, "Dinner")); Assertions.assertEquals("Task successfully updated to: sleep", todoList.updateTaskName(1, "sleep")); } + + @Test + public void testUpdateTaskStatus() { + Assertions.assertTrue(updateTaskStatus(0)); + } } From b45ddcff57dfb3a08fbbf3b17bc60c52f0ebd274 Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Tue, 21 Jan 2025 20:16:25 +0100 Subject: [PATCH 42/46] Add method updateTaskStatus to pass test and add assertion for incomplete task - green --- .../com/booleanuk/extension/ExtensionTodoList.java | 10 ++++++++++ .../com/booleanuk/extension/ExtensionTodoListTest.java | 3 ++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/booleanuk/extension/ExtensionTodoList.java b/src/main/java/com/booleanuk/extension/ExtensionTodoList.java index 176cce761..1430b1820 100644 --- a/src/main/java/com/booleanuk/extension/ExtensionTodoList.java +++ b/src/main/java/com/booleanuk/extension/ExtensionTodoList.java @@ -26,4 +26,14 @@ public String updateTaskName(int id, String name) { task.setName(name); return "Task successfully updated to: " + task.getName(); } + + public boolean updateTaskStatus(int id) { + Task task = this.tasks.get(id); + if (!task.isStatus()) { + task.setStatus(true); + return task.isStatus(); + } + task.setStatus(false); + return task.isStatus(); + } } diff --git a/src/test/java/com/booleanuk/extension/ExtensionTodoListTest.java b/src/test/java/com/booleanuk/extension/ExtensionTodoListTest.java index aaf009b16..9c03ddad9 100644 --- a/src/test/java/com/booleanuk/extension/ExtensionTodoListTest.java +++ b/src/test/java/com/booleanuk/extension/ExtensionTodoListTest.java @@ -32,6 +32,7 @@ public void testUpdateTaskName() { @Test public void testUpdateTaskStatus() { - Assertions.assertTrue(updateTaskStatus(0)); + Assertions.assertTrue(todoList.updateTaskStatus(0)); + Assertions.assertFalse(todoList.updateTaskStatus(1)); } } From 067d3633e4aad33bb07edab8e4dc3d52ce0357a2 Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Tue, 21 Jan 2025 20:33:47 +0100 Subject: [PATCH 43/46] Add testShoeDateTime for empty list - red --- .../com/booleanuk/extension/ExtensionTodoListTest.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/test/java/com/booleanuk/extension/ExtensionTodoListTest.java b/src/test/java/com/booleanuk/extension/ExtensionTodoListTest.java index 9c03ddad9..bb3b7a209 100644 --- a/src/test/java/com/booleanuk/extension/ExtensionTodoListTest.java +++ b/src/test/java/com/booleanuk/extension/ExtensionTodoListTest.java @@ -35,4 +35,11 @@ public void testUpdateTaskStatus() { Assertions.assertTrue(todoList.updateTaskStatus(0)); Assertions.assertFalse(todoList.updateTaskStatus(1)); } + + @Test + public void testShowDateTime() { + ArrayList empty = new ArrayList<>(); + ExtensionTodoList emptyTodoList = new ExtensionTodoList(empty); + Assertions.assertEquals("Todolist is empty", emptyTodoList.showDateTime()); + } } From 564506c0a3a73104012b1c7d458e79cd804e68d5 Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Tue, 21 Jan 2025 20:45:33 +0100 Subject: [PATCH 44/46] Add method showDateTime for empty list - green --- .../java/com/booleanuk/extension/ExtensionTodoList.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/com/booleanuk/extension/ExtensionTodoList.java b/src/main/java/com/booleanuk/extension/ExtensionTodoList.java index 1430b1820..72e74eceb 100644 --- a/src/main/java/com/booleanuk/extension/ExtensionTodoList.java +++ b/src/main/java/com/booleanuk/extension/ExtensionTodoList.java @@ -36,4 +36,12 @@ public boolean updateTaskStatus(int id) { task.setStatus(false); return task.isStatus(); } + + public String showDateTime() { + StringBuilder output = new StringBuilder(); + if (this.tasks.isEmpty()) { + return "Todolist is empty"; + } + return null; + } } From 78c341dfd4d331d03c24ff57ab0de900346eb93f Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Tue, 21 Jan 2025 21:17:25 +0100 Subject: [PATCH 45/46] Refactor method showDateTime for non-empty list and add assertion for non-empty list - green --- src/main/java/com/booleanuk/extension/ExtensionTodoList.java | 5 ++++- src/main/java/com/booleanuk/extension/Task.java | 3 ++- .../java/com/booleanuk/extension/ExtensionTodoListTest.java | 5 +++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/booleanuk/extension/ExtensionTodoList.java b/src/main/java/com/booleanuk/extension/ExtensionTodoList.java index 72e74eceb..0cccbb7ef 100644 --- a/src/main/java/com/booleanuk/extension/ExtensionTodoList.java +++ b/src/main/java/com/booleanuk/extension/ExtensionTodoList.java @@ -42,6 +42,9 @@ public String showDateTime() { if (this.tasks.isEmpty()) { return "Todolist is empty"; } - return null; + for (Task task : tasks) { + output.append("Task: ").append(task.getName()).append(", Created on: ").append(task.getTime()).append("\n"); + } + return output.toString(); } } diff --git a/src/main/java/com/booleanuk/extension/Task.java b/src/main/java/com/booleanuk/extension/Task.java index 25fed091a..fa59ddc80 100644 --- a/src/main/java/com/booleanuk/extension/Task.java +++ b/src/main/java/com/booleanuk/extension/Task.java @@ -7,11 +7,12 @@ public class Task { private boolean status; private String time; - public Task(String name, boolean status) { + public Task(String name, boolean status, String time) { this.id = nextId; nextId++; this.name = name; this.status = status; + this.time = time; } public int getId() { diff --git a/src/test/java/com/booleanuk/extension/ExtensionTodoListTest.java b/src/test/java/com/booleanuk/extension/ExtensionTodoListTest.java index bb3b7a209..4a2da2d05 100644 --- a/src/test/java/com/booleanuk/extension/ExtensionTodoListTest.java +++ b/src/test/java/com/booleanuk/extension/ExtensionTodoListTest.java @@ -12,8 +12,8 @@ public class ExtensionTodoListTest { @BeforeEach public void setUp() { ArrayList tasks = new ArrayList<>() {{ - add(new Task("Eat", false)); - add(new Task("Sleep", true)); + add(new Task("Eat", false, "2025-01-19T10:00:00")); + add(new Task("Sleep", true, "2025-01-20T09:00:00")); }}; todoList = new ExtensionTodoList(tasks); } @@ -38,6 +38,7 @@ public void testUpdateTaskStatus() { @Test public void testShowDateTime() { + Assertions.assertEquals("Task: Eat, Created on: 2025-01-19T10:00:00\nTask: Sleep, Created on: 2025-01-20T09:00:00\n", todoList.showDateTime()); ArrayList empty = new ArrayList<>(); ExtensionTodoList emptyTodoList = new ExtensionTodoList(empty); Assertions.assertEquals("Todolist is empty", emptyTodoList.showDateTime()); From 852996b1e366b5667fe1fbc81e3178fe4310c17f Mon Sep 17 00:00:00 2001 From: Frida Anselin Date: Tue, 21 Jan 2025 21:23:18 +0100 Subject: [PATCH 46/46] Update domain-model --- domain-model.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/domain-model.md b/domain-model.md index 32cb95b65..245362b83 100644 --- a/domain-model.md +++ b/domain-model.md @@ -31,18 +31,18 @@ ## Extension TodoList class -| Method | Member Variables | Scenario | Result | -|-------------------------------------|------------------|-------------------------------------------------------|-----------------------------| -| | ArrayList | | | -| | | | | -| getTaskById(int id) | | id exists | success string | -| | | id does not exist | error string | -| updateTaskName(int id, String name) | | id exists | success string | -| | | id does not exist | error string | -| updateTaskStatus(int id) | | task exists and has requested status | true | -| | | task does not exist or does not have requested status | false | -| showDateTime() | | list has tasks | string of tasks | -| | | last has no tasks | string message for no tasks | +| Method | Member Variables | Scenario | Result | +|-------------------------------------|------------------|------------------------------------------|-----------------------------| +| | ArrayList | | | +| | | | | +| getTaskById(int id) | | incomplete task | message string | +| | | completed task | message string | +| updateTaskName(int id, String name) | | incomplete task | message string | +| | | completed task | message string | +| updateTaskStatus(int id) | | task exists and has been completed | true | +| | | task exists and is not completed anymore | false | +| showDateTime() | | list has tasks | string of tasks | +| | | last has no tasks | string message for no tasks | ## Extension Task class