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); }
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)); }