public void RandomizedWriteReadTest()
        {
            var baseStream = new MemoryStream();
            var data       = GenerateSomeInputData();

            using (var writer = new CustomCompressionStream(baseStream, false))
                writer.Write(data, 0, data.Length);

            var ratio = (double)baseStream.Position / data.Length;

            Assert.Less(ratio, 0.95);

            baseStream.Position = 0;
            var reader   = new CustomCompressionStream(baseStream, true);
            var readData = new List <byte>();
            var buffer   = new byte[10];

            while (true)
            {
                int cnt = reader.Read(buffer, 0, buffer.Length);
                if (cnt == 0)
                {
                    break;
                }
                readData.AddRange(buffer.Take(cnt));
            }
            CollectionAssert.AreEqual(data, readData);
        }
        public void ReadByPieces()
        {
            var baseStream = new MemoryStream();
            var data       = GenerateSomeInputData();

            using (var writer = new CustomCompressionStream(baseStream, false))
                writer.Write(data, 0, data.Length);

            var reader = new CustomCompressionStream(baseStream, true);

            baseStream.Position = 0;

            var readData = new List <byte>();
            var piece    = new byte[5];

            while (true)
            {
                int cnt = reader.Read(piece, 0, piece.Length);
                if (cnt == 0)
                {
                    break;
                }
                readData.AddRange(piece.Take(cnt));
            }
            CollectionAssert.AreEqual(data, readData);
        }
Example #3
0
        void Test()
        {
            var baseStream = new MemoryStream();
            var writer = new CustomCompressionStream(baseStream, false);
            var data = new List<byte>();
            var random = new Random();
            for (int i = 0; i < 50 + random.Next(100); i++)
            {
                var bt = (byte)random.Next(255);
                for (int j = 0; j < 2 + random.Next(2); j++)
                    data.Add(bt);
            }
            writer.Write(data.ToArray(), 0, data.Count);

            var ratio = (double)baseStream.Position / data.Count;
            Assert.Less(ratio, 0.95);

            baseStream.Position = 0;
            var reader = new CustomCompressionStream(baseStream, true);
            var readData = new List<byte>();
            var buffer = new byte[10];
            while (true)
            {
                int cnt=reader.Read(buffer, 0, buffer.Length);
                readData.AddRange(buffer.Take(cnt));
                if (cnt < buffer.Length) break;
            }
            CollectionAssert.AreEqual(data, readData);
        }
        public void FailOnOddLengthOfBaseStream()
        {
            var baseStream = new MemoryStream(WriteAll(new byte[] { 1, 2, 3, 5, 6 }).Take(3).ToArray());
            var reader     = new CustomCompressionStream(baseStream, true);
            var buffer     = new byte[1000];

            Assert.Throws <InvalidOperationException>(() => reader.Read(buffer, 0, buffer.Length));
        }
        public void ReadLessBytesThanRequested()
        {
            var baseStream = new MemoryStream(WriteAll(new byte[] { 1, 1, 1, 1 }));
            var reader     = new CustomCompressionStream(baseStream, true);
            var buffer     = new byte[10];
            int cnt        = reader.Read(buffer, 0, 10);

            Assert.Less(cnt, 10);
        }
        public void BaseStreamReturnsLessThanRequestedOnRead()
        {
            var baseStream = new PartialStream(1, WriteAll(new byte[] { 1, 1, 1, 1, 1 }));
            var reader     = new CustomCompressionStream(baseStream, true);
            var buffer     = new byte[5];
            var count      = reader.Read(buffer, 0, buffer.Length);

            Assert.AreEqual(buffer.Length, count);
            CollectionAssert.AreEqual(Enumerable.Repeat(1, 5), buffer);
        }
        public void ReadIsLazy()
        {
            var baseStream = new InfinityStream();
            var reader     = new CustomCompressionStream(baseStream, true);
            var buffer     = new byte[1000];
            int cnt        = reader.Read(buffer, 0, buffer.Length);

            Assert.AreEqual(cnt, buffer.Length);
            CollectionAssert.AreEqual(Enumerable.Repeat(1, 1000), buffer);
        }
        public void ReadWithOffset()
        {
            var baseStream = new MemoryStream();
            var data       = new List <byte> {
                1, 2, 2, 3, 3, 3
            };

            using (var writer = new CustomCompressionStream(baseStream, false))
                writer.Write(data.ToArray(), 0, data.Count);
            baseStream.Position = 0;
            var reader    = new CustomCompressionStream(baseStream, true);
            var buffer    = new byte[data.Count];
            var readCount = buffer.Length - 2;
            int cnt       = reader.Read(buffer, 1, readCount);

            Assert.AreEqual(cnt, readCount);
            Assert.AreEqual(0, buffer[0]);
            Assert.AreEqual(0, buffer[buffer.Length - 1]);
            CollectionAssert.AreEqual(
                data.Take(readCount),
                buffer.Skip(1).Take(readCount));
        }