コード例 #1
0
 public void InsertManyAndEnumerateUntyped <TPriority, TValue>(
     [PexAssumeUnderTest] BinaryHeap <TPriority, TValue> target,
     [PexAssumeNotNull] KeyValuePair <TPriority, TValue>[] kvs)
 {
     foreach (var kv in kvs)
     {
         target.Add(kv.Key, kv.Value);
     }
     foreach (KeyValuePair <TPriority, TValue> kv in (IEnumerable)target)
     {
         ;
     }
 }
コード例 #2
0
        public void InsertAndEnumerate <TPriority, TValue>(
            [PexAssumeUnderTest] BinaryHeap <TPriority, TValue> target,
            [PexAssumeNotNull] KeyValuePair <TPriority, TValue>[] kvs)
        {
            var dic = new Dictionary <TPriority, TValue>();

            foreach (var kv in kvs)
            {
                target.Add(kv.Key, kv.Value);
                dic[kv.Key] = kv.Value;
            }
            PexAssert.TrueForAll(target, kv => dic.ContainsKey(kv.Key));
        }
コード例 #3
0
 public void CurrentAfterMoveNextFinished <TPriority, TValue>(
     [PexAssumeUnderTest] BinaryHeap <TPriority, TValue> target,
     KeyValuePair <TPriority, TValue> kv)
 {
     target.Add(kv.Key, kv.Value);
     PexAssert.Throws <InvalidOperationException>(delegate
     {
         var enumerator = target.GetEnumerator();
         while (enumerator.MoveNext())
         {
             ;
         }
         var current = enumerator.Current;
     });
 }
コード例 #4
0
        public void InsertAndRemoveAt <TPriority, TValue>(
            [PexAssumeUnderTest] BinaryHeap <TPriority, TValue> target,
            [PexAssumeNotNull] KeyValuePair <TPriority, TValue>[] kvs,
            int removeAtIndex)
        {
            foreach (var kv in kvs)
            {
                target.Add(kv.Key, kv.Value);
            }
            var count   = target.Count;
            var removed = target.RemoveAt(removeAtIndex);

            Assert.AreEqual(count - 1, target.Count);
            AssertInvariant <TPriority, TValue>(target);
        }
コード例 #5
0
        private void InsertAndRemoveAt <TPriority, TValue>(
            BinaryHeap <TPriority, TValue> target,
            KeyValuePair <TPriority, TValue>[] kvs,
            int removeAtIndex)
        {
            foreach (var kv in kvs)
            {
                target.Add(kv.Key, kv.Value);
            }
            var count   = target.Count;
            var removed = target.RemoveAt(removeAtIndex);

            Assert.Equal(count - 1, target.Count);
            AssertInvariant <TPriority, TValue>(target);
        }
コード例 #6
0
        public void InsertAndRemoveAtAll <TPriority, TValue>(
            [PexAssumeUnderTest] BinaryHeap <TPriority, TValue> target,
            [PexAssumeNotNull] KeyValuePair <TPriority, TValue>[] kvs)
        {
            foreach (var kv in kvs)
            {
                target.Add(kv.Key, kv.Value);
            }
            var call = PexChoose.FromCall(this);

            for (int i = target.Count - 1; i > -1; ++i)
            {
                target.RemoveAt(call.ValueFromRange(i.ToString(), 0, target.Count - 1));
                AssertInvariant <TPriority, TValue>(target);
            }
        }
コード例 #7
0
 public void Operations <TPriority, TValue>(
     [PexAssumeUnderTest] BinaryHeap <TPriority, TValue> target,
     [PexAssumeNotNull] KeyValuePair <bool, TPriority>[] values)
 {
     foreach (var value in values)
     {
         if (value.Key)
         {
             target.Add(value.Value, default(TValue));
         }
         else
         {
             var min = target.RemoveMinimum();
         }
         AssertInvariant <TPriority, TValue>(target);
     }
 }
コード例 #8
0
        public PriorityQueue(
            IDictionary <TVertex, TDistance> distances,
            Comparison <TDistance> distanceComparison
            )
        {
            if (distances == null)
            {
                throw new ArgumentNullException("distances");
            }
            if (distanceComparison == null)
            {
                throw new ArgumentNullException("distanceComparison");
            }

            this.distances = distances;
            this.heap      = new BinaryHeap <TDistance, TVertex>(distanceComparison);
        }
コード例 #9
0
 private void Operations <TPriority, TValue>(
     BinaryHeap <TPriority, TValue> target,
     KeyValuePair <bool, TPriority>[] values)
 {
     foreach (var value in values)
     {
         if (value.Key)
         {
             target.Add(value.Value, default(TValue));
         }
         else
         {
             var min = target.RemoveMinimum();
         }
         AssertInvariant <TPriority, TValue>(target);
     }
 }
コード例 #10
0
 void IDisposable.Dispose()
 {
     this.owner = null;
     this.items = null;
 }
コード例 #11
0
 public void ConstructorWithNullComparison()
 {
     var target = new BinaryHeap <int, int>(0, null);
 }
コード例 #12
0
        public void Constructor()
        {
            var target = new BinaryHeap <int, int>();

            AssertInvariant <int, int>(target);
        }
コード例 #13
0
        public static BinaryHeap <int, int> Create(int capacity)
        {
            var heap = new BinaryHeap <int, int>(capacity, (i, j) => i.CompareTo(j));

            return(heap);
        }
コード例 #14
0
        public void DefaultConstructorTest()
        {
            var target = new BinaryHeap <int, int>();

            AssertInvariant <int, int>(target);
        }