public static void Prepend1() { IEnumerable <int> source = new ThrowingEnumerable <int>(); var q = Assert.DoesNotThrow(() => source.Prepend(1)); // We bypass the first iteration (we just prepended 1 to the sequence, // iterating won't throw immediately). Assert.ThrowsAfter(q, 1); }
public static void Generate01() { Func <int, int> generator = _ => throw new InvalidOperationException(); Func <int, bool> predicate = _ => throw new InvalidOperationException(); var q1 = Assert.DoesNotThrow(() => Sequence.Generate(0, generator)); Assert.ThrowsAfter(q1, 1); var q2 = Assert.DoesNotThrow(() => Sequence.Generate(0, generator, _ => true)); Assert.ThrowsAfter(q2, 1); var q3 = Assert.DoesNotThrow(() => Sequence.Generate(0, i => i + 1, predicate)); Assert.ThrowsOnNext(q3); }
public static void Unfold1b() { Func <int, int> generator = _ => throw new InvalidOperationException(); Func <int, int> resultSelector = _ => throw new InvalidOperationException(); Func <int, bool> predicate = _ => throw new InvalidOperationException(); var q1 = Assert.DoesNotThrow(() => Sequence.Unfold(0, generator, i => i + 1)); Assert.ThrowsAfter(q1, 1); var q2 = Assert.DoesNotThrow(() => Sequence.Unfold(0, i => i + 1, resultSelector)); Assert.ThrowsOnNext(q2); var q3 = Assert.DoesNotThrow(() => Sequence.Unfold(0, generator, i => i + 1, _ => true)); Assert.ThrowsAfter(q3, 1); var q4 = Assert.DoesNotThrow(() => Sequence.Unfold(0, i => i + 1, resultSelector, _ => true)); Assert.ThrowsOnNext(q4); var q5 = Assert.DoesNotThrow(() => Sequence.Unfold(0, i => i + 1, i => i + 1, predicate)); Assert.ThrowsOnNext(q5); }