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);
}