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); } }
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; } }