Beispiel #1
0
        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();
        }
Beispiel #2
0
        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();
        }
Beispiel #3
0
        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();
        }
Beispiel #4
0
        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();
        }
Beispiel #5
0
        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();
        }
Beispiel #6
0
        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();
        }
Beispiel #7
0
        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();
        }
Beispiel #8
0
        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();
        }