public void BadData_FromFile_ThrowsInvalidDataException(string filename) { using var resource = typeof(SnappyTests).Assembly.GetManifestResourceStream($"Snappier.Tests.TestData.{filename}"); Assert.NotNull(resource); var input = new byte[resource.Length]; resource.Read(input); Assert.Throws <InvalidDataException>(() => { var length = Snappy.GetUncompressedLength(input); Assert.InRange(length, 0, 1 << 20); var output = new byte[length]; Snappy.Decompress(input, output); }); }
public void BadData_SimpleCorruption_ThrowsInvalidDataException() { var input = Encoding.UTF8.GetBytes("making sure we don't crash with corrupted input"); var compressed = new byte[Snappy.GetMaxCompressedLength(input.Length)]; var compressedLength = Snappy.Compress(input, compressed); var compressedSpan = compressed.AsSpan(0, compressedLength); // corrupt the data a bit compressedSpan[1]--; compressedSpan[3]++; Assert.Throws <InvalidDataException>(() => { var length = Snappy.GetUncompressedLength(compressed.AsSpan(0, compressedLength)); Assert.InRange(length, 0, 1 << 20); var output = new byte[length]; Snappy.Decompress(compressed.AsSpan(0, compressedLength), output); }); }
public void CompressAndDecompressFile(string filename) { using var resource = typeof(SnappyTests).Assembly.GetManifestResourceStream($"Snappier.Tests.TestData.{filename}"); Assert.NotNull(resource); var input = new byte[resource.Length]; resource.Read(input); var compressed = new byte[Snappy.GetMaxCompressedLength(input.Length)]; var compressedLength = Snappy.Compress(input, compressed); var compressedSpan = compressed.AsSpan(0, compressedLength); var output = new byte[Snappy.GetUncompressedLength(compressedSpan)]; var outputLength = Snappy.Decompress(compressedSpan, output); Assert.Equal(input.Length, outputLength); Assert.Equal(input, output); }