Code Coverage: (bc: block coverage)
Factory Method:
[PexFactoryMethod(typeof(DataStructures.Queue<int>))]public static DataStructures.Queue<int> Create(int[] elems, int n){ PexAssume.IsTrue(elems != null && elems.Length < 11); PexAssume.TrueForAll(0, elems.Length, _i => elems[_i] > -11 && elems[_i] < 11); DataStructures.Queue<int> ret = new DataStructures.Queue<int>(elems.Length + 2);// DataStructure has big enough capacity for Commutativity Test for (int i = 0; i < elems.Length; i++) { ret.Enqueue(elems[i]); } return ret;}
Equal Method:
public string ToStringForInts(){ //This is adapted from the same method in stack.c string ret = "{";
var en = this.GetEnumerator(); while (en.MoveNext()) { ret += en.Current.ToString() + " "; }
return ret + "}";}
public class QueueEqualityComparer : EqualityComparer<Queue<int>>{ public override bool Equals(DataStructures.Queue<int> q1, DataStructures.Queue<int> q2) { if (q1 == null || q2 == null) return false; return q1.ToStringForInts().Equals(q2.ToStringForInts()); } public override int GetHashCode(DataStructures.Queue<int> q) { int hash = 0; int[] qArray = q.ToArray(); for (int i = 0; i < qArray.Length; i++) { hash += i * qArray[i]; } return hash; }}
Clone Method:
public virtual Object Clone(){ //a slight modification Queue<int> s = new Queue<int>(_size); s._head = _head; s._tail = _tail; s._size = _size; s._version = _version; Array.Copy(_array, 0, s._array, 0, _size); return s;}