From 1721bb3ac24c13dcaf1b7e739d9dd28f2cd21128 Mon Sep 17 00:00:00 2001 From: Trym Haugan Berger Date: Thu, 7 Aug 2025 15:59:01 +0200 Subject: [PATCH 1/3] finished most --- domain-model.md | 14 ++ tdd-todo-list.CSharp.Main/Extension.cs | 12 -- tdd-todo-list.CSharp.Main/Task.cs | 40 +++++ tdd-todo-list.CSharp.Main/ToDoList.cs | 93 ++++++++++ tdd-todo-list.CSharp.Test/CoreTests.cs | 183 +++++++++++++++++++- tdd-todo-list.CSharp.Test/ExtensionTests.cs | 77 +++++++- tdd-todo-list.sln | 1 + 7 files changed, 399 insertions(+), 21 deletions(-) create mode 100644 domain-model.md delete mode 100644 tdd-todo-list.CSharp.Main/Extension.cs create mode 100644 tdd-todo-list.CSharp.Main/Task.cs diff --git a/domain-model.md b/domain-model.md new file mode 100644 index 00000000..2c8708d3 --- /dev/null +++ b/domain-model.md @@ -0,0 +1,14 @@ +# Domain Model + + +| Classes | Methods/Properties | Scenario | Outputs | +|-----------------|----------------------------------------------------|------------------------------------------------------------------------------|----------------------------------- +|ToDoList.cs |AddTask(string id, Task task) |add a new task to the todo list |the added task | +|ToDoList.cs |RemoveTask(string id) |remove task from todo list |the removed task | +|ToDoList.cs |ChangeTaskStatus(string id, bool complete) |change task status between complete/incomplete |the task | +|ToDoList.cs |GetTasksByStatus(bool complete) |list all complete or incomplete tasks |List | +|ToDoList.cs |SearchTask(string id) |search for a task to see if it exists or not |bool | +|ToDoList.cs |ListTasksAlphabeticalOrder(string order) |see all tasks ordered alphabetically in either acending or descending order |List | +|ToDoList.cs |ListTasksByPriority() |list all tasks by priority |List | +|ToDoList.cs |RenameTaskById(string id) |change the name/description of a task with its id |task | +|ToDoList.cs |GetTaskCompletionTime(string id) |get timestamp a task was completed |DateTime | \ No newline at end of file diff --git a/tdd-todo-list.CSharp.Main/Extension.cs b/tdd-todo-list.CSharp.Main/Extension.cs deleted file mode 100644 index e4c08912..00000000 --- a/tdd-todo-list.CSharp.Main/Extension.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace tdd_todo_list.CSharp.Main -{ - public class TodoListExtension - { - } -} diff --git a/tdd-todo-list.CSharp.Main/Task.cs b/tdd-todo-list.CSharp.Main/Task.cs new file mode 100644 index 00000000..d36a578f --- /dev/null +++ b/tdd-todo-list.CSharp.Main/Task.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace tdd_todo_list.CSharp.Main +{ + public class Task(string id, string desc, int priority, bool completed, string category) + { + private string _id = id; + private string _desc = desc; + private int _priority = priority; + private bool _completed = completed; + private string _category = category; + private DateTime _created = DateTime.Now; + private DateTime _finished; + private TimeSpan _duration; + + public string Id { get => _id; set => _id = value; } + public string Desc { get => _desc; set => _desc = value; } + public int Priority { get => _priority; set => _priority = value; } + public bool Completed { get => _completed; set => _completed = value; } + public string Category { get => _category; set => _category = value; } + public DateTime Created { get => _created; } + public DateTime Finished { get => _finished; set => _finished = value; } + public TimeSpan Duration { get => _duration; set => _duration = value; } + + + public TimeSpan calculateDuration() + { + TimeSpan duration = this._created.Subtract(this._finished); + this._duration = duration; + return duration; + } + + } + + +} diff --git a/tdd-todo-list.CSharp.Main/ToDoList.cs b/tdd-todo-list.CSharp.Main/ToDoList.cs index 835cb600..2af703e0 100644 --- a/tdd-todo-list.CSharp.Main/ToDoList.cs +++ b/tdd-todo-list.CSharp.Main/ToDoList.cs @@ -8,5 +8,98 @@ namespace tdd_todo_list.CSharp.Main { public class TodoList { + + public Dictionary list = new Dictionary(); + + public Task AddTask(string id, Task task) + { + list.Add(id, task); + return task; + } + + public Task ChangeTaskStatus(string id, bool v) + { + Task task = list[id]; + task.Completed = v; + return task; + } + + public List GetTasksByStatus(bool v) + { + List tasks = new List(); + foreach (var task in list.Values) { + if(task.Completed == v) + { + tasks.Add(task); + } + } + return tasks; + } + + public List ListTasksAlphabeticalOrder(string v) + { + List result = list.Values.ToList(); + result.Sort((x, y) => string.Compare(x.Desc, y.Desc)); + + if (v.ToUpper().Equals("DESCENDING")) + { + result.Reverse(); + } + return result; + + } + + public List ListTasksByPriority(int v) + { + List values = list.Values.ToList(); + List result = new List(); + + foreach (var task in values) + { + if(task.Priority == v) + { + result.Add(task); + } + } + return result; + } + + public Task RemoveTask(string id) + { + Task task = list[id]; + list.Remove(id); + return task; + } + + public Task RenameTaskbyId(string id, string v) + { + Task task = list[id]; + task.Desc = v; + return task; + } + + public bool SearchTask(string id) + { + if(list.ContainsKey(id)) { return true; } + else return false; + } + + public List GetTasksByCategory(string c) + { + List tasks = new List(); + foreach (var task in list.Values) + { + if (task.Category.Equals(c)) + { + tasks.Add(task); + } + } + return tasks; + } + + public DateTime getTaskCompletionTime(string id) + { + return list[id].Finished; + } } } diff --git a/tdd-todo-list.CSharp.Test/CoreTests.cs b/tdd-todo-list.CSharp.Test/CoreTests.cs index 084cce19..211251c4 100644 --- a/tdd-todo-list.CSharp.Test/CoreTests.cs +++ b/tdd-todo-list.CSharp.Test/CoreTests.cs @@ -1,5 +1,8 @@ -using tdd_todo_list.CSharp.Main; -using NUnit.Framework; +using NUnit.Framework; +using NUnit.Framework.Constraints; +using System.Numerics; +using tdd_todo_list.CSharp.Main; +using Task = tdd_todo_list.CSharp.Main.Task; namespace tdd_todo_list.CSharp.Test { @@ -8,10 +11,180 @@ public class CoreTests { [Test] - public void FirstTest() + public void AddedTaskisAdded() { - TodoList core = new TodoList(); - Assert.Pass(); + TodoList list = new TodoList(); + string id = "1"; + string desc = "Water plants"; + int priority = 3; + bool completed = false; + Task task = new(id, desc, priority, completed, ""); + + list.AddTask(id, task); + bool result = list.SearchTask(id); + + Assert.IsTrue(result); + + } + + [Test] + public void RemovedTaskisRemoved() + { + TodoList list = new TodoList(); + string id = "1"; + string desc = "Water plants"; + int priority = 3; + bool completed = false; + Task task = new(id, desc, priority, completed, ""); + + list.AddTask(id, task); + Task result = list.RemoveTask(id); + + Assert.That(result.Id, Is.EqualTo(id)); + } + + + [Test] + public void GotTasksByStatus() + { + TodoList list = new TodoList(); + string id = "1"; + string desc = "Water plants"; + int priority = 3; + bool completed = false; + Task taskIC1 = new(id, desc, priority, completed, ""); + + id = "2"; + desc = "Paint wall"; + priority = 3; + completed = false; + Task taskIC2 = new(id, desc, priority, completed, ""); + + id = "3"; + desc = "Walk dog"; + priority = 3; + completed = true; + Task taskC1 = new(id, desc, priority, completed, ""); + + list.AddTask(taskIC1.Id, taskIC1); + list.AddTask(taskIC2.Id, taskIC2); + list.AddTask(taskC1.Id, taskC1); + + List resultList = list.GetTasksByStatus(false); + int complete = 0; + int incomplete = 0; + + foreach (var item in resultList) + { + if(item.Completed) { complete++; } + else if (!item.Completed) { incomplete++; } + } + Assert.That(complete, Is.EqualTo(0)); + Assert.That(incomplete, Is.EqualTo(2)); + } + + public void SearchTaskTest() + { + TodoList list = new TodoList(); + string id = "1"; + string desc = "Water plants"; + int priority = 3; + bool completed = false; + Task task = new(id, desc, priority, completed, ""); + + bool result1 = list.SearchTask(id); + bool result2 = list.SearchTask("X"); + + Assert.True(result1); + Assert.False(result2); } + + [Test] + public void ListTasksAlphabeticalTest() + { + TodoList list = new TodoList(); + string id = "1"; + string desc = "Drive home"; + int priority = 3; + bool completed = false; + Task task1 = new(id, desc, priority, completed, ""); + + id = "2"; + desc = "Call boss"; + priority = 3; + completed = false; + Task task2 = new(id, desc, priority, completed, ""); + + id = "3"; + desc = "Buy apples"; + priority = 3; + completed = false; + Task task3 = new(id, desc, priority, completed, ""); + + list.AddTask(task1.Id, task1); + list.AddTask(task2.Id, task2); + list.AddTask(task3.Id, task3); + + List resultList = list.ListTasksAlphabeticalOrder("Descending"); + + List ordered = new List(); + ordered.Add("Buy apples"); + ordered.Add("Call boss"); + ordered.Add("Drive home"); + + ordered.Reverse(); + + bool isOrdered = true; + + for (int i = 0; i < 3; i++) + { + if (!resultList[i].Desc.Equals(ordered[i])) + { + isOrdered = false; break; + } + } + Assert.True(isOrdered); + } + + [Test] + public void ListTasksByPriority() + { + TodoList list = new TodoList(); + string id = "1"; + string desc = "Drive home"; + int priority = 2; + bool completed = false; + Task task1 = new(id, desc, priority, completed, ""); + + id = "2"; + desc = "Call boss"; + priority = 2; + completed = false; + Task task2 = new(id, desc, priority, completed, ""); + + id = "3"; + desc = "Buy apples"; + priority = 1; + completed = false; + Task task3 = new(id, desc, priority, completed, ""); + + list.AddTask(task1.Id, task1); + list.AddTask(task2.Id, task2); + list.AddTask(task3.Id, task3); + + List resultList = list.ListTasksByPriority(2); + + int prio1 = 0; + int prio2 = 0; + + foreach (var item in resultList) + { + if (item.Priority == 1) { prio1++; } + else if (item.Priority == 2) { prio2++; } + } + Assert.That(prio1, Is.EqualTo(0)); + Assert.That(prio2, Is.EqualTo(2)); + } + } } \ No newline at end of file diff --git a/tdd-todo-list.CSharp.Test/ExtensionTests.cs b/tdd-todo-list.CSharp.Test/ExtensionTests.cs index bdc82ad7..26b47b3b 100644 --- a/tdd-todo-list.CSharp.Test/ExtensionTests.cs +++ b/tdd-todo-list.CSharp.Test/ExtensionTests.cs @@ -1,18 +1,87 @@ -using tdd_todo_list.CSharp.Main; +using NUnit.Framework; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using tdd_todo_list.CSharp.Main; +using Task = tdd_todo_list.CSharp.Main.Task; namespace tdd_todo_list.CSharp.Test { public class ExtensionTests { - private TodoListExtension _extension; - public ExtensionTests() + [Test] + public void UpdatedNameIsUpdated() { - _extension = new TodoListExtension(); + TodoList list = new TodoList(); + string id = "1"; + string desc = "Water plants"; + int priority = 3; + bool completed = false; + Task task = new(id, desc, priority, completed, ""); + + list.AddTask(id, task); + + Task result = list.RenameTaskbyId(id, "Water flowers"); + + Assert.That(result.Desc, Is.EqualTo("Water flowers")); + + } + + [Test] + public void ChangedStatusIsChanged() + { + TodoList list = new TodoList(); + string id = "1"; + string desc = "Water plants"; + int priority = 3; + bool completed = false; + Task task = new(id, desc, priority, completed, ""); + + list.AddTask(id, task); + Task result = list.ChangeTaskStatus(id, true); + + Assert.True(result.Completed); + } + + [Test] + public void GotTasksByCategory() + { + TodoList list = new TodoList(); + string id = "1"; + string desc = "Water plants"; + int priority = 3; + bool completed = false; + Task task1 = new(id, desc, priority, completed, "work"); + + id = "2"; + desc = "Paint wall"; + priority = 3; + completed = false; + Task task2 = new(id, desc, priority, completed, "work"); + + id = "3"; + desc = "Walk dog"; + priority = 3; + completed = true; + Task task3 = new(id, desc, priority, completed, "study"); + + list.AddTask(task1.Id, task1); + list.AddTask(task2.Id, task2); + list.AddTask(task3.Id, task3); + + List resultList = list.GetTasksByCategory("work"); + int work = 0; + int study = 0; + + foreach (var item in resultList) + { + if (item.Category.Equals("work")) { work++; } + else if (item.Category.Equals("study")) { study++; } + } + Assert.That(study, Is.EqualTo(0)); + Assert.That(work, Is.EqualTo(2)); } } } diff --git a/tdd-todo-list.sln b/tdd-todo-list.sln index 66d24763..2a5e0bbd 100644 --- a/tdd-todo-list.sln +++ b/tdd-todo-list.sln @@ -10,6 +10,7 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{663B0373-6031-46F8-ADD5-9AF01A5E82D5}" ProjectSection(SolutionItems) = preProject .github\workflows\core-criteria.yml = .github\workflows\core-criteria.yml + domain-model.md = domain-model.md .github\workflows\extension-criteria.yml = .github\workflows\extension-criteria.yml README.md = README.md EndProjectSection From 7428b25dc8f9dfa7d2271d069cd8fb031e250bd8 Mon Sep 17 00:00:00 2001 From: Trym Haugan Berger Date: Fri, 8 Aug 2025 12:33:35 +0200 Subject: [PATCH 2/3] added task time tracking functionality --- tdd-todo-list.CSharp.Main/Task.cs | 2 +- tdd-todo-list.CSharp.Main/ToDoList.cs | 47 ++++++++ tdd-todo-list.CSharp.Test/ExtensionTests.cs | 116 ++++++++++++++++++++ 3 files changed, 164 insertions(+), 1 deletion(-) diff --git a/tdd-todo-list.CSharp.Main/Task.cs b/tdd-todo-list.CSharp.Main/Task.cs index d36a578f..c3680346 100644 --- a/tdd-todo-list.CSharp.Main/Task.cs +++ b/tdd-todo-list.CSharp.Main/Task.cs @@ -29,7 +29,7 @@ public class Task(string id, string desc, int priority, bool completed, string c public TimeSpan calculateDuration() { - TimeSpan duration = this._created.Subtract(this._finished); + TimeSpan duration = this._finished.Subtract(this._created); this._duration = duration; return duration; } diff --git a/tdd-todo-list.CSharp.Main/ToDoList.cs b/tdd-todo-list.CSharp.Main/ToDoList.cs index 2af703e0..623cdbf7 100644 --- a/tdd-todo-list.CSharp.Main/ToDoList.cs +++ b/tdd-todo-list.CSharp.Main/ToDoList.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Reflection.Metadata.Ecma335; using System.Text; using System.Threading.Tasks; @@ -101,5 +102,51 @@ public DateTime getTaskCompletionTime(string id) { return list[id].Finished; } + + public TimeSpan getTeskDuration(string id) + { + Task task = list[id]; + return task.Finished.Subtract(task.Created); + + } + + public Task findLongestDurationTask() + { + List tasks = list.Values.ToList(); + tasks.Sort((task1, task2) => task1.Duration.CompareTo(task2.Duration)); + tasks.Reverse(); + return tasks.First(); + } + + public Task findShortestDurationTask() + { + List tasks = list.Values.ToList(); + tasks.Sort((task1, task2) => task1.Duration.CompareTo(task2.Duration)); + return tasks.First(); + } + + public void printTaskDurationById(string id) + { + Task task = list[id]; + Console.WriteLine(task.Duration); + } + + + public List findTasksLongerThan5Days() + { + List tasks = list.Values.ToList(); + List fiveDayTasks = new List(); + TimeSpan fivedays = TimeSpan.FromDays(5); + + foreach (Task task in tasks) + { + if(task.Duration.CompareTo(fivedays) > 0) + { + fiveDayTasks.Add(task); + } + } + return fiveDayTasks; + } + } } diff --git a/tdd-todo-list.CSharp.Test/ExtensionTests.cs b/tdd-todo-list.CSharp.Test/ExtensionTests.cs index 26b47b3b..532f24e3 100644 --- a/tdd-todo-list.CSharp.Test/ExtensionTests.cs +++ b/tdd-todo-list.CSharp.Test/ExtensionTests.cs @@ -9,6 +9,7 @@ namespace tdd_todo_list.CSharp.Test { + [TestFixture] public class ExtensionTests { [Test] @@ -83,5 +84,120 @@ public void GotTasksByCategory() Assert.That(study, Is.EqualTo(0)); Assert.That(work, Is.EqualTo(2)); } + + [Test] + public void CorrectTaskCompletedTime() + { + DateTime now = DateTime.Now; + Task task = new Task("1", "", 1, false, ""); + task.Finished = now; + + Assert.That(task.Finished, Is.EqualTo(now)); + } + + [Test] + public void CorrectTaskDuration() + { + DateTime now = DateTime.Now; + DateTime future = DateTime.Now.AddDays(1); + TodoList list = new TodoList(); + + Task task = new Task("1", "", 1, false, ""); + list.AddTask("1", task); + + task.Finished = future; + + task.calculateDuration(); + + TimeSpan result = list.getTeskDuration("1"); + + + Assert.That((int)result.TotalMinutes , Is.InRange(1439, 1440)); + } + + [Test] + public void CorrectLongestTaskDuration() + { + DateTime now = DateTime.Now; + DateTime day= DateTime.Now.AddDays(1); + DateTime day2 = DateTime.Now.AddDays(2); + TodoList list = new TodoList(); + + Task taskShort = new Task("1", "", 1, false, ""); + Task taskLong = new Task("2", "", 1, false, ""); + list.AddTask("1", taskShort); + list.AddTask("2", taskLong); + + taskShort.Finished = day; + taskLong.Finished = day2; + + taskLong.calculateDuration(); + taskShort.calculateDuration(); + + TimeSpan resultShort = list.getTeskDuration("1"); + + Task longest = list.findLongestDurationTask(); + + + Assert.That(taskShort.Duration.TotalHours.CompareTo(longest.Duration.TotalHours), Is.Negative); + } + + [Test] + public void CorrectShortestTaskDuration() + { + DateTime now = DateTime.Now; + DateTime day = DateTime.Now.AddDays(1); + DateTime day2 = DateTime.Now.AddDays(2); + TodoList list = new TodoList(); + + Task taskShort = new Task("1", "", 1, false, ""); + Task taskLong = new Task("2", "", 1, false, ""); + list.AddTask("1", taskShort); + list.AddTask("2", taskLong); + + taskShort.Finished = day; + taskLong.Finished = day2; + + taskLong.calculateDuration(); + taskShort.calculateDuration(); + + TimeSpan resultLong = list.getTeskDuration("2"); + + Task shortest = list.findShortestDurationTask(); + + + Assert.That(taskLong.Duration.TotalHours.CompareTo(shortest.Duration.TotalHours), Is.Positive); + } + [Test] + public void TestTasksLongerThan5Days() + { + + TimeSpan day4 = TimeSpan.FromDays(4); + TimeSpan day6 = TimeSpan.FromDays(6); + TimeSpan day10 = TimeSpan.FromDays(6); + TodoList list = new TodoList(); + + Task task4days = new Task("1", "", 1, false, ""); + Task task6days = new Task("2", "", 1, false, ""); + Task task10days = new Task("3", "", 1, false, ""); + + task4days.Duration = day4; + task6days.Duration = day6; + task10days.Duration = day10; + + list.AddTask("1", task4days); + list.AddTask("2", task6days); + list.AddTask("3", task10days); + + List tasks = list.findTasksLongerThan5Days(); + + TimeSpan min = tasks.Min(task => task.Duration); + int count = tasks.Count(); + + Assert.That(min.CompareTo(day4), Is.Positive); + Assert.That(count, Is.EqualTo(2)); + } + + } } From 50e02a968682ad1328ca7fbeef5806d0e9ed128e Mon Sep 17 00:00:00 2001 From: Trym Haugan Berger Date: Fri, 8 Aug 2025 13:38:18 +0200 Subject: [PATCH 3/3] final version (probably) --- domain-model.md | 12 +++++++-- tdd-todo-list.CSharp.Main/Program.cs | 28 +++++++++++++++++++-- tdd-todo-list.CSharp.Main/ToDoList.cs | 13 +++++++++- tdd-todo-list.CSharp.Test/ExtensionTests.cs | 6 ++--- 4 files changed, 51 insertions(+), 8 deletions(-) diff --git a/domain-model.md b/domain-model.md index 2c8708d3..d77cd196 100644 --- a/domain-model.md +++ b/domain-model.md @@ -10,5 +10,13 @@ |ToDoList.cs |SearchTask(string id) |search for a task to see if it exists or not |bool | |ToDoList.cs |ListTasksAlphabeticalOrder(string order) |see all tasks ordered alphabetically in either acending or descending order |List | |ToDoList.cs |ListTasksByPriority() |list all tasks by priority |List | -|ToDoList.cs |RenameTaskById(string id) |change the name/description of a task with its id |task | -|ToDoList.cs |GetTaskCompletionTime(string id) |get timestamp a task was completed |DateTime | \ No newline at end of file +|ToDoList.cs |RenameTaskById(string id) |change the name/description of a task with its id |task | +|ToDoList.cs |GetTaskCompletionTime(string id) |get timestamp a task was completed |DateTime | +|ToDoList.cs |findTasksLongerThan5Days() |get all tasks that have laster more than 5 days |List | +|ToDoList.cs |findShortestDurationTask() |find the task that took the shortest time |Task | +|ToDoList.cs |findLongestDurationTask() |find the task that took the longest time |Task | +|ToDoList.cs |getTasksByCategory(string c) |list all tasks that belong to a given category |List | +|Task.cs |calculateDuration() |calculate how long a task was active before it was completed |TimeSpan | +|ToDoList.cs |getTaskCompletionTime(string id) |get the time a task was completed |DateTime | +|ToDoList.cs |getTaskCreationTime(string id) |get the time a task was created |DateTime | +|ToDoList.cs |printAllTasks() |show in console the information about all tasks |void, text in console | \ No newline at end of file diff --git a/tdd-todo-list.CSharp.Main/Program.cs b/tdd-todo-list.CSharp.Main/Program.cs index 3751555c..abc5ec28 100644 --- a/tdd-todo-list.CSharp.Main/Program.cs +++ b/tdd-todo-list.CSharp.Main/Program.cs @@ -1,2 +1,26 @@ -// See https://aka.ms/new-console-template for more information -Console.WriteLine("Hello, World!"); + + +using NUnit.Framework; +using tdd_todo_list.CSharp.Main; +using Task = tdd_todo_list.CSharp.Main.Task; + +DateTime now = DateTime.Now; +DateTime day = DateTime.Now.AddDays(1); +DateTime day2 = DateTime.Now.AddDays(2); +TodoList list = new TodoList(); + +Task task1 = new Task("1", "Water plants", 1, false, "Gardening"); +Task task2 = new Task("2", "Fix car", 2, false, "Work"); +Task task3 = new Task("1", "Take out trash", 1, true, "Work"); +Task task4 = new Task("2", "Paint house", 3, false, "Work"); + + + +list.AddTask("1", task1); +list.AddTask("2", task2); +list.AddTask("3", task3); +list.AddTask("4", task4); + + +list.printAllTasks(); + diff --git a/tdd-todo-list.CSharp.Main/ToDoList.cs b/tdd-todo-list.CSharp.Main/ToDoList.cs index 623cdbf7..c5bd0425 100644 --- a/tdd-todo-list.CSharp.Main/ToDoList.cs +++ b/tdd-todo-list.CSharp.Main/ToDoList.cs @@ -103,7 +103,7 @@ public DateTime getTaskCompletionTime(string id) return list[id].Finished; } - public TimeSpan getTeskDuration(string id) + public TimeSpan getTaskDuration(string id) { Task task = list[id]; return task.Finished.Subtract(task.Created); @@ -148,5 +148,16 @@ public List findTasksLongerThan5Days() return fiveDayTasks; } + public void printAllTasks() + { + List tasks = list.Values.ToList(); + foreach(Task task in tasks) + { + Console.WriteLine($"Task id: {task.Id}\nTask description: {task.Desc}\nTask priority: {task.Priority}" + + $"\nTask completed: {task.Completed}\nTask category: {task.Category}\nTask creation time: {task.Created}" + + $"\nTask completion time: {task.Finished}\nTask duration: {task.Duration}\n"); + } + } + } } diff --git a/tdd-todo-list.CSharp.Test/ExtensionTests.cs b/tdd-todo-list.CSharp.Test/ExtensionTests.cs index 532f24e3..3021aa1f 100644 --- a/tdd-todo-list.CSharp.Test/ExtensionTests.cs +++ b/tdd-todo-list.CSharp.Test/ExtensionTests.cs @@ -109,7 +109,7 @@ public void CorrectTaskDuration() task.calculateDuration(); - TimeSpan result = list.getTeskDuration("1"); + TimeSpan result = list.getTaskDuration("1"); Assert.That((int)result.TotalMinutes , Is.InRange(1439, 1440)); @@ -134,7 +134,7 @@ public void CorrectLongestTaskDuration() taskLong.calculateDuration(); taskShort.calculateDuration(); - TimeSpan resultShort = list.getTeskDuration("1"); + TimeSpan resultShort = list.getTaskDuration("1"); Task longest = list.findLongestDurationTask(); @@ -161,7 +161,7 @@ public void CorrectShortestTaskDuration() taskLong.calculateDuration(); taskShort.calculateDuration(); - TimeSpan resultLong = list.getTeskDuration("2"); + TimeSpan resultLong = list.getTaskDuration("2"); Task shortest = list.findShortestDurationTask();