public void ReadSlice_should_throw_when_subject_is_disposed()
        {
            var stream = Substitute.For<Stream>();
            var subject = new BsonStreamAdapter(stream);
            subject.Dispose();

            Action action = () => subject.ReadSlice();

            action.ShouldThrow<ObjectDisposedException>().And.ObjectName.Should().Be("BsonStreamAdapter");
        }
        public void ReadSlice_should_return_expected_result()
        {
            var bytes = new byte[] { 7, 0, 0, 0, 1, 2, 3 };
            var stream = new MemoryStream(bytes);
            var subject = new BsonStreamAdapter(stream);

            var result = subject.ReadSlice();

            result.IsReadOnly.Should().BeTrue();
            var segment = result.AccessBackingBytes(0);
            segment.Array.Skip(segment.Offset).Take(segment.Count).Should().Equal(bytes);
            subject.Position.Should().Be(7);
        }