public void Select_ExceptionThrownFromGetEnumeratorOnSource_ExceptionPropagatedToTheCaller() { IEnumerable <int> source = new ThrowsOnGetEnumerator(); Func <int, int> selector = i => i + 1; var result = source.Select(selector); var enumerator = result.GetEnumerator(); Assert.Throws <InvalidOperationException>(() => enumerator.MoveNext()); }
public void Select_ExceptionThrownFromGetEnumeratorOnSource_CurrentIsSetToDefaultOfItemTypeAndIteratorCanBeUsedAfterExceptionIsCaught() { IEnumerable<int> source = new ThrowsOnGetEnumerator(); Func<int, string> selector = i => i.ToString(); var result = source.Select(selector); var enumerator = result.GetEnumerator(); Assert.Throws<InvalidOperationException>(() => enumerator.MoveNext()); string currentValue = enumerator.Current; Assert.Equal(default(string), currentValue); Assert.True(enumerator.MoveNext()); Assert.Equal("1", enumerator.Current); }
public void Where_SourceThrowsOnGetEnumerator() { IEnumerable <int> source = new ThrowsOnGetEnumerator(); 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(1, enumerator.Current); }
public void Where_SourceThrowsOnGetEnumerator() { IEnumerable<int> source = new ThrowsOnGetEnumerator(); 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(1, enumerator.Current); }
public void Select_ExceptionThrownFromGetEnumeratorOnSource_ExceptionPropagatedToTheCaller() { IEnumerable<int> source = new ThrowsOnGetEnumerator(); Func<int, int> selector = i => i + 1; var result = source.Select(selector); var enumerator = result.GetEnumerator(); Assert.Throws<InvalidOperationException>(() => enumerator.MoveNext()); }