示例#1
0
        public void ShouldPopFromEmptyQueueForReferenceTypes()
        {
            var one = new PrioritizableItem(1);

            _priorityQueue.Push(one);

            _priorityQueue.Pop().Value.ShouldBe(1);
            _priorityQueue.Pop().ShouldBe(null);
        }
示例#2
0
 public void Setup()
 {
     _priorityQueue = new PriorityQueue <PrioritizableItem>(new ComparePrioritizableItem());
     _one           = new PrioritizableItem(1);
     _two           = new PrioritizableItem(2);
     _three         = new PrioritizableItem(3);
     _four          = new PrioritizableItem(4);
     _five          = new PrioritizableItem(5);
     _six           = new PrioritizableItem(6);
     _seven         = new PrioritizableItem(7);
 }
示例#3
0
        public void ShouldSortOnlyAfterChange()
        {
            IPriorityQueue <PrioritizableItem> priorityQueue = new PriorityQueue <PrioritizableItem>(new ComparePrioritizableItem());

            var one   = new PrioritizableItem(1);
            var two   = new PrioritizableItem(2);
            var three = new PrioritizableItem(3);
            var four  = new PrioritizableItem(4);

            priorityQueue.Push(three);
            priorityQueue.Push(two);
            priorityQueue.Push(four);
            priorityQueue.Push(one);

            priorityQueue.Pop().Value.ShouldBe(1);

            two.Value = 99;

            priorityQueue.Pop().Value.ShouldBe(3);
            priorityQueue.Pop().Value.ShouldBe(4);

            Assert.Inconclusive("Need to assert that sort was called only twice");
        }
示例#4
0
        public void ShouldMaintainOrderedQueue()
        {
            IPriorityQueue <PrioritizableItem> priorityQueue = new PriorityQueue <PrioritizableItem>(new ComparePrioritizableItem());

            var one   = new PrioritizableItem(1);
            var two   = new PrioritizableItem(2);
            var three = new PrioritizableItem(3);
            var four  = new PrioritizableItem(4);

            priorityQueue.Push(three);
            priorityQueue.Push(two);
            priorityQueue.Push(four);
            priorityQueue.Push(one);

            one.Value   = 8;
            two.Value   = 7;
            three.Value = 6;
            four.Value  = 5;

            priorityQueue.Pop().Value.ShouldBe(5);
            priorityQueue.Pop().Value.ShouldBe(6);
            priorityQueue.Pop().Value.ShouldBe(7);
            priorityQueue.Pop().Value.ShouldBe(8);
        }