public void GetEnumerator_should_call_ToCursor_each_time(
            [Values(1, 2)] int times)
        {
            var mockSource = new Mock<IAsyncCursorSource<BsonDocument>>();
            var cursor = new Mock<IAsyncCursor<BsonDocument>>().Object;
            mockSource.Setup(c => c.ToCursor(CancellationToken.None)).Returns(cursor);
            var subject = new AsyncCursorSourceEnumerableAdapter<BsonDocument>(mockSource.Object, CancellationToken.None);

            for (var i = 0; i < times; i++)
            {
                subject.GetEnumerator();
            }

            mockSource.Verify(s => s.ToCursor(CancellationToken.None), Times.Exactly(times));
        }
        public void GetEnumerator_should_call_ToCursor_each_time(
            [Values(1, 2)] int times)
        {
            var source = Substitute.For<IAsyncCursorSource<BsonDocument>>();
            var cursor = Substitute.For<IAsyncCursor<BsonDocument>>();
            source.ToCursor().Returns(cursor);
            var subject = new AsyncCursorSourceEnumerableAdapter<BsonDocument>(source, CancellationToken.None);

            for (var i = 0; i < times; i++)
            {
                subject.GetEnumerator();
            }

            source.Received(times).ToCursor();
        }