public void DoRun <T>([PexAssumeNotNull] IEnumerable <T> original) { var xs = new List <T>(); original.Run(xs.Add); PexAssert.AreElementsEqual(original, xs, (a, b) => object.Equals(a, b)); }
public void SameEdges <TVertex, TEdge>([PexAssumeNotNull] IVertexAndEdgeListGraph <TVertex, TEdge> g) where TEdge : IEdge <TVertex> { var ag = GraphExtensions.ToArrayAdjacencyGraph(g); PexAssert.AreElementsEqual(g.Edges, ag.Edges, (l, r) => l.Equals(r)); }
public void Defer <T>([PexAssumeNotNull] IEnumerable <T> source) { var stateful = default(StatefulEnumerable <T>); var enumerable = EnumerableEx.Defer(() => { stateful = new StatefulEnumerable <T>(source); return(stateful); }); PexAssert.IsNull(stateful); var enumerator = enumerable.GetEnumerator(); PexAssert.IsNotNull(stateful); var sourceEnumerator = source.GetEnumerator(); var expectedState = new List <EnumerableState>() { EnumerableState.Fresh, EnumerableState.CreatingEnumerator, EnumerableState.CreatedEnumerator, EnumerableState.MovingNext }; if (!sourceEnumerator.MoveNext()) { PexAssert.IsFalse(enumerator.MoveNext()); expectedState.Add(EnumerableState.AtEnd); PexAssert.AreElementsEqual(expectedState, stateful.States, (a, b) => object.Equals(a, b)); } else { PexAssert.IsTrue(enumerator.MoveNext()); expectedState.Add(EnumerableState.MovedNext); PexAssert.AreElementsEqual(expectedState, stateful.States, (a, b) => object.Equals(a, b)); expectedState.Add(EnumerableState.GettingCurrent); PexAssert.AreEqual(sourceEnumerator.Current, enumerator.Current); expectedState.Add(EnumerableState.GotCurrent); PexAssert.AreElementsEqual(expectedState, stateful.States, (a, b) => object.Equals(a, b)); var count = 1; while (sourceEnumerator.MoveNext()) { count++; expectedState.Add(EnumerableState.MovingNext); PexAssert.IsTrue(enumerator.MoveNext()); expectedState.Add(EnumerableState.MovedNext); PexAssert.AreElementsEqual(expectedState, stateful.States, (a, b) => object.Equals(a, b)); expectedState.Add(EnumerableState.GettingCurrent); PexAssert.AreEqual(sourceEnumerator.Current, enumerator.Current); expectedState.Add(EnumerableState.GotCurrent); PexAssert.AreElementsEqual(expectedState, stateful.States, (a, b) => object.Equals(a, b)); PexAssert.AreEqual(count, stateful.EnumerationCount); } PexAssert.IsFalse(enumerator.MoveNext()); } }
public void MemoizeWithBufferSizeZero() { var source = Enumerable.Range(0, 10); var x = new List <int>(); var enumerable = source.Do(x.Add).Memoize(0); var firstEnumerator = enumerable.GetEnumerator(); for (var i = 0; i < 5; i++) { PexAssert.IsTrue(firstEnumerator.MoveNext()); PexAssert.AreEqual(i, firstEnumerator.Current); } var secondEnumerator = enumerable.GetEnumerator(); for (var i = 0; i < 5; i++) { PexAssert.IsTrue(secondEnumerator.MoveNext()); PexAssert.AreEqual(i + 5, secondEnumerator.Current); } for (var i = 0; i < 5; i++) { PexAssert.IsTrue(firstEnumerator.MoveNext()); PexAssert.AreEqual(i + 5, firstEnumerator.Current); } PexAssert.AreElementsEqual(x, Enumerable.Range(0, 10), (a, b) => object.Equals(a, b)); var thirdEnumerator = enumerable.GetEnumerator(); PexAssert.IsFalse(thirdEnumerator.MoveNext()); PexAssert.AreElementsEqual(x, source, (a, b) => object.Equals(a, b)); }
public void SameOutEdges <TVertex, TEdge>([PexAssumeNotNull] IVertexAndEdgeListGraph <TVertex, TEdge> g) where TEdge : IEdge <TVertex> { var ag = GraphExtensions.ToArrayAdjacencyGraph(g); foreach (var v in g.Vertices) { PexAssert.AreElementsEqual(g.OutEdges(v), ag.OutEdges(v), (l, r) => l.Equals(r)); } }
public void Do <T>([PexAssumeNotNull] IEnumerable <T> original) { var xs = new List <T>(); var ys = new List <T>(); var observable = original.Do(xs.Add); foreach (var y in observable) { ys.Add(y); } PexAssert.AreElementsEqual(original, xs, (a, b) => object.Equals(a, b)); PexAssert.AreElementsEqual(xs, ys, (a, b) => object.Equals(a, b)); }
public void Test_Enumeration <T>([PexAssumeNotNull] T[] array) { PexAssert.AreElementsEqual(array.ToLazyList(), array, (x, y) => EqualityComparer <T> .Default.Equals(x, y)); }