public static void Main(string[] args) { var queue = new ThreadSafePriorityQueue <SimpleTask>(new ImpactBasedPriorityComparer()); var listOfTasks = new List <SimpleTask>(6) { new SimpleTask() { Priority = new TaskPriority() { ImpactLevel = ImpactLevel.Low, DesignatedBy = UserRole.QA, Deadline = DateTime.UtcNow } }, new SimpleTask() { Priority = new TaskPriority() { ImpactLevel = ImpactLevel.Critical, DesignatedBy = UserRole.Developer, Deadline = DateTime.UtcNow } }, new SimpleTask() { Priority = new TaskPriority() { ImpactLevel = ImpactLevel.High, DesignatedBy = UserRole.Developer, Deadline = DateTime.MaxValue } }, new SimpleTask() { Priority = new TaskPriority() { ImpactLevel = ImpactLevel.High, DesignatedBy = UserRole.QA, Deadline = DateTime.MaxValue } } , new SimpleTask() { Priority = new TaskPriority() { ImpactLevel = ImpactLevel.Trivial, DesignatedBy = UserRole.Developer, Deadline = DateTime.UtcNow } } , new SimpleTask() { Priority = new TaskPriority() { ImpactLevel = ImpactLevel.Medium, DesignatedBy = UserRole.QA, Deadline = DateTime.UtcNow } } }; listOfTasks.ForEach(task => { Console.WriteLine($"* Item to be enqueued [{task.Id}] :\n\tImpactLevel = {task.Priority.ImpactLevel}\n\tDesignatedBy = {task.Priority.DesignatedBy}\n\tDeadline = {task.Priority.Deadline}"); queue.Enqueue(task); Console.WriteLine($"Enqueued [{task.Id}].\t# of items in queue: {queue.Count}\n"); }); var highestPriorityItem = queue.Peek(); if (highestPriorityItem != null) { Console.WriteLine($"\nThe highest priority item {highestPriorityItem.Id} found via Peek()."); } var removedItem = queue.Remove(highestPriorityItem.Id); Console.WriteLine($"Removed item [{removedItem.Id}] from the queue.\n"); while (!queue.IsEmpty) { Console.WriteLine($"Dequeued [{queue.Dequeue().Id}].\t# of items in queue: {queue.Count}"); } Console.WriteLine("\nDONE"); Console.ReadLine(); }
public void SizeConstructorTest() { var q = new ThreadSafePriorityQueue <Node, float>(128); Assert.IsNotNull(q); }