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
105 changes: 105 additions & 0 deletions tdd-todo-list.CSharp.Main/ToDoList.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,110 @@ namespace tdd_todo_list.CSharp.Main
{
public class TodoList
{
public List<string> _list;
public List<bool> _status;

public TodoList()
{
_list = new List<string>();
_status = new List<bool>();
}

public bool AddTask(string task)
{
_list.Add(task);
_status.Add(false);
return true;
}

public bool ShowAllTasks()
{
for (int i = 0; i < _list.Count; i++)
{
Console.WriteLine($"Task: {_list[i]}, Status: {_status[i]}");
}
return true;
}

public bool UpdateStatus(string task)
{
int inx = _list.IndexOf(task);

if (inx == -1) { return false; }

_status[inx] = true;
return true;
}

public bool ShowCompleteTasks()
{
for (int i = 0; i < _list.Count; i++)
{
if (_status[i])
{
Console.WriteLine($"Task: {_list[i]}, Status: {_status[i]}");
}
}
return true;
}

public bool ShowInCompleteTasks()
{
for (int i = 0; i < _list.Count; i++)
{
if (!_status[i])
{
Console.WriteLine($"Task: {_list[i]}, Status: {_status[i]}");
}
}
return true;
}

public string SearchTask(string task)
{
string result = "Task Not Found";

int inx = _list.IndexOf(task);

if (inx == -1) { return result; }

result = $"The task, {task}, has been found at index {inx}";
return result;
}


public bool RemoveTask(string task)
{
int inx = _list.IndexOf(task);

if (inx == -1) { return false; }

_list.RemoveAt(inx);
_status.RemoveAt(inx);
return true;
}

public bool ShowAllTasksAlphabeticallyAcending()
{
List<string> alphabeticalList = new List<string>(_list);
alphabeticalList.Sort(StringComparer.OrdinalIgnoreCase);
for (int i = 0; i < _list.Count; i++)
{
Console.WriteLine($"Task: {alphabeticalList[i]}");
}
return true;
}

public bool ShowAllTasksAlphabeticallyDecending()
{
List<string> alphabeticalList = new List<string>(_list);
alphabeticalList.Sort(StringComparer.OrdinalIgnoreCase);
alphabeticalList.Reverse();
for (int i = 0; i < _list.Count; i++)
{
Console.WriteLine($"Task: {alphabeticalList[i]}");
}
return true;
}
}
}
92 changes: 90 additions & 2 deletions tdd-todo-list.CSharp.Test/CoreTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,100 @@ namespace tdd_todo_list.CSharp.Test
[TestFixture]
public class CoreTests
{
[Test]
public void TestAdd()
{
TodoList core = new TodoList();
Assert.That(core._list.Count, Is.EqualTo(0));
core.AddTask("Clean");
Assert.That(core._list.Count, Is.EqualTo(1));
core.AddTask("Tidy");
Assert.That(core._list.Count, Is.EqualTo(2));
}

[Test]
public void TestShowAll()
{
TodoList core = new TodoList();
core.AddTask("Clean");
core.AddTask("Tidy");
Assert.That(core.ShowAllTasks, Is.True);
}


[Test]
public void TestUpdate()
{
TodoList core = new TodoList();
core.AddTask("Clean");
core.AddTask("Tidy");
Assert.That(core._status[0], Is.False);
Assert.That(core._status[1], Is.False);
core.UpdateStatus("Clean");
Assert.That(core._status[0], Is.True);
Assert.That(core._status[1], Is.False);
}

[Test]
public void TestUpdateOfTaskNotOnList()
{
TodoList core = new TodoList();
core.AddTask("Clean");
Assert.That(core._status[0], Is.False);
core.UpdateStatus("clean");
Assert.That(core._status[0], Is.False);
Assert.That(core.UpdateStatus("shop"), Is.False);
}

[Test]
public void FirstTest()
public void TestShowOnly()
{
TodoList core = new TodoList();
Assert.Pass();
core.AddTask("Clean");
core.AddTask("Tidy");
core.UpdateStatus("Clean");
Assert.That(core.ShowCompleteTasks(), Is.True);
Assert.That(core.ShowInCompleteTasks(), Is.True);
}

[Test]
public void TestSearch()
{
TodoList core = new TodoList();
core.AddTask("Clean");
core.AddTask("Tidy");
Assert.That(core.SearchTask("Clean"), Is.EqualTo("The task, Clean, has been found at index 0"));
Assert.That(core.SearchTask("clean"), Is.EqualTo("Task Not Found"));
}


[Test]
public void TestRemove()
{
TodoList core = new TodoList();
Assert.That(core._list.Count, Is.EqualTo(0));
core.AddTask("Clean");
Assert.That(core._list.Count, Is.EqualTo(1));
core.AddTask("Tidy");
Assert.That(core._list.Count, Is.EqualTo(2));

Assert.That(core.RemoveTask("tidyclean"), Is.False);

core.RemoveTask("Clean");
Assert.That(core._list.Count, Is.EqualTo(1));
core.RemoveTask("Tidy");
Assert.That(core._list.Count, Is.EqualTo(0));
}

[Test]
public void TestSorting()
{
TodoList core = new TodoList();
core.AddTask("Clean");
core.AddTask("Tidy");
Assert.That(core.ShowAllTasksAlphabeticallyAcending(), Is.True);
Assert.That(core.ShowAllTasksAlphabeticallyDecending(), Is.True);
}

}
}
Loading