public void OneIteration( [ValueSource("CountRange")] int count) { var source = new SinglePassSequence<int>(Enumerable.Range(1, count)); var expected = Enumerable.Range(1, count); Assert.That(source.SequenceEqual(expected)); }
public void MultipleIterations( [Random(Int32.MinValue, Int32.MaxValue, 1)] int seed , [Range(5, 20, 15)] int iterators , [Range(20, 2000, 1980)] int range) { Random rnd = new Random(seed); var source = new SinglePassSequence<int>(Enumerable.Range(1, range)); var enumerators = Enumerable.Range(1, iterators).Select(x => source.GetEnumerator()).ToList(); var resultBuffers = Enumerable.Range(1, iterators).Select(x => new List<int>(range)).ToList(); while (enumerators.Count > 0) { int e = rnd.Next(enumerators.Count); if (enumerators[e].MoveNext()) { resultBuffers[e].Add(enumerators[e].Current); } else { Assert.That(Enumerable.Range(1, range).SequenceEqual(resultBuffers[e])); resultBuffers.RemoveAt(e); enumerators[e].Dispose(); enumerators.RemoveAt(e); } } }
public void Example8() { var source = new SinglePassSequence<int>(Enumerable.Range(1, 100)); var result = source .Zip(source.Skip(1), (l, r) => Tuple.Create(l, r)) .Zip(source.Skip(2), (l, r) => Tuple.Create(l.Item1, l.Item2, r)) .Skip(10) .Take(2); var expected = new List<Tuple<int, int, int>> { Tuple.Create(11, 12, 13) , Tuple.Create(12, 13, 14) }; Assert.That(result.SequenceEqual(expected)); }