public void FirstAsync_should_throw_an_exception_when_no_result_exists_delayed_to_the_second_batch()
        {
            var task = SetupNoResultInTwoBatchesAsync();

            Action act = () => AsyncCursorHelper.FirstAsync(task, CancellationToken.None).GetAwaiter().GetResult();

            act.ShouldThrow <Exception>();
        }
        public void FirstAsync_should_throw_an_exception_when_no_results_exist()
        {
            var task = SetupNoResultIn1BatchAsync();

            Action act = () => AsyncCursorHelper.FirstAsync(task, CancellationToken.None).GetAwaiter().GetResult();

            act.ShouldThrow <Exception>();
        }
        public void FirstAsync_should_return_first_result_when_one_exists_but_is_in_the_second_batch()
        {
            var task = SetupResultInSecondBatchAsync();

            var result = AsyncCursorHelper.FirstAsync(task, CancellationToken.None).Result;

            result.Should().Be(1);
        }
        public void AnyAsync_should_return_false_when_no_result_exists_delayed_to_the_second_batch()
        {
            var task = SetupNoResultInTwoBatchesAsync();

            var result = AsyncCursorHelper.AnyAsync(task, CancellationToken.None).Result;

            result.Should().Be(false);
        }
        public void FirstAsync_should_return_first_result_when_one_exists()
        {
            var task = SetupResultInFirstBatchAsync();

            var result = AsyncCursorHelper.FirstAsync(task, CancellationToken.None).Result;

            result.Should().Be(1);
        }
        public void AnyAsync_should_return_false_when_no_result_exists()
        {
            var task = SetupNoResultIn1BatchAsync();

            var result = AsyncCursorHelper.AnyAsync(task, CancellationToken.None).Result;

            result.Should().Be(false);
        }
        public void AnyAsync_should_return_true_when_a_result_exists()
        {
            var task = SetupResultInFirstBatchAsync();

            var result = AsyncCursorHelper.AnyAsync(task, CancellationToken.None).Result;

            result.Should().Be(true);
        }
        public void SingleOrDefaultAsync_should_return_default_value_when_no_result_exists_delayed_to_the_second_batch()
        {
            var task = SetupNoResultInTwoBatchesAsync();

            var result = AsyncCursorHelper.SingleOrDefaultAsync(task, CancellationToken.None).Result;

            result.Should().Be(0);
        }
        public void SingleOrDefaultAsync_should_return_default_when_no_results_exist()
        {
            var task = SetupNoResultIn1BatchAsync();

            var result = AsyncCursorHelper.SingleOrDefaultAsync(task, CancellationToken.None).Result;

            result.Should().Be(0);
        }
        public void AnyAsync_should_return_true_when_result_exists_but_is_in_the_second_batch()
        {
            var task = SetupResultInSecondBatch();

            var result = AsyncCursorHelper.AnyAsync(task, CancellationToken.None).Result;

            result.Should().Be(true);
        }