예제 #1
0
        public void Test_Enqueue_Dequeue()
        {
            var heap = BinaryHeap.Create <int>();

            heap.Count.Is(0);
            Assert.ThrowsAny <Exception>(() => heap.Dequeue());
            Assert.ThrowsAny <Exception>(() => heap.Peek());

            heap.Enqueue(1);
            heap.Count.Is(1);
            heap.Peek().Is(1);

            // Test to add a value larger than min.
            {
                heap.Enqueue(2);
                heap.Count.Is(2);
                heap.Peek().Is(1);

                var x = heap.Dequeue();
                heap.Count.Is(1);
                x.Is(1);
            }

            // Test to add a value less than min.
            {
                heap.Enqueue(0);
                heap.Count.Is(2);
                heap.Peek().Is(0);

                var x = heap.Dequeue();
                heap.Count.Is(1);
                x.Is(0);
            }
        }
예제 #2
0
        public void Test_GetEnumerator()
        {
            var n = 100;

            var heap = BinaryHeap.Create <int>();
            var xs   = UnorderedSeq(n).ToArray();

            foreach (var x in xs)
            {
                heap.Enqueue(x);
            }

            var actual = heap.OrderBy(x => x);

            Array.Sort(xs);
            actual.IsSeq(xs);
        }