Esempio n. 1
0
        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;
                            }
                        }
                    }
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        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);
        }