public void FirstSequenceIsntAccessedBeforeFirstUse() { var first = new ThrowingEnumerable(); int[] second = { 5 }; // No exception yet... var query = new ConcatEnumerable <ThrowingEnumerable, ThrowingEnumerable.Enumerator, ArrayEnumerable <int>, ArrayEnumerable <int> .Enumerator, int>(first, second.AsRefEnumerable()); // Still no exception... using (var iterator = query.GetEnumerator()) { // Now it will go bang Assert.Throws <InvalidOperationException>(() => iterator.MoveNext()); } }
public void SecondSequenceIsntAccessedBeforeFirstUse() { int[] first = { 5 }; var second = new ThrowingEnumerable(); // No exception yet... var query = new ConcatEnumerable <ArrayEnumerable <int>, ArrayEnumerable <int> .Enumerator, ThrowingEnumerable, ThrowingEnumerable.Enumerator, int>(first.AsRefEnumerable(), second); // Still no exception... using (var iterator = query.GetEnumerator()) { // First element is fine... Assert.IsTrue(iterator.MoveNext()); Assert.AreEqual(5, iterator.Current); // Now it will go bang, as we move into the second sequence Assert.Throws <InvalidOperationException>(() => iterator.MoveNext()); } }