|
@@ -13,56 +13,84 @@ namespace Tests
|
|
|
public class ElementAtOrDefault : AsyncEnumerableTests
|
|
|
{
|
|
|
[Fact]
|
|
|
- public async Task ElementAtOrDefault_Null()
|
|
|
+ public async Task ElementAtOrDefaultAsync_Null()
|
|
|
{
|
|
|
await Assert.ThrowsAsync<ArgumentNullException>(() => AsyncEnumerable.ElementAtOrDefaultAsync<int>(default, 0).AsTask());
|
|
|
await Assert.ThrowsAsync<ArgumentNullException>(() => AsyncEnumerable.ElementAtOrDefaultAsync<int>(default, 0, CancellationToken.None).AsTask());
|
|
|
}
|
|
|
|
|
|
[Fact]
|
|
|
- public async Task ElementAtOrDefault1Async()
|
|
|
+ public async Task ElementAtOrDefaultAsync_Empty_Index0()
|
|
|
{
|
|
|
var res = AsyncEnumerable.Empty<int>().ElementAtOrDefaultAsync(0);
|
|
|
Assert.Equal(0, await res);
|
|
|
}
|
|
|
|
|
|
[Fact]
|
|
|
- public async Task ElementAtOrDefault2Async()
|
|
|
+ public async Task ElementAtOrDefaultAsync_Single_Index0()
|
|
|
{
|
|
|
var res = Return42.ElementAtOrDefaultAsync(0);
|
|
|
Assert.Equal(42, await res);
|
|
|
}
|
|
|
|
|
|
[Fact]
|
|
|
- public async Task ElementAtOrDefault3Async()
|
|
|
+ public async Task ElementAtOrDefaultAsync_Single_OutOfRange()
|
|
|
{
|
|
|
var res = Return42.ElementAtOrDefaultAsync(1);
|
|
|
Assert.Equal(0, await res);
|
|
|
}
|
|
|
|
|
|
[Fact]
|
|
|
- public async Task ElementAtOrDefault4Async()
|
|
|
+ public async Task ElementAtOrDefaultAsync_Single_NegativeIndex()
|
|
|
+ {
|
|
|
+ var res = Return42.ElementAtOrDefaultAsync(-1);
|
|
|
+ Assert.Equal(0, await res);
|
|
|
+ }
|
|
|
+
|
|
|
+ [Fact]
|
|
|
+ public async Task ElementAtOrDefaultAsync_Many_IList_InRange()
|
|
|
{
|
|
|
var res = new[] { 1, 42, 3 }.ToAsyncEnumerable().ElementAtOrDefaultAsync(1);
|
|
|
Assert.Equal(42, await res);
|
|
|
}
|
|
|
|
|
|
[Fact]
|
|
|
- public async Task ElementAtOrDefault5Async()
|
|
|
+ public async Task ElementAtOrDefaultAsync_Many_IList_OutOfRange()
|
|
|
{
|
|
|
var res = new[] { 1, 42, 3 }.ToAsyncEnumerable().ElementAtOrDefaultAsync(7);
|
|
|
Assert.Equal(0, await res);
|
|
|
}
|
|
|
|
|
|
[Fact]
|
|
|
- public async Task ElementAtOrDefault6Async()
|
|
|
+ public async Task ElementAtOrDefaultAsync_Many_IPartition_InRange()
|
|
|
{
|
|
|
- var res = Return42.ElementAtOrDefaultAsync(-1);
|
|
|
+ var res = new[] { -1, 1, 42, 3 }.ToAsyncEnumerable().Skip(1).ElementAtOrDefaultAsync(1);
|
|
|
+ Assert.Equal(42, await res);
|
|
|
+ }
|
|
|
+
|
|
|
+ [Fact]
|
|
|
+ public async Task ElementAtOrDefaultAsync_Many_IPartition_OutOfRange()
|
|
|
+ {
|
|
|
+ var res = new[] { -1, 1, 42, 3 }.ToAsyncEnumerable().Skip(1).ElementAtOrDefaultAsync(7);
|
|
|
+ Assert.Equal(0, await res);
|
|
|
+ }
|
|
|
+
|
|
|
+ [Fact]
|
|
|
+ public async Task ElementAtOrDefaultAsync_Many_InRange()
|
|
|
+ {
|
|
|
+ var res = new[] { 1, 42, 3 }.ToAsyncEnumerable().Select(x => x).ElementAtOrDefaultAsync(1);
|
|
|
+ Assert.Equal(42, await res);
|
|
|
+ }
|
|
|
+
|
|
|
+ [Fact]
|
|
|
+ public async Task ElementAtOrDefaultAsync_Many_OutOfRange()
|
|
|
+ {
|
|
|
+ var res = new[] { 1, 42, 3 }.ToAsyncEnumerable().Select(x => x).ElementAtOrDefaultAsync(7);
|
|
|
Assert.Equal(0, await res);
|
|
|
}
|
|
|
|
|
|
[Fact]
|
|
|
- public async Task ElementAtOrDefault7Async()
|
|
|
+ public async Task ElementAtOrDefaultAsync_Throws_Source()
|
|
|
{
|
|
|
var ex = new Exception("Bang!");
|
|
|
var res = Throw<int>(ex).ElementAtOrDefaultAsync(15);
|