private void RunBatchEdit(StringInstructionSet[] sets) { bool finished = false, displayed = false; // hack cuz DoWork event isn't cleared after completion b.DoWork += (sender, e) => { if (finished) { return; } // don't bother reporting progress... Processor.Process(sets, Items); finished = true; }; b.ProgressChanged += (sender, e) => SetProgressBar(e.ProgressPercentage); b.RunWorkerCompleted += (sender, e) => { string result = Processor.GetEditorResults(sets); if (!displayed) { WinFormsUtil.Alert(result); } displayed = true; RTB_Instructions.Enabled = B_Go.Enabled = true; SetupProgressBar(0); }; b.RunWorkerAsync(); }
/// <summary> /// Process item. /// </summary> /// <param name="item"></param> /// <returns></returns> /// <exception cref="System.Exception"></exception> protected TOut DoProcess(TIn item) { if (ItemProcessor == null) { object result = item; return((TOut)result); } object resultProcess = ItemProcessor.Process(item); return((TOut)resultProcess); }
public void Given_2_Processors_Process_Called_Once_For_Each_Processor() { var fakeProcessor1 = new Mock<IItemProcessor>(MockBehavior.Loose); var fakeProcessor2 = new Mock<IItemProcessor>(MockBehavior.Loose); var itemProcessor = new ItemProcessor(fakeProcessor1.Object, fakeProcessor2.Object); itemProcessor.Process(new Item()); fakeProcessor1.Verify(p => p.Process(It.IsAny<Item>()), Times.Once()); fakeProcessor2.Verify(p => p.Process(It.IsAny<Item>()), Times.Once()); }
public void Given_2_Processors_Process_Called_Once_For_Each_Processor() { var fakeProcessor1 = new Mock <IItemProcessor>(MockBehavior.Loose); var fakeProcessor2 = new Mock <IItemProcessor>(MockBehavior.Loose); var itemProcessor = new ItemProcessor(fakeProcessor1.Object, fakeProcessor2.Object); itemProcessor.Process(new Item()); fakeProcessor1.Verify(p => p.Process(It.IsAny <Item>()), Times.Once()); fakeProcessor2.Verify(p => p.Process(It.IsAny <Item>()), Times.Once()); }
public void Success_HandlesNullItem() { // Setup var qualityFactory = new Mock <IQualityPipelineFactory>(); var shelfLifeFactory = new Mock <IShelfLifeAlgorithmFactory>(); var factory = new ItemProcessor(qualityFactory.Object, shelfLifeFactory.Object); // Execution var result = factory.Process(null); // Assert Assert.IsNull(result); }
public void Failure_HandlesNullShelfLifeStrategy() { // Setup var newItem = new Item("Some Stock Item", -3, 3, QualityStrategy.LinearDecrease, ShelfLifeStrategy.LinearDecrease) as IInventoryItem; var qualityFactory = new Mock <IQualityPipelineFactory>(); var shelfLifeFactory = new Mock <IShelfLifeAlgorithmFactory>(); shelfLifeFactory.Setup(f => f.Create(ShelfLifeStrategy.LinearDecrease)) .Returns <IShelfLifeAlgorithm>(null); var factory = new ItemProcessor(qualityFactory.Object, shelfLifeFactory.Object); // Execution var result = factory.Process(newItem); // Assert Assert.IsNull(result); }
public void Success_RunsEntireBusiessLogic() { // Setup const int initialQuality = 4; var newItem = new Item("Some Stock Item", -3, initialQuality, QualityStrategy.LinearDecrease, ShelfLifeStrategy.LinearDecrease) as IInventoryItem; // Set up the shelf life factory to return a mocked algorithm so we can check that the algorithm is called var shelfLifeFactory = new Mock <IShelfLifeAlgorithmFactory>(); shelfLifeFactory.Setup(f => f.Create(ShelfLifeStrategy.LinearDecrease)) .Returns(new LinearDecreaseShelfLifeAlgorithm()); // Setup a basic quality pipeline factory to return two elements var qualityPipelineFactory = new Mock <IQualityPipelineFactory>(MockBehavior.Strict); qualityPipelineFactory.Setup(p => p.CreatePipeline(newItem)) .Returns(new List <IQualityAlgorithm>() { new MultipleQuality(), new SubtractOneQuality() }); var factory = new ItemProcessor(qualityPipelineFactory.Object, shelfLifeFactory.Object); // Execution var result = factory.Process(newItem); // Assert Assert.IsNotNull(result); // If the pipeline has been executed correctly the quality should be = ( initial * 2 ) - 1 = 7 const int expectedValue = (initialQuality * 2) - 1; Assert.AreEqual(expectedValue, result.Quality); }
public void Success_ExceptionFromFactoryIsCaught() { // Setup const int initialQuality = 4; var newItem = new Item("Some Stock Item", -3, initialQuality, QualityStrategy.LinearDecrease, ShelfLifeStrategy.LinearDecrease) as IInventoryItem; // Set up the shelf life factory to return a mocked algorithm so we can check that the algorithm is called var shelfLifeFactory = new Mock <IShelfLifeAlgorithmFactory>(); shelfLifeFactory.Setup(f => f.Create(ShelfLifeStrategy.LinearDecrease)) .Throws(new Exception()); // Setup a basic quality pipeline factory to return two elements var qualityPipelineFactory = new Mock <IQualityPipelineFactory>(MockBehavior.Strict); var factory = new ItemProcessor(qualityPipelineFactory.Object, shelfLifeFactory.Object); // Execution var result = factory.Process(newItem); // Assert Assert.IsNull(result); }