Ejemplo n.º 1
0
        public void Read_CompressMode_ChunksAddedToQueue(int srcStreamLength, int chunkSize, int expectedQueueItemsCount)
        {
            // arrange
            var random = new Random();
            var statusUpdateServiceMock = new Mock <IStatusUpdateService>();
            var testSettings            = new TestCompressionSettings {
                ChunkSize = chunkSize
            };
            var bytes = new byte[srcStreamLength];

            random.NextBytes(bytes);
            var memoryStream      = new MemoryStream(bytes);
            var sourceServiceMock = new Mock <ISourceStreamService>();

            sourceServiceMock.Setup(x => x.OpenRead(It.IsAny <string>()))
            .Returns(memoryStream);
            var service = new StreamToQueueReader(new StreamUtilsService(), statusUpdateServiceMock.Object, testSettings, sourceServiceMock.Object);

            // act
            var result = service.Read("", CompressionMode.Compress);

            result.ProcessingThread.Join(); // wait completion
            memoryStream.Close();
            memoryStream.Dispose();

            // assert
            result.Queue.Count.Should().Be(expectedQueueItemsCount);
            result.ReadFinishedSource.IsCancellationRequested.Should().BeTrue();
            result.ExceptionSource.IsCancellationRequested.Should().BeFalse();
        }
Ejemplo n.º 2
0
        public void Read_DecompressMode_ChunksAddedToQueue()
        {
            // arrange
            var statusUpdateServiceMock = new Mock <IStatusUpdateService>();
            var testSettings            = new TestCompressionSettings {
                ChunkSize = 10
            };
            var bytes = new byte[]
            {
                5, 0, 0, 0,     // size of first block is 5 bytes
                1, 2, 3, 4, 5,  // first data block
                4, 0, 0, 0,     // size of second block is 4 bytes
                6, 7, 8, 9      // second data block
            };
            var memoryStream      = new MemoryStream(bytes);
            var sourceServiceMock = new Mock <ISourceStreamService>();

            sourceServiceMock.Setup(x => x.OpenRead(It.IsAny <string>()))
            .Returns(memoryStream);
            var service = new StreamToQueueReader(new StreamUtilsService(), statusUpdateServiceMock.Object, testSettings, sourceServiceMock.Object);

            // act
            var result = service.Read("", CompressionMode.Decompress);

            result.ProcessingThread.Join(); // wait completion
            memoryStream.Close();
            memoryStream.Dispose();

            // assert
            result.Queue.Count.Should().Be(2);
            result.ReadFinishedSource.IsCancellationRequested.Should().BeTrue();
            result.ExceptionSource.IsCancellationRequested.Should().BeFalse();
            result.Queue.TryTake(out QueueItem first);
            result.Queue.TryTake(out QueueItem second);
            first.Order.Should().Be(1);
            first.Data.Should().Equal(new [] { 1, 2, 3, 4, 5 });
            second.Order.Should().Be(2);
            second.Data.Should().Equal(new[] { 6, 7, 8, 9 });
        }