public void DecompressFiles(string decompressionDataFilePath) { LoadCompressionData(decompressionDataFilePath); long location = 0; for (var i = 0; i < _compressionData.Files.Count; i++) { long offset = 0; for (var j = 0; j < i; j++) { offset += _compressionData.Files[j].Item2; } var length = _compressionData.Files[i].Item3; var fileStreamReader = new FileStream(_compressionData.FileName, FileMode.Open, FileAccess.Read); using (var fileStreamWriter = new FileStream(FullPath(_compressionData.Files[i].Item1), FileMode.Create, FileAccess.Write)) using (var rleFileStreamReader = new RleStreamReader(_sequenceMin, fileStreamReader)) { fileStreamReader.Position = offset; long offsetPosition = 0; int b; while ((b = rleFileStreamReader.ReadByte()) >= 0) { fileStreamWriter.WriteByte((byte)b); offsetPosition++; if (offsetPosition > length - 1) { break; } } } } }
public void ReadAllBytes_SequenceMin3_Decoding() { var rleStreamRead = new RleStreamReader(3, new MemoryStream(new byte[] { 123, 34, 127, 127, 2, 12, 13, 13, 13, 5, 33 })); var bytes = rleStreamRead.ReadAllBytes(); CollectionAssert.AreEqual(new byte[] { 123, 34, 127, 127, 2, 12, 13, 13, 13, 13, 13, 13, 13, 13, 33 }, bytes); }
public void ReadAllBytes_TwoTheSameBytesAndSequance2AndOneOther() { var rleStreamRead = new RleStreamReader(2, new MemoryStream(new byte[] { 127, 127, 2, 12 })); var bytes = rleStreamRead.ReadAllBytes(); CollectionAssert.AreEqual(new byte[] { 127, 127, 127, 127, 12 }, bytes); }
public void Read_OneByte() { var bytes = new byte[] { 127 }; var rleStreamRead = new RleStreamReader(2, new MemoryStream(bytes)); var b = rleStreamRead.ReadByte(); Assert.AreEqual(bytes[0], b); }
public void Read_TwoTheSameBytesAndSequance0() { var bytes = new byte[] { 127, 127, 0 }; var rleStreamRead = new RleStreamReader(2, new MemoryStream(bytes)); var b1 = rleStreamRead.ReadByte(); var b2 = rleStreamRead.ReadByte(); Assert.AreEqual(bytes[0], b1); Assert.AreEqual(bytes[0], b2); }
public void Read_TwoTheDifferentBytes_EndStreamAfter() { var bytes = new byte[] { 127, 100 }; var rleStreamRead = new RleStreamReader(2, new MemoryStream(bytes)); rleStreamRead.ReadByte(); rleStreamRead.ReadByte(); var b = rleStreamRead.ReadByte(); Assert.AreEqual(-1, b); }
public void Read_TwoTheDifferentBytes() { var bytes = new byte[] { 127, 100 }; var rleStreamRead = new RleStreamReader(2, new MemoryStream(bytes)); var b1 = rleStreamRead.ReadByte(); var b2 = rleStreamRead.ReadByte(); Assert.AreEqual(bytes[0], b1); Assert.AreEqual(bytes[1], b2); }
public void Read_TwoTheSameBytesAndSequance0_EndStreamAfter() { var bytes = new byte[] { 127, 127, 0 }; var rleStreamRead = new RleStreamReader(2, new MemoryStream(bytes)); rleStreamRead.ReadByte(); rleStreamRead.ReadByte(); var b = rleStreamRead.ReadByte(); Assert.AreEqual(-1, b); }