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
38 changes: 38 additions & 0 deletions src/main/java/com/booleanuk/core/Task.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.booleanuk.core;

public class Task {
private String description;
private boolean status;

public Task(String description){
this.description = description;
this.status = false;
}

public Task(String description, boolean status){
this.description = description;
this.status = status;
}

public void toggleStatus(){
status = !status;
}

public String getDescription() {
return description;
}

public void setDescription(String description) {
this.description = description;
}


public boolean getStatus() {
return status;
}

public void setStatus(boolean status) {
this.status = status;
}

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

import java.util.ArrayList;
import java.util.List;

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

public void add(String desc) {
tasks.add(new Task(desc));
}

public void add(String desc, boolean status) {
tasks.add(new Task(desc, status));
}

public List<Task> getTasks() {
return tasks;
}

public List<Task> getCompleteTasks() {
List<Task> complete = new ArrayList<>();
for(Task task: tasks){
if (task.getStatus())
complete.add(task);
}
return complete;
}

public List<Task> getIncompleteTasks() {
List<Task> complete = new ArrayList<>();
for(Task task: tasks){
if (!task.getStatus())
complete.add(task);
}
return complete;
}

public Task search(String search) {
for(Task task: tasks){
if (task.getDescription().equals(search))
return task;
}
return null;
}

public boolean remove(String description) {
Task task = search(description);
if (task == null)
return false;
tasks.remove(task);
return true;
}

public List<Task> getAlphAsc() {
tasks.sort((a, b) -> a.getDescription().compareTo(b.getDescription()));
return tasks;
}

public List<Task> getAlphDesc() {
tasks.sort((a, b) -> b.getDescription().compareTo(a.getDescription()));
return tasks;
}
}
14 changes: 14 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,14 @@
| Class | Members | Method | Scenario | Output |
|----------|--------------------|----------------------------|---------------------|------------|
| TodoList | List<Task> tasks | add(String description) | | Void |
| | | getTasks() | | List<Task> |
| | | getCompleteTasks() | | List<Task> |
| | | getIncompleteTasks() | | List<Task> |
| | | search(String search) | Task exists | Task |
| | | | Task does not exist | null |
| | | remove(String description) | Task exists | True |
| | | | Task doesnt exist | False |
| | | getAlphAsc() | | List<Task> |
| | | getAlphDesc() | | List<Task> |
| Task | boolean status | toggleStatus() | | Void |
| | String description | | | |
54 changes: 54 additions & 0 deletions src/main/java/com/booleanuk/extension/TaskExt.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package com.booleanuk.extension;

import java.text.SimpleDateFormat;
import java.util.UUID;

public class TaskExt {
private String description;
private boolean status;
private final String id;
private final String timeStamp;

public TaskExt(String description){
this.description = description;
this.status = false;
this.timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new java.util.Date());
this.id = UUID.randomUUID().toString();
}

public TaskExt(String description, boolean status){
this.description = description;
this.status = status;
this.timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new java.util.Date());
this.id = UUID.randomUUID().toString();
}

public void toggleStatus(){
status = !status;
}

public String getDescription() {
return description;
}

public void setDescription(String description) {
this.description = description;
}


public boolean getStatus() {
return status;
}

public void setStatus(boolean status) {
this.status = status;
}

public String getTimeStamp() {
return timeStamp;
}

public String getId() {
return id;
}
}
90 changes: 90 additions & 0 deletions src/main/java/com/booleanuk/extension/TodoListExt.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
package com.booleanuk.extension;

import com.booleanuk.core.Task;

import java.util.ArrayList;
import java.util.List;

public class TodoListExt {
List<TaskExt> tasks = new ArrayList<>();

public void add(String desc) {
tasks.add(new TaskExt(desc));
}

public void add(String desc, boolean status) {
tasks.add(new TaskExt(desc, status));
}

public List<TaskExt> getTasks() {
return tasks;
}

public List<TaskExt> getCompleteTasks() {
List<TaskExt> complete = new ArrayList<>();
for(TaskExt task: tasks){
if (task.getStatus())
complete.add(task);
}
return complete;
}

public List<TaskExt> getIncompleteTasks() {
List<TaskExt> complete = new ArrayList<>();
for(TaskExt task: tasks){
if (!task.getStatus())
complete.add(task);
}
return complete;
}

public TaskExt search(String search) {
for(TaskExt task: tasks){
if (task.getDescription().equals(search))
return task;
}
return null;
}

public TaskExt searchById(String id) {
for(TaskExt task: tasks){
if (task.getId().equals(id))
return task;
}
return null;
}

public boolean remove(String description) {
TaskExt task = search(description);
if (task == null)
return false;
tasks.remove(task);
return true;
}

public List<TaskExt> getAlphAsc() {
tasks.sort((a, b) -> a.getDescription().compareTo(b.getDescription()));
return tasks;
}

public List<TaskExt> getAlphDesc() {
tasks.sort((a, b) -> b.getDescription().compareTo(a.getDescription()));
return tasks;
}

public boolean renameTask(String id, String newDesc) {
TaskExt task = searchById(id);
if (task == null)
return false;
task.setDescription(newDesc);
return true;
}

public boolean changeTaskStatus(String id) {
TaskExt task = searchById(id);
if (task == null)
return false;
task.toggleStatus();
return true;
}
}
22 changes: 22 additions & 0 deletions src/main/java/com/booleanuk/extension/domain-model-extension.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
| Class | Members | Method | Scenario | Output |
|----------|--------------------|------------------------------------|---------------------|------------|
| TodoList | List<Task> tasks | add(String description) | | Void |
| | | getTasks() | | List<Task> |
| | | getCompleteTasks() | | List<Task> |
| | | getIncompleteTasks() | | List<Task> |
| | | search(String search) | Task exists | Task |
| | | | Task does not exist | null |
| | | search(int id) | Task exists | Task |
| | | | Task does not exist | null |
| | | remove(String description) | Task exists | True |
| | | | Task doesnt exist | False |
| | | getAlphAsc() | | List<Task> |
| | | getAlphDesc() | | List<Task> |
| | | renameTask(int id, String newDesc) | Task exists | true |
| | | | Task doesnt exist | false |
| | | changeTaskStatus(int id) | Task exists | true |
| | | | Task doesnt exist | false |
| Task | boolean status | toggleStatus() | | Void |
| | int id | | | |
| | String description | | | |
| | String timestamp | | | |
100 changes: 96 additions & 4 deletions src/test/java/com/booleanuk/core/TodoListTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,101 @@

class TodoListTest {
@Test
public void exampleTest() {
String hello = "Hello";
Assertions.assertEquals("Hello", hello);
Assertions.assertNotEquals("Goodbye", hello);
public void addTask() {
TodoList todo = new TodoList();
todo.add("Do dishes");
Assertions.assertEquals("Do dishes", todo.getTasks().getFirst().getDescription());
}

@Test
public void testToggleStatus() {
Task task = new Task("Do dishes");
task.toggleStatus();
Assertions.assertTrue(task.getStatus());
}

@Test
public void testToggleStatusFalse() {
Task task = new Task("Do dishes", true);
task.toggleStatus();
Assertions.assertFalse(task.getStatus());
}

@Test
public void getCompleteTask() {
TodoList todo = new TodoList();
todo.add("Do dishes");
todo.add("Do vacuuming");
todo.add("Do homework", true);
Assertions.assertEquals(1, todo.getCompleteTasks().size());
}

@Test
public void getinCompleteTask() {
TodoList todo = new TodoList();
todo.add("Do dishes");
todo.add("Do vacuuming");
todo.add("Do homework", true);
Assertions.assertEquals(2, todo.getIncompleteTasks().size());
}

@Test
public void testSearch() {
TodoList todo = new TodoList();
todo.add("Do dishes");
todo.add("Do vacuuming");
todo.add("Do homework", true);
Assertions.assertEquals("Do dishes", todo.search("Do dishes").getDescription());
}

@Test
public void testSearchNull() {
TodoList todo = new TodoList();
todo.add("Do dishes");
todo.add("Do vacuuming");
todo.add("Do homework", true);
Assertions.assertEquals(null, todo.search("Play games"));
}

@Test
public void testRemoving() {
TodoList todo = new TodoList();
todo.add("Do dishes");
todo.add("Do vacuuming");
todo.add("Do homework", true);
Assertions.assertEquals(true, todo.remove("Do dishes"));
Assertions.assertEquals(2, todo.getTasks().size());
}

@Test
public void testRemovingNotExisting() {
TodoList todo = new TodoList();
todo.add("Do dishes");
todo.add("Do vacuuming");
todo.add("Do homework", true);
Assertions.assertEquals(false, todo.remove("Play Games"));
Assertions.assertEquals(3, todo.getTasks().size());
}

@Test
public void testSortAsc() {
TodoList todo = new TodoList();
todo.add("Do dishes");
todo.add("Do vacuuming");
todo.add("Do homework", true);
Assertions.assertEquals("Do dishes", todo.getAlphAsc().get(0).getDescription());
Assertions.assertEquals("Do homework", todo.getAlphAsc().get(1).getDescription());
Assertions.assertEquals("Do vacuuming", todo.getAlphAsc().get(2).getDescription());
}

@Test
public void testSortDesc() {
TodoList todo = new TodoList();
todo.add("Do dishes");
todo.add("Do vacuuming");
todo.add("Do homework", true);
Assertions.assertEquals("Do dishes", todo.getAlphDesc().get(2).getDescription());
Assertions.assertEquals("Do homework", todo.getAlphDesc().get(1).getDescription());
Assertions.assertEquals("Do vacuuming", todo.getAlphDesc().get(0).getDescription());
}
}
Loading
Loading