public void WriteCStringBytes_should_write_expected_bytes(byte[] value)
        {
            var stream = new MemoryStream();
            var subject = new BsonStreamAdapter(stream);

            subject.WriteCStringBytes(value);

            stream.ToArray().Should().Equal(value.Concat(new byte[] { 0 }));
        }
        public void WriteCStringBytes_should_throw_when_value_is_null()
        {
            var stream = Substitute.For<Stream>();
            var subject = new BsonStreamAdapter(stream);

            Action action = () => subject.WriteCStringBytes(null);

            action.ShouldThrow<ArgumentNullException>().And.ParamName.Should().Be("value");
        }
        public void WriteCStringBytes_should_throw_when_value_contains_nulls()
        {
            var stream = Substitute.For<Stream>();
            var subject = new BsonStreamAdapter(stream);
            var value = new byte[] { 1, 0, 3 };

            Action action = () => subject.WriteCStringBytes(value);

            action.ShouldThrow<ArgumentException>().And.ParamName.Should().Be("value");
        }
        public void WriteCStringBytes_should_throw_when_subject_is_disposed()
        {
            var stream = Substitute.For<Stream>();
            var subject = new BsonStreamAdapter(stream);
            var value = new byte[0];
            subject.Dispose();

            Action action = () => subject.WriteCStringBytes(value);

            action.ShouldThrow<ObjectDisposedException>().And.ObjectName.Should().Be("BsonStreamAdapter");
        }