Code Coverage: (bc: block coverage)
Factory Method:
[PexFactoryMethod(typeof(Tuple<BinaryHeap<int, int>, BinaryHeap<int, int>>))]public static Tuple<BinaryHeap<int, int>, BinaryHeap<int, int>> CreateBinaryHeapKeyValPair([PexAssumeNotNull]KeyValuePair<int, int>[] pairs, int capacity){ PexAssume.IsTrue(capacity < 11 && capacity > 0); // PexAssume.TrueForAll(0, pairs.Length, _i => pairs[_i].Key > -11 && pairs[_i].Key < 11); var bh1 = new BinaryHeap<int, int>(capacity, Comparer<int>.Default.Compare); var bh2 = new BinaryHeap<int, int>(capacity, Comparer<int>.Default.Compare); foreach (var pair in pairs) { bh1.Add(pair.Key, pair.Value); bh2.Add(pair.Key, pair.Value); } var ret = new Tuple<BinaryHeap<int, int>, BinaryHeap<int, int>>(bh1, bh2); return ret;}
Equal Method:
public class BinaryHeapEqualityComparer : EqualityComparer<BinaryHeap<int ,int>>{ public override bool Equals(BinaryHeap<int, int> bh1, BinaryHeap<int, int> bh2) { if (bh1 == null && bh2 == null) { return true; } else if (bh1 == null || bh2 == null) { return false; } else { if (bh1.Count != bh2.Count) { return false; } if (bh1.Capacity != bh2.Capacity) { return false; } } return bh1.ToStringForInts().Equals(bh2.ToStringForInts()); } public override int GetHashCode(BinaryHeap<int, int> bh) { int hash = 0; foreach (KeyValuePair<int, int> pair in bh) { hash += pair.Key * pair.Value; } return hash; }}