Esempio n. 1
0
        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);
        }
Esempio n. 3
0
        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());
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        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);
        }