private void SpecificProviderIsCalled( Mock <IGZipStreamProvider> gZipStreamProvider, Mock <IDeflateStreamProvider> deflateStreamProvider, string compressionMethod) { var compressionDeterminer = new Mock <ICompressionTypeDeterminer>(); var logWriter = new Mock <ILogWriter>(); compressionDeterminer.Setup( a => a.IsCompressedWithEncodingType( It.IsAny <HttpRequest>(), It.Is <string>(a => a.Equals(compressionMethod)))) .Returns(true); var decompressorProvider = new DecompressorProvider( compressionDeterminer.Object, gZipStreamProvider.Object, deflateStreamProvider.Object, logWriter.Object ); var request = new HttpRequestMockObjectsProvider().HttpRequest; var headers = new Mock <IHeaderDictionary> (); headers.Setup(a => a[It.Is <string> (a => a.Equals(CompressionTypeDeterminer.ContentEncodingHeader, StringComparison.InvariantCultureIgnoreCase))]) .Returns(CompressionTypeDeterminer.ContentEncodingGzip); request.Setup(a => a.Headers) .Returns(headers.Object); decompressorProvider.GetDecompressor(request.Object); }
public void UnknownCompressionMethodThrowsException() { var compressionDeterminer = new Mock <ICompressionTypeDeterminer>(); var gZipStreamProvider = new Mock <IGZipStreamProvider>(); var deflateStreamProvider = new Mock <IDeflateStreamProvider>(); var logWriter = new Mock <ILogWriter>(); compressionDeterminer.Setup( a => a.IsCompressedWithEncodingType( It.IsAny <HttpRequest>(), It.Is <string>(a => a.Equals("blah")))) .Returns(true); var decompressorProvider = new DecompressorProvider( compressionDeterminer.Object, gZipStreamProvider.Object, deflateStreamProvider.Object, logWriter.Object ); var request = new HttpRequestMockObjectsProvider().HttpRequest; var headers = new Mock <IHeaderDictionary> (); headers.Setup(a => a[It.Is <string> (a => a.Equals(CompressionTypeDeterminer.ContentEncodingHeader, StringComparison.InvariantCultureIgnoreCase))]) .Returns(CompressionTypeDeterminer.ContentEncodingGzip); request.Setup(a => a.Headers) .Returns(headers.Object); Assert.Throws <Exception>(() => decompressorProvider.GetDecompressor(request.Object)); }
static int Main(string[] args) { if (args.Length != 3 || false) { "Please specify all input arguments.".PrintOnConsole(); return(1); } // args = new[] { "compress", "G:\\Win10.vhd", "G:\\ArchivedVHD.arh" }; // args = new[] { "decompress", "G:\\ArchivedVHD.arh", "K:\\DecompressedVHD.vhd" }; // args = new[] { "compress", "G:\\Input.txt", "G:\\InputArc.txt" }; //args = new[] { "decompress", "G:\\InputArc.txt", "G:\\DecompressedInput.txt" }; switch (args[0]) { case "compress": { var fileToArchive = args[1]; var archiveName = args[2]; var fileReader = new FileReader(fileToArchive); var inpuQueues = QueueProvider.GetQueues(Configuration.CountOfCompressors, Configuration.QueueBufferLength); var reader = FileReaderProvider.StartReader(fileReader, inpuQueues, Configuration.BlockSize); var outputQueues = QueueProvider.GetQueues(Configuration.CountOfCompressors, Configuration.QueueBufferLength); var compressors = Enumerable.Zip(inpuQueues, outputQueues, (a, b) => (inQueue: a, outQueue: b)) .Select(i => CompressorProvider.StartCompressor(i.inQueue, i.outQueue, CompressionLevel.Optimal)) .ToArray(); var fileWriter = new ArchiveFileWriter(new FileWriter(archiveName)); var writer = FileWriterProvider.StartWriting(fileWriter, outputQueues); var monitor = MonitorProvider.StartMonitor(inpuQueues, outputQueues); writer.Join(); break; } case "decompress": { var archiveName = args[1]; var outputFileName = args[2]; var inpuCompressedQueues = QueueProvider.GetQueues(Configuration.CountOfDecompressors, Configuration.QueueBufferLength); var archiveReader = FileReaderProvider.StartReader(new ArchiveFileReader(new FileReader(archiveName)), inpuCompressedQueues, Configuration.BlockSize + 100); var outputDecompressedQueues = QueueProvider.GetQueues(Configuration.CountOfDecompressors, Configuration.QueueBufferLength); var decompressors = Enumerable.Zip(inpuCompressedQueues, outputDecompressedQueues, (a, b) => (inQueue: a, outQueue: b)) .Select(i => DecompressorProvider.StartDecompressor(i.inQueue, i.outQueue, Configuration.BlockSize)) .ToArray(); var decompressedWriter = FileWriterProvider.StartWriting(new FileWriter(outputFileName), outputDecompressedQueues); var monitor = MonitorProvider.StartMonitor(inpuCompressedQueues, outputDecompressedQueues); decompressedWriter.Join(); break; } default: break; } return(0); }