public async Task TestExtractOperation(ArchiveType archiveType) { var processorMock = new Mock <IArchiveReader>(); processorMock .Setup(m => m.ExtractAsync( SourceName, DestinationDirName)) .Verifiable(); _autoMocker .Setup <IArchiveProcessorFactory, IArchiveReader>(m => m.CreateReader(archiveType)) .Returns(processorMock.Object); var operationsFactory = _autoMocker.CreateInstance <OperationsFactory>(); var settings = new ExtractArchiveOperationSettings( SourceName, DestinationDirName, archiveType); var operation = operationsFactory.CreateExtractOperation(settings); Assert.Equal(OperationState.NotStarted, operation.State); var callbackCalled = false; operation.StateChanged += (sender, args) => callbackCalled = true; await operation.RunAsync(); Assert.Equal(OperationState.Finished, operation.State); Assert.True(callbackCalled); processorMock .Verify(m => m.ExtractAsync( SourceName, DestinationDirName), Times.Once); }
public OperationInfo(ExtractArchiveOperationSettings settings) { OperationType = OperationType.Extract; Files = new[] { settings.InputTopLevelFile }; Directories = Array.Empty <string>(); TotalFilesCount = 1; TargetDirectory = settings.TargetDirectory; }
public IOperation CreateExtractOperation(ExtractArchiveOperationSettings settings) { var archiveProcessor = CreateArchiveReader(settings.ArchiveType); var extractOperation = CreateExtractOperation(archiveProcessor, settings.InputTopLevelFile, settings.TargetDirectory); var operationGroup = CreateOperationGroup(new[] { extractOperation }); var operations = CreateOperationsGroupsList(operationGroup); var operationInfo = CreateOperationInfo(settings); var compositeOperation = CreateCompositeOperation(operations, operationInfo); return(CreateOperation(compositeOperation)); }
private static OperationInfo CreateOperationInfo(ExtractArchiveOperationSettings settings) => new OperationInfo(settings);