Пример #1
0
        private unsafe int ReadCompressedInteger(byte[] bytes, TryReadFunc tryRead, ReadFunc read)
        {
            fixed(byte *ptr = bytes)
            {
                var reader = new BlobReader(new MemoryBlock(ptr, bytes.Length));

                int  value;
                bool valid = tryRead(ref reader, out value);

                if (valid)
                {
                    Assert.Equal(bytes.Length, reader.Offset);
                    reader.Reset();
                    Assert.Equal(value, read(ref reader));
                    Assert.Equal(bytes.Length, reader.Offset);
                }
                else
                {
                    Assert.Equal(0, reader.Offset);
                    Assert.Throws <BadImageFormatException>(() => reader.ReadCompressedInteger());
                    Assert.Equal(value, BlobReader.InvalidCompressedInteger);
                    Assert.Equal(0, reader.Offset);
                }

                return(value);
            }
        }
Пример #2
0
        private unsafe int ReadCompressedInteger(byte[] bytes, TryReadFunc tryRead, ReadFunc read)
        {
            fixed (byte* ptr = bytes)
            {
                var reader = new BlobReader(new MemoryBlock(ptr, bytes.Length));

                int value;
                bool valid = tryRead(ref reader, out value);

                if (valid)
                {
                    Assert.Equal(bytes.Length, reader.Offset);
                    reader.Reset();
                    Assert.Equal(value, read(ref reader));
                    Assert.Equal(bytes.Length, reader.Offset);
                }
                else
                {
                    Assert.Equal(0, reader.Offset);
                    Assert.Throws<BadImageFormatException>(() => reader.ReadCompressedInteger());
                    Assert.Equal(value, BlobReader.InvalidCompressedInteger);
                    Assert.Equal(0, reader.Offset);
                }

                return value;
            }
        }