public async Task Should_provide_back_a_filtered_list() { var source = Enumerable.Range(0, 15); var cursor = new ListBasedAsyncCursor <int>(source, 5); var subject = new BatchTransformingAsyncCursor <int, int>(cursor, x => x.Where(y => y % 2 == 0)); var result = await subject.MoveNextAsync(CancellationToken.None); result.Should().BeTrue(); var batch = subject.Current.ToList(); batch.Should().Equal(0, 2, 4); result = await subject.MoveNextAsync(CancellationToken.None); result.Should().BeTrue(); batch = subject.Current.ToList(); batch.Should().Equal(6, 8); result = await subject.MoveNextAsync(CancellationToken.None); result.Should().BeTrue(); batch = subject.Current.ToList(); batch.Should().Equal(10, 12, 14); result = await subject.MoveNextAsync(CancellationToken.None); result.Should().BeFalse(); }
public async Task Should_skip_empty_batches() { var source = Enumerable.Range(0, 15); var cursor = new ListBasedAsyncCursor <int>(source, 5); // skip the second batch var subject = new BatchTransformingAsyncCursor <int, int>(cursor, x => x.Where(y => y < 5 || y > 9)); var result = await subject.MoveNextAsync(CancellationToken.None); result.Should().BeTrue(); var batch = subject.Current.ToList(); batch.Should().Equal(0, 1, 2, 3, 4); result = await subject.MoveNextAsync(CancellationToken.None); result.Should().BeTrue(); batch = subject.Current.ToList(); batch.Should().Equal(10, 11, 12, 13, 14); result = await subject.MoveNextAsync(CancellationToken.None); result.Should().BeFalse(); }
public void Should_skip_empty_batches( [Values(false, true)] bool async) { var source = Enumerable.Range(0, 15); var cursor = new ListBasedAsyncCursor <int>(source, 5); // skip the second batch var subject = new BatchTransformingAsyncCursor <int, int>(cursor, x => x.Where(y => y < 5 || y > 9)); var result = MoveNext(subject, async); result.Should().BeTrue(); var batch = subject.Current.ToList(); batch.Should().Equal(0, 1, 2, 3, 4); result = MoveNext(subject, async); result.Should().BeTrue(); batch = subject.Current.ToList(); batch.Should().Equal(10, 11, 12, 13, 14); result = MoveNext(subject, async); result.Should().BeFalse(); }
public async Task Should_provide_back_all_results() { var source = Enumerable.Range(0, 15); var cursor = new ListBasedAsyncCursor <int>(source, 5); var subject = new BatchTransformingAsyncCursor <int, string>(cursor, x => x.Select(y => y.ToString())); var result = await subject.MoveNextAsync(CancellationToken.None); result.Should().BeTrue(); var batch = subject.Current.ToList(); batch.Should().Equal("0", "1", "2", "3", "4"); result = await subject.MoveNextAsync(CancellationToken.None); result.Should().BeTrue(); batch = subject.Current.ToList(); batch.Should().Equal("5", "6", "7", "8", "9"); result = await subject.MoveNextAsync(CancellationToken.None); result.Should().BeTrue(); batch = subject.Current.ToList(); batch.Should().Equal("10", "11", "12", "13", "14"); result = await subject.MoveNextAsync(CancellationToken.None); result.Should().BeFalse(); }
public void Should_provide_back_a_filtered_list( [Values(false, true)] bool async) { var source = Enumerable.Range(0, 15); var cursor = new ListBasedAsyncCursor <int>(source, 5); var subject = new BatchTransformingAsyncCursor <int, int>(cursor, x => x.Where(y => y % 2 == 0)); var result = MoveNext(subject, async); result.Should().BeTrue(); var batch = subject.Current.ToList(); batch.Should().Equal(0, 2, 4); result = MoveNext(subject, async); result.Should().BeTrue(); batch = subject.Current.ToList(); batch.Should().Equal(6, 8); result = MoveNext(subject, async); result.Should().BeTrue(); batch = subject.Current.ToList(); batch.Should().Equal(10, 12, 14); result = MoveNext(subject, async); result.Should().BeFalse(); }
public void Should_provide_back_all_results( [Values(false, true)] bool async) { var source = Enumerable.Range(0, 15); var cursor = new ListBasedAsyncCursor <int>(source, 5); var subject = new BatchTransformingAsyncCursor <int, string>(cursor, x => x.Select(y => y.ToString())); var result = MoveNext(subject, async); result.Should().BeTrue(); var batch = subject.Current.ToList(); batch.Should().Equal("0", "1", "2", "3", "4"); result = MoveNext(subject, async); result.Should().BeTrue(); batch = subject.Current.ToList(); batch.Should().Equal("5", "6", "7", "8", "9"); result = MoveNext(subject, async); result.Should().BeTrue(); batch = subject.Current.ToList(); batch.Should().Equal("10", "11", "12", "13", "14"); result = MoveNext(subject, async); result.Should().BeFalse(); }
public async Task Should_return_false_when_all_remaining_batches_are_empty() { var source = Enumerable.Range(0, 15); var cursor = new ListBasedAsyncCursor <int>(source, 5); var subject = new BatchTransformingAsyncCursor <int, int>(cursor, x => x.Where(y => y < 8)); var result = await subject.MoveNextAsync(CancellationToken.None); result.Should().BeTrue(); var batch = subject.Current.ToList(); batch.Should().Equal(0, 1, 2, 3, 4); result = await subject.MoveNextAsync(CancellationToken.None); result.Should().BeTrue(); batch = subject.Current.ToList(); batch.Should().Equal(5, 6, 7); result = await subject.MoveNextAsync(CancellationToken.None); result.Should().BeFalse(); }
public void Should_return_false_when_all_remaining_batches_are_empty( [Values(false, true)] bool async) { var source = Enumerable.Range(0, 15); var cursor = new ListBasedAsyncCursor <int>(source, 5); var subject = new BatchTransformingAsyncCursor <int, int>(cursor, x => x.Where(y => y < 8)); var result = MoveNext(subject, async); result.Should().BeTrue(); var batch = subject.Current.ToList(); batch.Should().Equal(0, 1, 2, 3, 4); result = MoveNext(subject, async); result.Should().BeTrue(); batch = subject.Current.ToList(); batch.Should().Equal(5, 6, 7); result = MoveNext(subject, async); result.Should().BeFalse(); }
public static IAsyncCursor <TIn> _wrapped <TIn, TOut>(this BatchTransformingAsyncCursor <TIn, TOut> obj) => (IAsyncCursor <TIn>)Reflector.GetFieldValue(obj, nameof(_wrapped));