Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions src/main/java/com/booleanuk/core/Task.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.booleanuk.core;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class Task {
String taskName;
String taskDesc;
String taskStatus;
String taskId;

public Task(String taskName, String taskDesc){
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("ddMMyyHHmmss");
String formattedDateTime = now.format(formatter);
this.taskDesc = taskDesc;
this.taskName = taskName;
this.taskStatus = "Incomplete";
this.taskId = formattedDateTime;
}
@Override
public String toString() {
return "{" +
"taskName='" + taskName + '\'' +
", taskDesc='" + taskDesc + '\'' +
", taskStatus='" + taskStatus + '\'' +
", taskId='" + taskId + '\'' +
'}';
}

}
74 changes: 74 additions & 0 deletions src/main/java/com/booleanuk/core/TodoList.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,79 @@
package com.booleanuk.core;

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


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

public void addTask(String taskName, String taskDesc) {
Task task = new Task(taskName, taskDesc);
tasks.add(task);
}

public String printList() {
String tasksString = "";
if (!tasks.isEmpty()) {
Task task;
for (int i = 0; i < tasks.size(); i++) {
task = tasks.get(i);
tasksString = tasksString + "Name: " + task.taskName + " | ";
tasksString = tasksString + "Description: " + task.taskDesc + " | ";
tasksString = tasksString + "Status: " + task.taskStatus + "\n";
}
} else {
tasksString = "There are currently no tasks in your to do list.";
}
return tasksString;
}

public Task searchTask(String taskName) {
Task task = null;
for (int i = 0; i < tasks.size(); i++) {
if (tasks.get(i).taskName.equals(taskName)) {
task = tasks.get(i);
break;
}
}
if (task == null) {
System.out.println("This task doesn't exist within this list.");
}
return task;
}

public void changeTaskStatus(String taskName, String newStatus) {
Task task = this.searchTask(taskName);
task.taskStatus = newStatus;
}

public ArrayList<Task> filterList(String criteriaStatus, ArrayList<Task> tasks) {
ArrayList<Task> filteredTasks = new ArrayList<>();
;
Task task = null;
for (int i = 0; i < tasks.size(); i++) {
task = tasks.get(i);
if (task.taskStatus.equals(criteriaStatus)) {
filteredTasks.add(task);
}
}
System.out.println(filteredTasks);
return filteredTasks;
}

public void deleteTask(String taskName) {
Task taskToDelete = this.searchTask(taskName);
tasks.remove(tasks.indexOf(taskToDelete));
}

public void sortListAscending() {
Collections.sort(tasks, (t1, t2) -> t1.taskName.compareTo(t2.taskName));

}
public void sortListDescending() {
Collections.sort(tasks, Comparator.comparing(task -> task.taskName, Comparator.reverseOrder()));

}

}
22 changes: 22 additions & 0 deletions src/main/java/com/booleanuk/core/domain-model.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
| Class | Method | Output |
|------------|----------------------------------------------------------|----------------------------------------------------------------------------------------|
| ToDoList | addTask(String taskName, String taskDesc ) | |
| ToDoList | printList() | List shown in console |
| Task | changeTaskStatus(String taskName, String newStatus) | |
| ToDoList | filterList(String criteriaStatus, ArrayList<Task> tasks) | List shown, filtered by criteria |
| ToDoList | searchTask(String taskName) | Task returned or not found message |
| ToDoList | deleteTask(String taskName) | List shown without deleted task |
| ToDoList | sortListAscending() | |
| ToDoList | sortListDescending() | |
| ToDoList | taskToString(Task task) | Task object as string |




| Class | Variable |
|----------|-------------------|
| ToDoList | List<Task>tasks; |
| Task | String taskName |
| Task | String taskDesc |
| Task | String taskStatus |
| Task | String taskId |
115 changes: 111 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,118 @@
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

class TodoListTest {
@Test
public void exampleTest() {
String hello = "Hello";
Assertions.assertEquals("Hello", hello);
Assertions.assertNotEquals("Goodbye", hello);
public void testAddTask() {
TodoList toDoList = new TodoList();
toDoList.addTask("Make coffee", "Put nescafe in cup, follow with milk, sugar and hot water.");
Task task = toDoList.tasks.get(0);
System.out.println(task);
Assertions.assertEquals(task.taskName, "Make coffee");
Assertions.assertEquals(task.taskDesc, "Put nescafe in cup, follow with milk, sugar and hot water.");
Assertions.assertEquals(task.taskStatus, "Incomplete");


}

@Test
public void testPrintList() {
TodoList toDoList = new TodoList();
toDoList.addTask("1", "One");
toDoList.addTask("2", "Two");
toDoList.addTask("3", "Three");
System.out.println(toDoList.toString());
String list = toDoList.printList();
Assertions.assertEquals("Name: 1 | Description: One | Status: Incomplete\nName: 2 | Description: Two | Status: Incomplete\nName: 3 | Description: Three | Status: Incomplete\n", list);
System.out.println(list);
}

@Test
public void testSearchTask() {
TodoList toDoList = new TodoList();
toDoList.addTask("1", "One");
toDoList.addTask("2", "Two");
toDoList.addTask("3", "Three");
Task task = toDoList.searchTask("1");
Task expectedTask = new Task("1","One");

Assertions.assertEquals(expectedTask.taskName,task.taskName );
Assertions.assertEquals(expectedTask.taskDesc,task.taskDesc );

task = toDoList.searchTask("3");
expectedTask = new Task("3","Three");

Assertions.assertEquals(expectedTask.taskName,task.taskName );
Assertions.assertEquals(expectedTask.taskDesc,task.taskDesc );

}


@Test
public void testChangeTaskStatus() {
TodoList toDoList = new TodoList();
toDoList.addTask("1", "One");
toDoList.addTask("2", "Two");
toDoList.addTask("3", "Three");
toDoList.changeTaskStatus("1", "Complete");
Task searchTask = toDoList.searchTask("1");
Assertions.assertEquals("Complete", searchTask.taskStatus);
}
@Test
public void testFilterList(){
TodoList toDoList = new TodoList();
toDoList.addTask("1", "One");
toDoList.addTask("2", "Two");
toDoList.addTask("3", "Three");
toDoList.changeTaskStatus("1", "Complete");
toDoList.changeTaskStatus("3", "Complete");
ArrayList<Task> filteredList = toDoList.filterList("Complete", toDoList.tasks);
Assertions.assertEquals("Complete", filteredList.get(0).taskStatus);
Assertions.assertEquals("Complete", filteredList.get(1).taskStatus);
Assertions.assertEquals(2, filteredList.size());
ArrayList<Task> filteredList2 = toDoList.filterList("Incomplete", toDoList.tasks);
Assertions.assertEquals("Incomplete", filteredList2.get(0).taskStatus);
}

@Test
public void testDeleteTask(){
TodoList toDoList = new TodoList();
toDoList.addTask("1", "One");
toDoList.addTask("2", "Two");
toDoList.addTask("3", "Three");
toDoList.deleteTask("2");
Assertions.assertEquals(null, toDoList.searchTask("2"));
Task expectedTask = new Task("1","One");
Assertions.assertEquals(expectedTask.taskName, toDoList.searchTask("1").taskName);
}

@Test
public void testSortList(){
TodoList toDoList = new TodoList();
toDoList.addTask("A", "One");
toDoList.addTask("B", "Two");
toDoList.addTask("C", "Three");
TodoList expectedSortedList = new TodoList();
expectedSortedList.addTask("C", "Three");
expectedSortedList.addTask("B", "Two");
expectedSortedList.addTask("A", "One");
toDoList.sortListDescending();
Assertions.assertEquals(expectedSortedList.tasks.get(0).taskName, toDoList.tasks.get(0).taskName);
Assertions.assertEquals(expectedSortedList.tasks.get(2).taskName, toDoList.tasks.get(2).taskName);
TodoList expectedSortedListAsc = new TodoList();
expectedSortedListAsc.addTask("A", "One");
expectedSortedListAsc.addTask("B", "Two");
expectedSortedListAsc.addTask("C", "Three");
toDoList.sortListAscending();
Assertions.assertEquals(expectedSortedListAsc.tasks.get(0).taskName, toDoList.tasks.get(0).taskName);
Assertions.assertEquals(expectedSortedListAsc.tasks.get(2).taskName, toDoList.tasks.get(2).taskName);
}


}