|
@@ -22,92 +22,6 @@ namespace Tests
|
|
|
Assert.ThrowsAsync<ArgumentNullException>(() => en.MoveNextAsync());
|
|
|
}
|
|
|
|
|
|
- [Fact]
|
|
|
- public void Select_Null()
|
|
|
- {
|
|
|
- AssertThrows<ArgumentNullException>(() => AsyncEnumerable.Select<int, int>(null, x => x));
|
|
|
- AssertThrows<ArgumentNullException>(() => AsyncEnumerable.Select<int, int>(null, (x, i) => x));
|
|
|
- AssertThrows<ArgumentNullException>(() => AsyncEnumerable.Select<int, int>(AsyncEnumerable.Return<int>(42), default(Func<int, int>)));
|
|
|
- AssertThrows<ArgumentNullException>(() => AsyncEnumerable.Select<int, int>(AsyncEnumerable.Return<int>(42), default(Func<int, int, int>)));
|
|
|
- }
|
|
|
-
|
|
|
- [Fact]
|
|
|
- public void Select1()
|
|
|
- {
|
|
|
- var xs = new[] { 0, 1, 2 }.ToAsyncEnumerable();
|
|
|
- var ys = xs.Select(x => (char)('a' + x));
|
|
|
-
|
|
|
- var e = ys.GetAsyncEnumerator();
|
|
|
- HasNext(e, 'a');
|
|
|
- HasNext(e, 'b');
|
|
|
- HasNext(e, 'c');
|
|
|
- NoNext(e);
|
|
|
- }
|
|
|
-
|
|
|
- [Fact]
|
|
|
- public void Select2()
|
|
|
- {
|
|
|
- var xs = new[] { 8, 5, 7 }.ToAsyncEnumerable();
|
|
|
- var ys = xs.Select((x, i) => (char)('a' + i));
|
|
|
-
|
|
|
- var e = ys.GetAsyncEnumerator();
|
|
|
- HasNext(e, 'a');
|
|
|
- HasNext(e, 'b');
|
|
|
- HasNext(e, 'c');
|
|
|
- NoNext(e);
|
|
|
- }
|
|
|
-
|
|
|
- [Fact]
|
|
|
- public void Select3()
|
|
|
- {
|
|
|
- var xs = new[] { 0, 1, 2 }.ToAsyncEnumerable();
|
|
|
- var ys = xs.Select(x => 1 / x);
|
|
|
-
|
|
|
- var e = ys.GetAsyncEnumerator();
|
|
|
- AssertThrows(() => e.MoveNextAsync().Wait(WaitTimeoutMs), (Exception ex_) => ((AggregateException)ex_).Flatten().InnerExceptions.Single() is DivideByZeroException);
|
|
|
- }
|
|
|
-
|
|
|
- [Fact]
|
|
|
- public void Select4()
|
|
|
- {
|
|
|
- var xs = new[] { 8, 5, 7 }.ToAsyncEnumerable();
|
|
|
- var ys = xs.Select((x, i) => 1 / i);
|
|
|
-
|
|
|
- var e = ys.GetAsyncEnumerator();
|
|
|
- AssertThrows(() => e.MoveNextAsync().Wait(WaitTimeoutMs), (Exception ex_) => ((AggregateException)ex_).Flatten().InnerExceptions.Single() is DivideByZeroException);
|
|
|
- }
|
|
|
-
|
|
|
- [Fact]
|
|
|
- public void Select5()
|
|
|
- {
|
|
|
- var xs = new[] { 0, 1, 2 }.ToAsyncEnumerable();
|
|
|
- var ys = xs.Select(i => i + 3).Select(x => (char)('a' + x));
|
|
|
-
|
|
|
- var e = ys.GetAsyncEnumerator();
|
|
|
- HasNext(e, 'd');
|
|
|
- HasNext(e, 'e');
|
|
|
- HasNext(e, 'f');
|
|
|
- NoNext(e);
|
|
|
- }
|
|
|
-
|
|
|
- [Fact]
|
|
|
- public async Task Select7()
|
|
|
- {
|
|
|
- var xs = new[] { 0, 1, 2 }.ToAsyncEnumerable();
|
|
|
- var ys = xs.Select(x => (char)('a' + x));
|
|
|
-
|
|
|
- await SequenceIdentity(ys);
|
|
|
- }
|
|
|
-
|
|
|
- [Fact]
|
|
|
- public async Task Select8()
|
|
|
- {
|
|
|
- var xs = new[] { 8, 5, 7 }.ToAsyncEnumerable();
|
|
|
- var ys = xs.Select((x, i) => (char)('a' + i));
|
|
|
-
|
|
|
- await SequenceIdentity(ys);
|
|
|
- }
|
|
|
-
|
|
|
[Fact]
|
|
|
public void SelectWhere2()
|
|
|
{
|
|
@@ -145,125 +59,6 @@ namespace Tests
|
|
|
NoNext(e);
|
|
|
}
|
|
|
|
|
|
- [Fact]
|
|
|
- public void Where_Null()
|
|
|
- {
|
|
|
- AssertThrows<ArgumentNullException>(() => AsyncEnumerable.Where<int>(null, x => true));
|
|
|
- AssertThrows<ArgumentNullException>(() => AsyncEnumerable.Where<int>(null, (x, i) => true));
|
|
|
- AssertThrows<ArgumentNullException>(() => AsyncEnumerable.Where<int>(AsyncEnumerable.Return<int>(42), default(Func<int, bool>)));
|
|
|
- AssertThrows<ArgumentNullException>(() => AsyncEnumerable.Where<int>(AsyncEnumerable.Return<int>(42), default(Func<int, int, bool>)));
|
|
|
- }
|
|
|
-
|
|
|
- [Fact]
|
|
|
- public void Where1()
|
|
|
- {
|
|
|
- var xs = new[] { 8, 5, 7, 4, 6, 9, 2, 1, 0 }.ToAsyncEnumerable();
|
|
|
- var ys = xs.Where(x => x % 2 == 0);
|
|
|
- var e = ys.GetAsyncEnumerator();
|
|
|
- HasNext(e, 8);
|
|
|
- HasNext(e, 4);
|
|
|
- HasNext(e, 6);
|
|
|
- HasNext(e, 2);
|
|
|
- HasNext(e, 0);
|
|
|
- NoNext(e);
|
|
|
- }
|
|
|
-
|
|
|
- [Fact]
|
|
|
- public void Where2()
|
|
|
- {
|
|
|
- var xs = new[] { 8, 5, 7, 4, 6, 9, 2, 1, 0 }.ToAsyncEnumerable();
|
|
|
- var ys = xs.Where((x, i) => i % 2 == 0);
|
|
|
-
|
|
|
- var e = ys.GetAsyncEnumerator();
|
|
|
- HasNext(e, 8);
|
|
|
- HasNext(e, 7);
|
|
|
- HasNext(e, 6);
|
|
|
- HasNext(e, 2);
|
|
|
- HasNext(e, 0);
|
|
|
- NoNext(e);
|
|
|
- }
|
|
|
-
|
|
|
- [Fact]
|
|
|
- public void Where3()
|
|
|
- {
|
|
|
- var xs = new[] { 8, 5, 7, 4, 6, 9, 2, 1, 0 }.ToAsyncEnumerable();
|
|
|
- var ex = new Exception("Bang");
|
|
|
- var ys = xs.Where(x => { if (x == 4) throw ex; return true; });
|
|
|
-
|
|
|
- var e = ys.GetAsyncEnumerator();
|
|
|
- HasNext(e, 8);
|
|
|
- HasNext(e, 5);
|
|
|
- HasNext(e, 7);
|
|
|
- AssertThrows(() => e.MoveNextAsync().Wait(WaitTimeoutMs), (Exception ex_) => ((AggregateException)ex_).Flatten().InnerExceptions.Single() == ex);
|
|
|
- }
|
|
|
-
|
|
|
- [Fact]
|
|
|
- public void Where4()
|
|
|
- {
|
|
|
- var xs = new[] { 8, 5, 7, 4, 6, 9, 2, 1, 0 }.ToAsyncEnumerable();
|
|
|
- var ex = new Exception("Bang");
|
|
|
- var ys = xs.Where((x, i) => { if (i == 3) throw ex; return true; });
|
|
|
-
|
|
|
- var e = ys.GetAsyncEnumerator();
|
|
|
- HasNext(e, 8);
|
|
|
- HasNext(e, 5);
|
|
|
- HasNext(e, 7);
|
|
|
- AssertThrows(() => e.MoveNextAsync().Wait(WaitTimeoutMs), (Exception ex_) => ((AggregateException)ex_).Flatten().InnerExceptions.Single() == ex);
|
|
|
- }
|
|
|
-
|
|
|
- [Fact]
|
|
|
- public void Where5()
|
|
|
- {
|
|
|
- var ex = new Exception("Bang");
|
|
|
- var xs = AsyncEnumerable.Throw<int>(ex);
|
|
|
- var ys = xs.Where(x => true);
|
|
|
-
|
|
|
- var e = ys.GetAsyncEnumerator();
|
|
|
- AssertThrows(() => e.MoveNextAsync().Wait(WaitTimeoutMs), (Exception ex_) => ((AggregateException)ex_).Flatten().InnerExceptions.Single() == ex);
|
|
|
- }
|
|
|
-
|
|
|
- [Fact]
|
|
|
- public void Where6()
|
|
|
- {
|
|
|
- var ex = new Exception("Bang");
|
|
|
- var xs = AsyncEnumerable.Throw<int>(ex);
|
|
|
-
|
|
|
- var ys = xs.Where((x, i) => true);
|
|
|
- var e = ys.GetAsyncEnumerator();
|
|
|
- AssertThrows(() => e.MoveNextAsync().Wait(WaitTimeoutMs), (Exception ex_) => ((AggregateException)ex_).Flatten().InnerExceptions.Single() == ex);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- [Fact]
|
|
|
- public void Where7()
|
|
|
- {
|
|
|
- var xs = new[] { 8, 5, 7, 4, 6, 9, 2, 1, 0 }.ToAsyncEnumerable();
|
|
|
- var ys = xs.Where(x => x % 2 == 0).Where(x => x > 5);
|
|
|
- var e = ys.GetAsyncEnumerator();
|
|
|
- HasNext(e, 8);
|
|
|
- HasNext(e, 6);
|
|
|
- NoNext(e);
|
|
|
- }
|
|
|
-
|
|
|
- [Fact]
|
|
|
- public async Task Where8()
|
|
|
- {
|
|
|
- var xs = new[] { 8, 5, 7, 4, 6, 9, 2, 1, 0 }.ToAsyncEnumerable();
|
|
|
- var ys = xs.Where(x => x % 2 == 0);
|
|
|
-
|
|
|
- await SequenceIdentity(ys);
|
|
|
- }
|
|
|
-
|
|
|
- [Fact]
|
|
|
- public async Task Where9()
|
|
|
- {
|
|
|
- var xs = new[] { 8, 5, 7, 4, 6, 9, 2, 1, 0 }.ToAsyncEnumerable();
|
|
|
- var ys = xs.Where((x, i) => i % 2 == 0);
|
|
|
-
|
|
|
- await SequenceIdentity(ys);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
[Fact]
|
|
|
public void SelectMany_Null()
|
|
|
{
|