public void Select_ExceptionThrownFromCurrentOfSourceIterator_ExceptionPropagatedToTheCaller() { IEnumerable <int> source = new ThrowsOnCurrent(); Func <int, int> selector = i => i + 1; var result = source.Select(selector); var enumerator = result.GetEnumerator(); Assert.Throws <InvalidOperationException>(() => enumerator.MoveNext()); }
public void Select_ExceptionThrownFromCurrentOfSourceIterator_IteratorCanBeUsedAfterExceptionIsCaught() { IEnumerable <int> source = new ThrowsOnCurrent(); Func <int, int> selector = i => i + 1; var result = source.Select(selector); var enumerator = result.GetEnumerator(); Assert.Throws <InvalidOperationException>(() => enumerator.MoveNext()); enumerator.MoveNext(); Assert.Equal(3 /* 2 + 1 */, enumerator.Current); }
public void Select_ExceptionThrownFromCurrentOfSourceIterator_IteratorCanBeUsedAfterExceptionIsCaught() { IEnumerable<int> source = new ThrowsOnCurrent(); Func<int, int> selector = i => i + 1; var result = source.Select(selector); var enumerator = result.GetEnumerator(); Assert.Throws<InvalidOperationException>(() => enumerator.MoveNext()); enumerator.MoveNext(); Assert.Equal(3 /* 2 + 1 */, enumerator.Current); }
public void Select_ExceptionThrownFromCurrentOfSourceIterator_ExceptionPropagatedToTheCaller() { IEnumerable<int> source = new ThrowsOnCurrent(); Func<int, int> selector = i => i + 1; var result = source.Select(selector); var enumerator = result.GetEnumerator(); Assert.Throws<InvalidOperationException>(() => enumerator.MoveNext()); }