public void ReaderIsNotActiveIfNoChunks() { using (ChunksReader chunksReader = new ChunksReader(Environment.ProcessorCount, _fileReaderMock.Object, _gzipCompressMock.Object, _fileWriterTaskMock.Object, _errorLogsMock.Object)) { Assert.IsFalse(chunksReader.IsActive()); } }
public void EmptyStreamProducesNoChunks() { var inputStream = new MemoryStream(); var pipe = new PipeMock(); var reader = new ChunksReader(pipe, chunkSize: 8, logger: new LoggerMock()); reader.ReadFromStream(inputStream, new CancellationToken()); Assert.Empty(pipe.Chunks); }
public void SmallFileFitsInOneChunk() { var bytes = new byte[] { 0x11, 0x22, 0x33, 0x42 }; var inputStream = new MemoryStream(bytes); var pipe = new PipeMock(); var reader = new ChunksReader(pipe, chunkSize: 8, logger: new LoggerMock()); reader.ReadFromStream(inputStream, new CancellationToken()); Assert.Single(pipe.Chunks); Assert.Equal(bytes, pipe.Chunks[0].Bytes); }
public void BigFileFitsInSeveralChunks() { var bytes = new byte[] { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB }; var inputStream = new MemoryStream(bytes); var pipe = new PipeMock(); var reader = new ChunksReader(pipe, chunkSize: 8, logger: new LoggerMock()); reader.ReadFromStream(inputStream, new CancellationToken()); Assert.Equal(2, pipe.Chunks.Count); Assert.Equal(8, pipe.Chunks[0].Bytes.Length); Assert.Equal(3, pipe.Chunks[1].Bytes.Length); Assert.Equal(1, pipe.Chunks[1].Index); Assert.True(pipe.WasClosed); }
public void WriterTaskExecutesWhenAddingChunkToQueue() { _fileReaderMock.Setup(x => x.GetChunkBytes(It.IsAny <ChunkReadInfo>())).Returns(It.IsAny <byte[]>()); _gzipCompressMock.Setup(x => x.Execute(It.IsAny <byte[]>())).Returns(It.IsAny <byte[]>()); _fileWriterTaskMock.Setup(x => x.AddChunk(It.IsAny <int>(), It.IsAny <ChunkWriteInfo>())); using (ChunksReader chunksReader = new ChunksReader(Environment.ProcessorCount, _fileReaderMock.Object, _gzipCompressMock.Object, _fileWriterTaskMock.Object, _errorLogsMock.Object)) { chunksReader.EnqueueChunk(new ChunkReadInfo(It.IsAny <int>(), It.IsAny <long>(), It.IsAny <int>())); Thread.Sleep(100); _fileWriterTaskMock.Verify(x => x.AddChunk(It.IsAny <int>(), It.IsAny <ChunkWriteInfo>()), Times.Once); } }
public void ReaderReturnsErrorIfReaderFails() { _fileReaderMock.Setup(x => x.GetChunkBytes(It.IsAny <ChunkReadInfo>())).Throws(new ReaderException("An unexpected error occurred")); _gzipCompressMock.Setup(x => x.Execute(It.IsAny <byte[]>())).Returns(It.IsAny <byte[]>()); _fileWriterTaskMock.Setup(x => x.AddChunk(It.IsAny <int>(), It.IsAny <ChunkWriteInfo>())); using (ChunksReader chunksReader = new ChunksReader(Environment.ProcessorCount, _fileReaderMock.Object, _gzipCompressMock.Object, _fileWriterTaskMock.Object, _errorLogsMock.Object)) { chunksReader.EnqueueChunk(new ChunkReadInfo(It.IsAny <int>(), It.IsAny <long>(), It.IsAny <int>())); Thread.Sleep(100); _fileReaderMock.Verify(x => x.GetChunkBytes(It.IsAny <ChunkReadInfo>()), Times.Once); _gzipCompressMock.Verify(x => x.Execute(It.IsAny <byte[]>()), Times.Never); } }