public void ProgressUpdatePropogates() { var inputTracker = GetMutableProgressTracker(); var command1Mock = GetCommandMock(); command1Mock.Setup((command) => command.Process(null, It.IsAny<IMutableProgressTracker>(), CancellationToken.None)) .Returns((TypedData) null) .Callback((TypedData data, IMutableProgressTracker progress, CancellationToken cancelToken) => { bool updateCalled = false; EventHandler<ProgressUpdatedEventArgs> handler = (sender, e) => { Assert.AreEqual(0.25, e.Progress, 0.001); updateCalled = true; }; inputTracker.ProgressUpdated += handler; progress.Progress = 0.5; inputTracker.ProgressUpdated -= handler; Assert.IsTrue(updateCalled); }); command1Mock.Setup((command) => command.ProcessTimeEstimate).Returns(new TestTimeEstimate(10)); var command2Mock = GetCommandMock(); command2Mock.Setup((command) => command.Process(null, It.IsAny<IMutableProgressTracker>(), CancellationToken.None)).Returns((TypedData) null); command2Mock.Setup((command) => command.ProcessTimeEstimate).Returns(new TestTimeEstimate(10)); var chain = new CommandChain(command1Mock.Object, command2Mock.Object); chain.Process(null, inputTracker, CancellationToken.None); }
public void RouteReturnsData1() { var expectedOutput = GetTextData(); var inputTracker = GetMutableProgressTracker(); var inputData = GetTextData(); var commandMock = GetCommandMock(); commandMock.Setup((command) => command.Process(inputData, It.IsAny<IMutableProgressTracker>(), CancellationToken.None)).Returns(expectedOutput); commandMock.Setup((command) => command.ProcessTimeEstimate).Returns(TimeEstimates.Instantaneous); var chain = new CommandChain(commandMock.Object); var actualData = chain.Process(inputData, inputTracker, CancellationToken.None); Assert.AreSame(expectedOutput, actualData); }
public override void Execute(IMutableProgressTracker progress, CancellationToken cancelToken) { var commandChain = new CommandChain( new Screenshot(), Renamer, new CropShot(), ImageUploader, new Clipboard() ); using (commandChain.Process(null, progress, cancelToken)) { // Auto-dispose } progress.Status = "Image URL saved to clipboard"; }
public override void Execute(IMutableProgressTracker progress, CancellationToken cancelToken) { var clipboard = new Clipboard(); var router = new DataRouter { { TypedDataType.Image, ImageUploader }, { TypedDataType.Text, TextUploader }, { TypedDataType.Uri, UrlShortener }, { TypedDataType.Stream, FileUploader }, }; var commandChain = new CommandChain( clipboard, router, clipboard ); using (commandChain.Process(null, progress, cancelToken)) { // Auto-dispose } progress.Status = "URL saved to clipboard"; }