Skip to content
22 changes: 22 additions & 0 deletions domain-module.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# TODO list

| Members | Methods | Scenario | Outputs |
|------------------------|------------------------|-------------------------|--------------------------------------|
| Arraylist\<Task> tasks | add(Task task) | Task is already in list | False |
| | | Task is not in the list | True |
| | viewTask() | | Display the list |
| | viewCompletedTasks() | | Display the completed tasks |
| | viewIncompletedTasks() | | Display the incompleted tasks |
| | search(Task task) | Task does not exist | Print it was not found |
| | | Task exist | Print it was found |
| | removeTask(Task task) | Task does not exist | Print it was not found |
| | | Task does exist | Task removed |
| | viewAlphabeticAsc() | | Display list alphabetical ascending |
| | viewAplhabeticDesc() | | Display list alphabetical descending |

# Task

| Members | Methods | Scenario | Outputs |
|------------------|------------------------------|----------|------------------------|
| boolean complete | changeStatus(boolean status) | True | complete becomes True |
| String name | | False | complete becomes False |
27 changes: 27 additions & 0 deletions src/main/java/com/booleanuk/core/Task.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.booleanuk.core;

public class Task {
private String name;
private boolean complete;

public Task(String name) {
this.name = name;
this.complete = false;
}

public boolean isComplete() {
return complete;
}

public void setComplete(boolean complete) {
this.complete = complete;
}

public String getName() {
return name;
}

public void changeStatus(boolean status) {
complete = status;
}
}
69 changes: 69 additions & 0 deletions src/main/java/com/booleanuk/core/TodoList.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,74 @@
package com.booleanuk.core;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Comparator;

public class TodoList {
private ArrayList<Task> tasks = new ArrayList<>();

public boolean add(Task task) {
if(tasks.contains(task)) {
return false;
} else {
tasks.add(task);
return true;
}
}

public ArrayList<Task> viewTasks() {
return tasks;
}

public ArrayList<Task> viewIncompleteTasks() {
ArrayList<Task> result = new ArrayList<>();
for (int i = 0; i < tasks.size(); i++) {
if(!tasks.get(i).isComplete()) {
result.add(tasks.get(i));
}
}
return result;
}

public ArrayList<Task> viewCompleteTasks() {
ArrayList<Task> result = new ArrayList<>();
for (int i = 0; i < tasks.size(); i++) {
if(tasks.get(i).isComplete()) {
result.add(tasks.get(i));
}
}
return result;
}

public Task search(Task task) {
if(tasks.contains(task)) {
return task;
}
System.out.println("The task was not found!");
return null;
}

public void remove (Task task) {
if(tasks.contains(task)) {
tasks.remove(task);
}
}

public ArrayList<String> viewAlphabeticalAsc() {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You could just sort the original list and return it here, rather than copying lists

ArrayList<String> result = new ArrayList<>();
for (int i = 0; i < tasks.size(); i++) {
result.add(tasks.get(i).getName());
}
result.sort(null);
return result;
}

public ArrayList<String> viewAlphabeticalDesc() {
ArrayList<String> result = new ArrayList<>();
for (int i = 0; i < tasks.size(); i++) {
result.add(tasks.get(i).getName());
}
result.sort(Comparator.reverseOrder());
return result;
}
}
42 changes: 42 additions & 0 deletions src/main/java/com/booleanuk/extension/TaskExtension.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package com.booleanuk.extension;

import java.time.format.DateTimeFormatter;
import java.util.UUID;

public class TaskExtension {
private String name;
private boolean complete;
private String id;
private String date;

public TaskExtension(String name) {
this.name = name;
this.complete = false;
this.id = UUID.randomUUID().toString();
this.date = java.time.ZonedDateTime.now().format(DateTimeFormatter.ofPattern("MM/dd/yyyy HH:mm"));
}

public String getName() {
return name;
}

public boolean isComplete() {
return complete;
}

public String getId() {
return id;
}

public String getDate() {
return date;
}

public void changeStatus(boolean status) {
complete = status;
}

public void setName(String name) {
this.name = name;
}
}
44 changes: 44 additions & 0 deletions src/main/java/com/booleanuk/extension/TodoListExtensions.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package com.booleanuk.extension;

import java.util.HashMap;

public class TodoListExtensions {
private HashMap<String, TaskExtension> todoList;

public TodoListExtensions() {
this.todoList = new HashMap<>();
}

public HashMap<String, TaskExtension> getTodoList() {
return todoList;
}

public String add(TaskExtension task) {
if(todoList.containsKey(task.getId())) {
return task.getId();
} else {
todoList.put(task.getId(), task);
return task.getId();
}
}

public boolean changeName(String id, String name) {
if (todoList.containsKey(id)) {
todoList.get(id).setName(name);
return true;
} else {
System.out.println("Task is not in the todo list!");
return false;
}
}

public boolean changeStatus(String id, boolean status) {
if (todoList.containsKey(id)) {
todoList.get(id).changeStatus(status);
return true;
} else {
System.out.println("Task is not in the todo list!");
return false;
}
}
}
17 changes: 17 additions & 0 deletions src/test/java/com/booleanuk/core/TaskTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.booleanuk.core;

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

public class TaskTest {

@Test
public void statusChanged() {
Task task = new Task("Take out the garbage");
task.changeStatus(true);
Assertions.assertTrue(task.isComplete());

task.changeStatus(false);
Assertions.assertFalse(task.isComplete());
}
}
136 changes: 132 additions & 4 deletions src/test/java/com/booleanuk/core/TodoListTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,139 @@
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

import java.util.ArrayList;
import java.util.Comparator;

class TodoListTest {

@Test
public void addingTask() {
TodoList todoList = new TodoList();
Task task = new Task("Take out the garbage");

Assertions.assertTrue(todoList.add(task));
Assertions.assertFalse(todoList.add(task));
}

@Test
public void viewAllTasks() {
TodoList todoList = new TodoList();
ArrayList<Task> empty = new ArrayList<>();
Assertions.assertIterableEquals(empty, todoList.viewTasks());

Task task = new Task("Take out the garbage");
todoList.add(task);
empty.add(task);

Assertions.assertIterableEquals(empty, todoList.viewTasks());
}

@Test
public void checkViewAllIncompleteTasks() {
TodoList todoList = new TodoList();

Task task = new Task("Take out the garbage");
Task taskComplete = new Task("Take out the garbage");
taskComplete.setComplete(true);
todoList.add(taskComplete);
todoList.add(task);

Assertions.assertNotEquals(todoList.viewTasks(), todoList.viewIncompleteTasks());
}

@Test
public void exampleTest() {
String hello = "Hello";
Assertions.assertEquals("Hello", hello);
Assertions.assertNotEquals("Goodbye", hello);
public void checkViewAllCompleteTasks() {
TodoList todoList = new TodoList();

Task task = new Task("Take out the garbage");
Task taskComplete = new Task("Take out the garbage");
taskComplete.setComplete(true);
todoList.add(task);
todoList.add(taskComplete);

Assertions.assertNotEquals(todoList.viewTasks(), todoList.viewCompleteTasks());
}

@Test
public void searchForTask() {
TodoList todoList = new TodoList();

Task task = new Task("Take out the garbage");
Assertions.assertNotEquals(task, todoList.search(task));

todoList.add(task);

Assertions.assertEquals(task, todoList.search(task));
}

@Test
public void removeTaskFromTodoList() {
TodoList todoList = new TodoList();

int numOfTasks = todoList.viewTasks().size();

Task task = new Task("Take out the garbage");
todoList.add(task);

Assertions.assertNotEquals(numOfTasks, todoList.viewTasks().size());

todoList.remove(task);

Assertions.assertEquals(numOfTasks, todoList.viewTasks().size());
}

@Test
public void viewTasksAlphabeticallyAsc() {
TodoList todoList = new TodoList();
ArrayList<Task> testTaskList = new ArrayList<>();
ArrayList<String> alphabeticalAsc = new ArrayList<>();

Task task = new Task("A");
Task task2 = new Task("Z");
Task task3 = new Task("D");

todoList.add(task);
todoList.add(task2);
todoList.add(task3);

testTaskList.add(task);
testTaskList.add(task2);
testTaskList.add(task3);

for(int i = 0; i < testTaskList.size(); i++) {
alphabeticalAsc.add(testTaskList.get(i).getName());
}

alphabeticalAsc.sort(null);

Assertions.assertEquals(alphabeticalAsc, todoList.viewAlphabeticalAsc());
}

@Test
public void viewTasksAlphabeticallyDesc() {
TodoList todoList = new TodoList();
ArrayList<Task> testTaskList = new ArrayList<>();
ArrayList<String> alphabeticalAsc = new ArrayList<>();

Task task = new Task("A");
Task task2 = new Task("Z");
Task task3 = new Task("D");

todoList.add(task);
todoList.add(task2);
todoList.add(task3);

testTaskList.add(task);
testTaskList.add(task2);
testTaskList.add(task3);

for(int i = 0; i < testTaskList.size(); i++) {
alphabeticalAsc.add(testTaskList.get(i).getName());
}

alphabeticalAsc.sort(Comparator.reverseOrder());

Assertions.assertEquals(alphabeticalAsc, todoList.viewAlphabeticalDesc());
}

}
Loading
Loading