Example #1
0
    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);
    }
Example #2
0
 public OperationInfo(ExtractArchiveOperationSettings settings)
 {
     OperationType   = OperationType.Extract;
     Files           = new[] { settings.InputTopLevelFile };
     Directories     = Array.Empty <string>();
     TotalFilesCount = 1;
     TargetDirectory = settings.TargetDirectory;
 }
Example #3
0
        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));
        }
Example #4
0
 private static OperationInfo CreateOperationInfo(ExtractArchiveOperationSettings settings) =>
 new OperationInfo(settings);