public void ReadDecimal128_should_throw_when_subject_is_disposed()
        {
            var mockStream = new Mock<Stream>();
            var subject = new BsonStreamAdapter(mockStream.Object);
            subject.Dispose();

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

            action.ShouldThrow<ObjectDisposedException>().And.ObjectName.Should().Be("BsonStreamAdapter");
        }
        public void ReadDecimal128_should_return_expected_result(
            [Values("-1.0", "0.0", "1.0", "NaN", "-Infinity", "Infinity")]
            string valueString
            )
        {
            var value = Decimal128.Parse(valueString);
            var bytes = new byte[16];
            Buffer.BlockCopy(BitConverter.GetBytes(value.GetIEEELowBits()), 0, bytes, 0, 8);
            Buffer.BlockCopy(BitConverter.GetBytes(value.GetIEEEHighBits()), 0, bytes, 8, 8);
            var stream = new MemoryStream(bytes);
            var subject = new BsonStreamAdapter(stream);

            var result = subject.ReadDecimal128();

            result.Should().Be(value);
            subject.Position.Should().Be(16);
        }