public void SynchronisedMaxPriorityQueueEnumerationYieldsLowestPriorityAsLastItem() { var priorityQueue = new SynchronisedMaxPriorityQueue <string, int>(50); List <Tuple <string, int> > items = new List <Tuple <string, int> > { new Tuple <string, int>("A_50", 50), new Tuple <string, int>("A_41", 41), new Tuple <string, int>("A_38", 38), new Tuple <string, int>("A_37", 37), new Tuple <string, int>("A_23", 23), new Tuple <string, int>("A_11", 11), new Tuple <string, int>("A_5", 5), new Tuple <string, int>("A_3", 3), }.Randomize() .ToList(); priorityQueue.EnqueueRange(items); List <string> list = new List <string>(); foreach (string s in priorityQueue) { list.Add(s); } Assert.AreEqual("A_3", list.Last()); }
public void SynchronisedMaxPriorityQueueDoesNotInsertItemToHeadIfItemIsLowerPriorityThanHead() { var priorityQueue = new SynchronisedMaxPriorityQueue <string, int>(50); List <Tuple <string, int> > items = new List <Tuple <string, int> > { new Tuple <string, int>("A_50", 50), new Tuple <string, int>("A_41", 41), new Tuple <string, int>("A_38", 38), new Tuple <string, int>("A_37", 37), new Tuple <string, int>("A_23", 23), new Tuple <string, int>("A_11", 11), new Tuple <string, int>("A_5", 5), new Tuple <string, int>("A_3", 3), }.Randomize() .ToList(); priorityQueue.EnqueueRange(items); string originalHead = priorityQueue.Peek(); priorityQueue.Enqueue("A_49", 49); string newHead = priorityQueue.Peek(); Assert.AreEqual("A_50", originalHead); Assert.AreEqual("A_50", newHead); }
public void SynchronisedMaxPriorityQueueMovesNextHighestPriorityItemToHeadAfterDequeueItem() { var priorityQueue = new SynchronisedMaxPriorityQueue <string, int>(50); List <Tuple <string, int> > items = new List <Tuple <string, int> > { new Tuple <string, int>("A_50", 50), new Tuple <string, int>("A_41", 41), new Tuple <string, int>("A_38", 38), new Tuple <string, int>("A_37", 37), new Tuple <string, int>("A_23", 23), new Tuple <string, int>("A_11", 11), new Tuple <string, int>("A_5", 5), new Tuple <string, int>("A_3", 3), }.Randomize() .ToList(); priorityQueue.EnqueueRange(items); priorityQueue.Dequeue(); string item = priorityQueue.Peek(); Assert.AreEqual("A_41", item); }
public void SynchronisedMaxPriorityQueueDoesNotInsertsItemInCollectionAsHeadIfItemIsLowerPriorityThanOriginalHead() { var priorityQueue = new SynchronisedMaxPriorityQueue <string, int>(50); List <Tuple <string, int> > items = new List <Tuple <string, int> > { new Tuple <string, int>("A_50", 50), new Tuple <string, int>("A_41", 41), new Tuple <string, int>("A_38", 38), new Tuple <string, int>("A_37", 37), new Tuple <string, int>("A_23", 23), new Tuple <string, int>("A_11", 11), new Tuple <string, int>("A_5", 5), new Tuple <string, int>("A_3", 3), }.Randomize() .ToList(); priorityQueue.EnqueueRange(items); string originalHead = priorityQueue.Peek(); List <Tuple <string, int> > newItems = new List <Tuple <string, int> > { new Tuple <string, int>("A_49", 49), new Tuple <string, int>("A_4", 4), new Tuple <string, int>("A_6", 6), new Tuple <string, int>("A_8", 8), new Tuple <string, int>("A_10", 10), new Tuple <string, int>("A_12", 12), new Tuple <string, int>("A_14", 14), new Tuple <string, int>("A_16", 16), }.Randomize() .ToList(); priorityQueue.EnqueueRange(newItems); string newHead = priorityQueue.Peek(); Assert.AreEqual("A_50", originalHead); Assert.AreEqual("A_50", newHead); }
public void SynchronisedMaxPriorityQueueInsertsItems() { var priorityQueue = new SynchronisedMaxPriorityQueue <string, int>(50); List <Tuple <string, int> > items = new List <Tuple <string, int> > { new Tuple <string, int>("A_50", 50), new Tuple <string, int>("A_41", 41), new Tuple <string, int>("A_38", 38), new Tuple <string, int>("A_37", 37), new Tuple <string, int>("A_23", 23), new Tuple <string, int>("A_11", 11), new Tuple <string, int>("A_5", 5), new Tuple <string, int>("A_3", 3), }.Randomize() .ToList(); priorityQueue.EnqueueRange(items); Assert.AreEqual(8, priorityQueue.Count); }
public void SynchronisedMaxPriorityQueueClearRemovesAllItems() { var priorityQueue = new SynchronisedMaxPriorityQueue <string, int>(50); List <Tuple <string, int> > items = new List <Tuple <string, int> > { new Tuple <string, int>("A_50", 50), new Tuple <string, int>("A_41", 41), new Tuple <string, int>("A_38", 38), new Tuple <string, int>("A_37", 37), new Tuple <string, int>("A_23", 23), new Tuple <string, int>("A_11", 11), new Tuple <string, int>("A_5", 5), new Tuple <string, int>("A_3", 3), }.Randomize() .ToList(); priorityQueue.EnqueueRange(items); priorityQueue.Clear(); Assert.IsTrue(priorityQueue.IsEmpty); }