public void SingleFailure() { Mock <IProcessor> mockProcessor1 = new Mock <IProcessor>(); Mock <IProcessor> mockProcessor2 = new Mock <IProcessor>(); FileInfo file1 = GetTestFile("BasicTextFile.txt"); FileInfo file2 = GetTestFile("Lipsum.txt"); FileInfo file3 = GetTestFile("TextFileWithNewlines.txt"); FileInfo[] generatedFiles = new FileInfo[] { file2, file2, file2 }; FileInfo[] outputFiles = new FileInfo[] { file3, file3, file3 }; string[] values = new string[] { "foo", "bar", "baz" }; mockProcessor1.Setup(p => p.Init(It.IsAny <IRunInfo>())); mockProcessor1.Setup(p => p.InputFileSource).Returns(InputFileSource.ParentInput); mockProcessor1.Setup(p => p.Process(file1, It.IsAny <MatchResultType>(), values, generatedFiles, ProcessInput.GeneratedFiles, It.IsAny <CancellationToken>())) .Returns(new ProcessingResult(ProcessingResultType.Success, "Processor 1 Success", outputFiles)); mockProcessor1.Setup(p => p.ProcessAggregated(It.IsAny <CancellationToken>())); mockProcessor1.Setup(p => p.Cleanup()); mockProcessor2.Setup(p => p.Init(It.IsAny <IRunInfo>())); mockProcessor2.Setup(p => p.InputFileSource).Returns(InputFileSource.ParentInput); mockProcessor2.Setup(p => p.Process(file1, It.IsAny <MatchResultType>(), values, generatedFiles, ProcessInput.GeneratedFiles, It.IsAny <CancellationToken>())) .Returns(new ProcessingResult(ProcessingResultType.Failure, "Processor 2 Failure", new FileInfo[] { })); mockProcessor2.Setup(p => p.ProcessAggregated(It.IsAny <CancellationToken>())); mockProcessor2.Setup(p => p.Cleanup()); MultiProcessor multiProcessor = new MultiProcessor(); multiProcessor.Processors.Add(mockProcessor1.Object); multiProcessor.Processors.Add(mockProcessor2.Object); multiProcessor.Init(RunInfo); ProcessingResult result = multiProcessor.Process(file1, MatchResultType.Yes, values, generatedFiles, ProcessInput.GeneratedFiles, CancellationToken.None); multiProcessor.ProcessAggregated(CancellationToken.None); multiProcessor.Cleanup(); mockProcessor1.VerifyAll(); mockProcessor2.VerifyAll(); Assert.IsNotNull(result); Assert.AreEqual(ProcessingResultType.Failure, result.Type); Assert.AreEqual("Processor 1 Success | Processor 2 Failure", result.Message); Assert.AreEqual(3, result.OutputFiles.Length); Assert.IsTrue(result.OutputFiles.All(file => file == file3)); }
public void TestConstructor() { var processor = new MultiProcessor(new LambdaProcessor(source => new FileSource(source.FileName + "1"))); Assert.AreEqual("test1", processor.Build().Execute(new FileSource("test")).FileName); processor = new MultiProcessor( new LambdaProcessor(source => new FileSource(source.FileName + "1")), new LambdaProcessor(source => new FileSource(source.FileName + "2")) ); Assert.AreEqual("test12", processor.Build().Execute(new FileSource("test")).FileName); processor = new MultiProcessor( new LambdaProcessor(source => new FileSource(source.FileName + "1")), new LambdaProcessor(source => new FileSource(source.FileName + "2")), new LambdaProcessor(source => new FileSource(source.FileName + "3")) ); Assert.AreEqual("test123", processor.Build().Execute(new FileSource("test")).FileName); }
private void applyButton_Click(object sender, EventArgs e) { if (InputImage == null) { return; // Get out if no input image } pictureBox2.Image = null; // Clear output image if (OutputImage != null) { OutputImage.Dispose(); // Reset output image } //TODO use your own processor(s) here Processor processor = new MultiProcessor(new Processor[] { new Negative(), new RotateRight() }); OutputImage = processor.Process(InputImage); // Process the image pictureBox2.Image = OutputImage; // Display output image }