public void ReportsCorrectItemCount()
        {
            BinaryHeap <TestType> heap = new BinaryHeap <TestType>();

            Assert.Equal(0, heap.Count);

            heap.Push(new TestType(123));
            heap.Push(new TestType(124));

            Assert.Equal(2, heap.Count);

            Assert.Equal(123, heap.Pop().Priority);

            Assert.Equal(1, heap.Count);

            Assert.Equal(124, heap.Pop().Priority);

            Assert.Equal(0, heap.Count);

            heap.Push(new TestType(-1));

            Assert.Equal(1, heap.Count);

            Assert.Equal(-1, heap.Pop().Priority);

            Assert.Equal(0, heap.Count);
        }
        public void ReturnsItemsInCorrectOrder()
        {
            BinaryHeap <TestType> heap = new BinaryHeap <TestType>();

            heap.Push(new TestType(123));
            heap.Push(new TestType(124));
            heap.Push(new TestType(120));
            heap.Push(new TestType(95));

            Assert.Equal(95, heap.Pop().Priority);

            heap.Push(new TestType(-1));

            Assert.Equal(-1, heap.Pop().Priority);

            Assert.Equal(120, heap.Pop().Priority);
            Assert.Equal(123, heap.Pop().Priority);
            Assert.Equal(124, heap.Pop().Priority);
        }