public void Select_ExceptionThrownFromSelector_ExceptionPropagatedToTheCaller()
{
int[] source = new[] { 1, 2, 3, 4, 5 };
Func<int, int> selector = i => { throw new InvalidOperationException(); };
var result = source.Select(selector);
var enumerator = result.GetEnumerator();
Assert.Throws<InvalidOperationException>(() => enumerator.MoveNext());
}