public void StartNewFileMonitorInNewFolderAsync_SubscribesANewListener_CreatedListenerIsSubscribed() { //Arrange: ISubfolderMonitorListener _fakeListener = Substitute.For <ISubfolderMonitorListener>(); _fakeProjectionPipelineFactory.CreateFileMonitorListener(Arg.Any <PermStorageFolderStructure>(), Arg.Any <BlockingCollection <TempProjectionInfo> >()).Returns(_fakeListener); //Act: Task task = _uut.StartNewFileMonitorInNewFolderAsync("path", "folder"); Task.WaitAll(task); _fakeFileMonitor.Created += Raise.EventWith(new object(), new SearchDirectoryArgs("path", "name", _fakeFileMonitor)); //Assert: _fakeListener.Received(1).OnNewFileDetected(Arg.Any <object>(), Arg.Any <SearchDirectoryArgs>()); }
private IReconstructionProcessor StartPipeline(IFileMonitor fileMonitor, PermStorageFolderStructure folderStructure) { BlockingCollection <TempProjectionInfo> queue1 = new BlockingCollection <TempProjectionInfo>(); BlockingCollection <PermProjectionInfo> queue2 = new BlockingCollection <PermProjectionInfo>(); var eventHandler = _projectionPipelineFactory.CreateFileMonitorListener(folderStructure, queue1); fileMonitor.Created += eventHandler.OnNewFileDetected; fileMonitor.Finished += eventHandler.OnMonitorFinished; var copier = _projectionPipelineFactory.CreateProjectionCopier(queue1, queue2, folderStructure); TaskWatcher.AddTask(copier.StartCopyingFiles()); var reconstructionProcessor = _projectionPipelineFactory.CreateReconstructionProcessor(queue2, folderStructure); TaskWatcher.AddTask(reconstructionProcessor.StartConsumingProjections()); return(reconstructionProcessor); }