public void CalculatCostService_1Plus2Returns3()
        {
            //Category cat = new Category();
            CalculateCostService service = new CalculateCostService();

            int result = service.calc(1, 2);

            Assert.AreEqual(3, result);
        }
Пример #2
0
        public Category Get()
        {
            Category myCat = new Category();

            myCat.Id   = 123;
            myCat.Name = "Cheeses";
            CalculateCostService myCalc = new CalculateCostService();

            myCalc.calc(1, 2);
            return(myCat);
        }
Пример #3
0
        public void CalculateCostService_ThreeRuns200Features_MoreCombinationsYieldBetterResult()
        {
            // Arrange
            var numberOfFeatures = 50;

            var features = new List <Feature>();

            for (int i = 0; i < numberOfFeatures; i++)
            {
                var costOfDelay         = i % 17 * 0.5m;
                var developmentDuration = i % 13;

                features.Add(new Feature($"feature #{i}", costOfDelay, developmentDuration));
            }

            var candidate = new CalculateCostService(new CostCalculationHelper());

            // Act
            var combinationsForFirstRun = CreateCombinations(features, 10);
            var resultsOfFirstRun       = new List <CombinationCostResult>();

            foreach (var combination in combinationsForFirstRun)
            {
                var result = candidate.Calculate(combination, new IEffect[0]);

                resultsOfFirstRun.Add(result);
            }

            var combinationsForSecondRun = CreateCombinations(features, 1000);
            var resultsOfSecondRun       = new List <CombinationCostResult>();

            foreach (var combination in combinationsForSecondRun)
            {
                var result = candidate.Calculate(combination, new IEffect[0]);

                resultsOfSecondRun.Add(result);
            }

            var combinationsForThirdRun = CreateCombinations(features, 100000);
            var resultsOfThirdRun       = new List <CombinationCostResult>();

            foreach (var combination in combinationsForThirdRun)
            {
                var result = candidate.Calculate(combination, new IEffect[0]);

                resultsOfThirdRun.Add(result);
            }

            // Assert
            Assert.AreEqual(10, resultsOfFirstRun.Count);
            Assert.AreEqual(1000, resultsOfSecondRun.Count);
            Assert.AreEqual(100000, resultsOfThirdRun.Count);

            var rankedResultsOfFirstRun  = resultsOfFirstRun.OrderBy(r => r.TotalCostOfDelay).ToList();
            var rankedResultsOfSecondRun = resultsOfSecondRun.OrderBy(r => r.TotalCostOfDelay).ToList();
            var rankedResultsOfThirdRun  = resultsOfThirdRun.OrderBy(r => r.TotalCostOfDelay).ToList();

            var bestResultOfFirstRun  = rankedResultsOfFirstRun.First();
            var bestResultOfSecondRun = rankedResultsOfSecondRun.First();
            var bestResultOfThirdRun  = rankedResultsOfThirdRun.First();

            Assert.IsTrue(bestResultOfSecondRun.TotalCostOfDelay < bestResultOfFirstRun.TotalCostOfDelay);
            Assert.IsTrue(bestResultOfThirdRun.TotalCostOfDelay < bestResultOfSecondRun.TotalCostOfDelay);
        }