void InsertAllAndDeleteAll(ArrayPQBase <string> pq, string[] expected) { // default ctor, insert a bunch of values, then delete all Assert.True(pq.IsEmpty); var actual = Strings(pq).ToList(); Assert.Equal(expected, actual); }
void TestArrayMaxPQ(ArrayPQBase <string> pq, ArrayMaxPQProducer f, bool IsConsumer = true) { var maxes = f(pq).ToArray(); if (IsConsumer) { Assert.True(pq.IsEmpty); } Assert.Equal(new string[] { "this", "test", "is", "a" }, maxes); }
IEnumerable <string> ProduceArray(ArrayPQBase <string> pq) { pq.Insert("this"); pq.Insert("is"); pq.Insert("a"); pq.Insert("test"); while (!pq.IsEmpty) { yield return(pq.Delete()); } }
IEnumerable <string> EnumerateArrayMax(ArrayPQBase <string> pq) { pq.Insert("this"); pq.Insert("is"); pq.Insert("a"); pq.Insert("test"); foreach (string s in pq) { yield return(s); } }
IEnumerable <string> Strings(ArrayPQBase <string> pq) { foreach (var s in array) { pq.Insert(s); } while (!pq.IsEmpty) { yield return(pq.Delete()); } }
void ArrayPQHamlet(ArrayPQBase <string> pq, string[] expectedTops, string[] expectedLeftovers) { // arrange // var pq = new MinPQ<string>(); Assert.True(pq.IsEmpty); // act var tops = Hamlet(pq).ToList(); // assert Assert.False(pq.IsEmpty); Assert.Equal(2, pq.Size); // , String.Join("|", tops) Assert.Equal(expectedTops, tops); // , String.Join("|", leftovers) var leftovers = pq.ToArray(); Assert.Equal(expectedLeftovers, leftovers); Assert.Equal(expectedLeftovers.Union(expectedTops).OrderBy(x => x), tops.Union(leftovers).OrderBy(x => x)); }
void ConstructFromArrayAndIterate(ArrayPQBase <string> pq, string[] expected) { Assert.False(pq.IsEmpty); Assert.Equal(expected, pq.ToList()); }