public void Select_ExceptionThrownFromMoveNextOfSourceIterator_ExceptionPropagatedToTheCaller() { IEnumerable <int> source = new ThrowsOnMoveNext(); Func <int, int> selector = i => i + 1; var result = source.Select(selector); var enumerator = result.GetEnumerator(); Assert.Throws <InvalidOperationException>(() => enumerator.MoveNext()); }
public void Select_ExceptionThrownFromMoveNextOfSourceIterator_IteratorCanBeUsedAfterExceptionIsCaught() { IEnumerable <int> source = new ThrowsOnMoveNext(); 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 Where_SourceThrowsOnMoveNext() { IEnumerable <int> source = new ThrowsOnMoveNext(); Func <int, bool> truePredicate = (value) => true; var enumerator = source.Where(truePredicate).GetEnumerator(); // Ensure the first MoveNext call throws an exception Assert.Throws <InvalidOperationException>(() => enumerator.MoveNext()); // Ensure Current is set to the default value of type T int currentValue = enumerator.Current; Assert.Equal(default(int), currentValue); // Ensure subsequent MoveNext calls succeed Assert.True(enumerator.MoveNext()); Assert.Equal(2, enumerator.Current); }
public void Where_SourceThrowsOnMoveNext() { IEnumerable<int> source = new ThrowsOnMoveNext(); Func<int, bool> truePredicate = (value) => true; var enumerator = source.Where(truePredicate).GetEnumerator(); // Ensure the first MoveNext call throws an exception Assert.Throws<InvalidOperationException>(() => enumerator.MoveNext()); // Ensure Current is set to the default value of type T int currentValue = enumerator.Current; Assert.Equal(default(int), currentValue); // Ensure subsequent MoveNext calls succeed Assert.True(enumerator.MoveNext()); Assert.Equal(2, enumerator.Current); }
public void Select_ExceptionThrownFromMoveNextOfSourceIterator_IteratorCanBeUsedAfterExceptionIsCaught() { IEnumerable<int> source = new ThrowsOnMoveNext(); 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_ExceptionThrownFromMoveNextOfSourceIterator_ExceptionPropagatedToTheCaller() { IEnumerable<int> source = new ThrowsOnMoveNext(); Func<int, int> selector = i => i + 1; var result = source.Select(selector); var enumerator = result.GetEnumerator(); Assert.Throws<InvalidOperationException>(() => enumerator.MoveNext()); }