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);
        }
Example #3
0
        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
        }