public void ChecksMagicNumber() { var bytes = Compressed.Clone() as byte[]; bytes[3]++; using (Stream badMagicNumberStream = new MemoryStream(bytes)) { BinaryReader br = new BinaryReader(badMagicNumberStream); var header = new XZHeader(br); var ex = Assert.Throws <InvalidDataException>(() => { header.Process(); }); Assert.Equal("Invalid XZ Stream", ex.Message); } }
public void CorruptHeaderThrows() { var bytes = Compressed.Clone() as byte[]; bytes[8]++; using (Stream badCrcStream = new MemoryStream(bytes)) { BinaryReader br = new BinaryReader(badCrcStream); var header = new XZHeader(br); var ex = Assert.Throws <InvalidDataException>(() => { header.Process(); }); Assert.Equal("Stream header corrupt", ex.Message); } }
public void CrcIncorrectThrows() { var bytes = Compressed.Clone() as byte[]; bytes[20]++; using (Stream badCrcStream = new MemoryStream(bytes)) { Rewind(badCrcStream); var XZBlock = new XZBlock(badCrcStream, CheckType.CRC64, 8); var ex = Assert.Throws <InvalidDataException>(() => { ReadBytes(XZBlock, 1); }); Assert.Equal("Block header corrupt", ex.Message); } }
public void BadVersionIfCrcOkButStreamFlagUnknown() { var bytes = Compressed.Clone() as byte[]; byte[] streamFlags = { 0x00, 0xF4 }; byte[] crc = Crc32.Compute(streamFlags).ToLittleEndianBytes(); streamFlags.CopyTo(bytes, 6); crc.CopyTo(bytes, 8); using (Stream badFlagStream = new MemoryStream(bytes)) { BinaryReader br = new BinaryReader(badFlagStream); var header = new XZHeader(br); var ex = Assert.Throws <InvalidDataException>(() => { header.Process(); }); Assert.Equal("Unknown XZ Stream Version", ex.Message); } }