Beispiel #1
0
        public void Success_QCPipelineAttached()
        {
            // Setup
            var qualityStrategyExpected = QualityStrategy.LinearIncrease;
            var item = new Item("NewItem", 1, 3, qualityStrategyExpected, ShelfLifeStrategy.Stable);
            var qualityFactoryMock = new Mock <IQualityAlgorithmFactory>(MockBehavior.Strict);
            var qcList             = new List <IQualityAlgorithm>()
            {
                new QualityNeverNegativeAlgorithm()
            };

            // Create a mock that expects the sort of strategy that is represented in the item above
            var expectedReturn = new LinearIncreaseAlgorithm();

            qualityFactoryMock.Setup(f => f.Create(qualityStrategyExpected))
            .Returns(expectedReturn);

            var factory = new QualityPipelineFactory(qualityFactoryMock.Object, qcList);

            // Execution
            var result = factory.CreatePipeline(item);

            // Assert
            // Since we haven't provided any QC steps, we should have a single element
            Assert.AreEqual(1 + qcList.Count, result.Count);
            Assert.AreEqual(expectedReturn, result[0]);

            for (var i = 0; i < qcList.Count; i++)
            {
                Assert.AreEqual(qcList[i], result[1 + i]);
            }
        }
        public void Success_AlwaysIncreasesQualityZeroValue()
        {
            // Setup
            const int qualityScore = 0;
            var       item         = new Item("Name", 1, qualityScore, QualityStrategy.Stable, ShelfLifeStrategy.Stable);
            var       algorithm    = new LinearIncreaseAlgorithm();

            // Execution
            algorithm.Run(item, item);

            // Assert
            Assert.AreEqual(qualityScore + 1, item.Quality);
        }