From c9701a6f5e28283b041129f2977f6a00a83a8b00 Mon Sep 17 00:00:00 2001 From: andrechamoun555 Date: Sun, 17 Aug 2025 18:52:18 +0200 Subject: [PATCH 1/2] Test and domain model are done --- domain-model.md | 20 +++ .../java/com/booleanuk/core/TodoList.java | 45 ++++++ .../java/com/booleanuk/core/TodoListTest.java | 129 +++++++++++++++++- 3 files changed, 190 insertions(+), 4 deletions(-) create mode 100644 domain-model.md diff --git a/domain-model.md b/domain-model.md new file mode 100644 index 000000000..3dd8677a5 --- /dev/null +++ b/domain-model.md @@ -0,0 +1,20 @@ + +## Domain Model ## +| Classes | Members | Methods | Scenario | Outputs | +|--------------|-------------------------------------------------------------------|--------------------------------------|--------------------------------------------------------------------|-------------------------| +| **TodoList** | `hashMap tasks` (key: name, value: true or false | boolean `addTask(String name)` | If task with the provided name is nor in the to do list | `true` | +| | | | Task with the provided name is already in to do list` → do nothing | `false` | +| | | List getAll() | List that contains tasks | HashMap getCompleteTasks() | when tasks are completed, then get completed tasks with name | True | +| | | List getIncomplete | look for incomplete tasks and return them | True | +| | | List getIncomplete | All tasks completed or no tasks exist | empty List | +| | | String search(String name) | found | String | +| | | | not found | String | +| | | boolean remove(String name) | found --> delete | True | +| | | | not found --> delete | False | +| | | List sortedInAscendingOrder | Go through list and sort | String | +| | | List sortedInDescendingOrder | go through list and sort | String | + + diff --git a/src/main/java/com/booleanuk/core/TodoList.java b/src/main/java/com/booleanuk/core/TodoList.java index 675adaf0b..42a9b2a1d 100644 --- a/src/main/java/com/booleanuk/core/TodoList.java +++ b/src/main/java/com/booleanuk/core/TodoList.java @@ -1,5 +1,50 @@ package com.booleanuk.core; +import java.util.ArrayList; +import java.util.HashMap; + public class TodoList { + + + public Boolean addTask(String name) { + return null; + } + + public ArrayList getTasks() { + return null; + } + + + + public Boolean changeStatus(String name) { + return null; + } + + public ArrayList getCompletedTasks() { + return null; + } + + public ArrayList getIncompleteTasks() { + return null; + } + + public String search(String name){ + return null; + } + + public boolean deleteTask(String name){ + return false; + } + + public ArrayList sortTasksAscOrder(){ + return null; + } + + public ArrayList sortTasksDescOrder(){ + return null; + } + + + } diff --git a/src/test/java/com/booleanuk/core/TodoListTest.java b/src/test/java/com/booleanuk/core/TodoListTest.java index 0bef779a4..af319e54f 100644 --- a/src/test/java/com/booleanuk/core/TodoListTest.java +++ b/src/test/java/com/booleanuk/core/TodoListTest.java @@ -3,11 +3,132 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import java.util.ArrayList; +import java.util.HashMap; + class TodoListTest { @Test - public void exampleTest() { - String hello = "Hello"; - Assertions.assertEquals("Hello", hello); - Assertions.assertNotEquals("Goodbye", hello); + public void addTaskWhenNewValidName() { + TodoList todo = new TodoList(); + boolean result = todo.addTask("Play football today"); + Assertions.assertTrue(result); + + + } + + @Test + public void getFalseIfDuplicate() { + TodoList todo = new TodoList(); + Assertions.assertTrue(todo.addTask("Play football today")); + Assertions.assertFalse(todo.addTask("Play football today")); + } + @Test + public void listAllTasks() { + TodoList todo = new TodoList(); + // add tasks into the TodoList + todo.addTask("buy milk"); + todo.addTask("buy cheese"); + todo.addTask("go and run"); + + ArrayList list = new ArrayList<>(); + list.add("buy milk"); + list.add("buy cheese"); + list.add("go and run"); + + Assertions.assertEquals(list, todo.getTasks()); + } + + @Test + public void changeStatusOfTask() { + TodoList todo = new TodoList(); + todo.addTask("Play football today"); + + Assertions.assertTrue(todo.changeStatus("Play football today")); + Assertions.assertFalse(todo.changeStatus("Non existent task")); + + } + + @Test + public void getTaskByCompletion() { + TodoList todo = new TodoList(); + todo.addTask("run"); + Assertions.assertTrue(todo.changeStatus("run")); + + ArrayList list = new ArrayList<>(); + list.add("run"); + + Assertions.assertEquals(list, todo.getCompletedTasks()); + } + + @Test + public void getTasksByIncompletion() { + TodoList todo = new TodoList(); + todo.addTask("cut hair"); + todo.addTask("Write story"); + + Assertions.assertTrue(todo.changeStatus("Write story")); + + ArrayList list = new ArrayList<>(); + list.add("cut hair"); + + Assertions.assertEquals(list, todo.getIncompleteTasks()); } + + @Test + public void searchForTasksAndReturnMessageIfTaskNotFound() { + TodoList todo = new TodoList(); + + todo.addTask("Go and run"); + todo.addTask("buy cheese"); + + String str = todo.search("clean table"); + Assertions.assertEquals("Task not found", str); + + + } + + @Test + public void deleteTaskIfFound() { + TodoList todo = new TodoList(); + todo.addTask("Go and run"); + todo.addTask("buy cheese"); + todo.addTask("buy food"); + + + Assertions.assertTrue(todo.deleteTask("buy food")); + Assertions.assertFalse(todo.getTasks().contains("buy food")); + } + + @Test + public void sortedInAscendingOrder() { + TodoList todo = new TodoList(); + todo.addTask("C"); + todo.addTask("A"); + todo.addTask("B"); + + ArrayList list = new ArrayList<>(); + list.add("A"); + list.add("B"); + list.add("C"); + + Assertions.assertEquals(list, todo.sortTasksAscOrder()); + } + + @Test + public void sortedInDescendingOrder() { + TodoList todo = new TodoList(); + todo.addTask("A"); + todo.addTask("B"); + todo.addTask("C"); + + ArrayList list = new ArrayList<>(); + list.add("C"); + list.add("B"); + list.add("A"); + + Assertions.assertEquals(list, todo.sortTasksDescOrder()); + } + + } + From c3d6531c6aa3824cf8fffca02d92a1907308c9e5 Mon Sep 17 00:00:00 2001 From: andrechamoun555 Date: Sun, 17 Aug 2025 23:57:03 +0200 Subject: [PATCH 2/2] Done with acceptance criteria --- .../java/com/booleanuk/core/TodoList.java | 80 ++++++++++++++++--- .../java/com/booleanuk/core/TodoListTest.java | 17 +++- 2 files changed, 83 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/booleanuk/core/TodoList.java b/src/main/java/com/booleanuk/core/TodoList.java index 42a9b2a1d..37573d98f 100644 --- a/src/main/java/com/booleanuk/core/TodoList.java +++ b/src/main/java/com/booleanuk/core/TodoList.java @@ -1,48 +1,106 @@ package com.booleanuk.core; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; +import java.util.LinkedHashMap; public class TodoList { - + HashMap tasks = new LinkedHashMap<>(); public Boolean addTask(String name) { - return null; - } + if (name == null) + return false; + + String nTrim = name.trim(); + if (nTrim.isEmpty()) + return false; + + if (tasks.containsKey(nTrim)) + return false; + + + tasks.put(nTrim, false); + return true; + + } + + public ArrayList getTasks() { - return null; + return new ArrayList<>(tasks.keySet()); } public Boolean changeStatus(String name) { - return null; + if (name == null) + return false; + String nTrim = name.trim(); + + if (nTrim.isEmpty()) + return false; + + Boolean status = tasks.get(nTrim); + if (status == null) + return false; + + tasks.put(nTrim, !status); + return true; + } public ArrayList getCompletedTasks() { - return null; + ArrayList doneTasks = new ArrayList<>(); + for (HashMap.Entry entry : tasks.entrySet()) { + if (entry.getValue() == true) { + doneTasks.add(entry.getKey()); + } + + } + return doneTasks; } public ArrayList getIncompleteTasks() { - return null; + ArrayList doneTasks = new ArrayList<>(); + for (HashMap.Entry entry : tasks.entrySet()) { + if (entry.getValue() == false) { + doneTasks.add(entry.getKey()); + } + } + return doneTasks; } public String search(String name){ - return null; + String nTrim = name.trim(); + if (tasks.containsKey(nTrim)) { + return nTrim; + } + return "Task not found"; } public boolean deleteTask(String name){ - return false; + if (name == null) { + return false; + } + String nTrim = name.trim(); + if (nTrim.isEmpty()) { + return false; + } + return tasks.remove(nTrim) != null; } public ArrayList sortTasksAscOrder(){ - return null; + ArrayList sortedTasks = new ArrayList<>(tasks.keySet()); + Collections.sort(sortedTasks); + return sortedTasks; } public ArrayList sortTasksDescOrder(){ - return null; + ArrayList sortedTasks = new ArrayList<>(tasks.keySet()); + sortedTasks.sort(Collections.reverseOrder()); + return sortedTasks; } diff --git a/src/test/java/com/booleanuk/core/TodoListTest.java b/src/test/java/com/booleanuk/core/TodoListTest.java index af319e54f..3cb703219 100644 --- a/src/test/java/com/booleanuk/core/TodoListTest.java +++ b/src/test/java/com/booleanuk/core/TodoListTest.java @@ -7,6 +7,7 @@ import java.util.HashMap; class TodoListTest { + @Test public void addTaskWhenNewValidName() { TodoList todo = new TodoList(); @@ -41,9 +42,14 @@ public void listAllTasks() { @Test public void changeStatusOfTask() { TodoList todo = new TodoList(); - todo.addTask("Play football today"); + todo.addTask("buy cheese"); + Assertions.assertTrue(todo.changeStatus("buy cheese")); + Assertions.assertTrue(todo.getCompletedTasks().contains("buy cheese")); - Assertions.assertTrue(todo.changeStatus("Play football today")); + Assertions.assertTrue(todo.changeStatus("buy cheese")); + Assertions.assertTrue(todo.getIncompleteTasks().contains("buy cheese")); + + Assertions.assertFalse(todo.changeStatus("Play football today")); Assertions.assertFalse(todo.changeStatus("Non existent task")); } @@ -52,10 +58,15 @@ public void changeStatusOfTask() { public void getTaskByCompletion() { TodoList todo = new TodoList(); todo.addTask("run"); - Assertions.assertTrue(todo.changeStatus("run")); + todo.addTask("buy milk"); + todo.addTask("buy cheese"); + + todo.changeStatus("run"); + todo.changeStatus("buy milk"); ArrayList list = new ArrayList<>(); list.add("run"); + list.add("buy milk"); Assertions.assertEquals(list, todo.getCompletedTasks()); }