public void PriorityQueue_ExtractMax_EachExtractReturnsHighestValue() { #region Arrange PriorityQueue<Participant, int> Winners = new PriorityQueue<Participant, int>(new ExtractMax()); Winners.Insert(new KeyValuePair<Participant, int>(new Participant { Name = "1", ParticipantId = 1 }, 1000)); Winners.Insert(new KeyValuePair<Participant, int>(new Participant { Name = "2", ParticipantId = 2 }, 500)); Winners.Insert(new KeyValuePair<Participant, int>(new Participant { Name = "3", ParticipantId = 3 }, 600)); Winners.Insert(new KeyValuePair<Participant, int>(new Participant { Name = "4", ParticipantId = 4 }, 100)); Winners.Insert(new KeyValuePair<Participant, int>(new Participant { Name = "5", ParticipantId = 5 }, 150)); Winners.Insert(new KeyValuePair<Participant, int>(new Participant { Name = "6", ParticipantId = 6 }, 175)); Winners.Insert(new KeyValuePair<Participant, int>(new Participant { Name = "7", ParticipantId = 7 }, 10)); Winners.Insert(new KeyValuePair<Participant, int>(new Participant { Name = "8", ParticipantId = 8 }, 750)); Winners.Insert(new KeyValuePair<Participant, int>(new Participant { Name = "9", ParticipantId = 9 }, 300)); Winners.Insert(new KeyValuePair<Participant, int>(new Participant { Name = "10", ParticipantId = 10 }, 210)); Winners.Insert(new KeyValuePair<Participant, int>(new Participant { Name = "11", ParticipantId = 11 }, 1)); Winners.Insert(new KeyValuePair<Participant, int>(new Participant { Name = "12", ParticipantId = 12 }, 19)); Winners.Insert(new KeyValuePair<Participant, int>(new Participant { Name = "13", ParticipantId = 13 }, 1002)); Winners.Insert(new KeyValuePair<Participant, int>(new Participant { Name = "14", ParticipantId = 14 }, 1040)); Winners.Insert(new KeyValuePair<Participant, int>(new Participant { Name = "15", ParticipantId = 15 }, 900)); Winners.Insert(new KeyValuePair<Participant, int>(new Participant { Name = "16", ParticipantId = 16 }, 90)); #endregion #region Act bool AllAreLower = true; var higherWinner = Winners.ExtractPair(); for (int i = 1; i < 16; ++i) { var lowerWinner = Winners.ExtractPair(); if (higherWinner.Value < lowerWinner.Value && AllAreLower) AllAreLower = false; higherWinner = lowerWinner; } #endregion #region Assert Assert.IsTrue(AllAreLower,"Winners did not extract from highest to lowest value"); #endregion }