public void Select_SourceIsList_Last()
{
var source = new List<int> { 1, 2, 3, 4 }.Select(i => i * 2);
Assert.Equal(8, source.Last());
Assert.Equal(8, source.LastOrDefault());
Assert.Equal(6, source.Take(3).Last());
Assert.Equal(6, source.Take(3).LastOrDefault());
var empty = new List<int>().Select(i => i * 2);
Assert.Throws<InvalidOperationException>(() => empty.Last());
Assert.Equal(0, empty.LastOrDefault());
Assert.Throws<InvalidOperationException>(() => empty.Skip(1).Last());
Assert.Equal(0, empty.Skip(1).LastOrDefault());
}