Example #1
0
        public async void CalculateServiceCalculateVarianceShouldCalculateVariance()
        {
            //Arrange
            var optimistic  = _fixture.Create <double>();
            var pessimistic = _fixture.Create <double>();

            //Act
            var sumStDeviations = await _calculateService.CalculateStDeviation(optimistic, pessimistic);

            var assertResult = Math.Round(sumStDeviations * sumStDeviations, 4); //According to its formula (See the description upper)
            var result       = await _calculateService.CalculateVariance(sumStDeviations);

            //Assert
            result.Should().Be(assertResult);
        }
Example #2
0
        public async Task <SummaryAssessment> CalculateTasks(double desiredCompletionTime, string estimationTimeFormat)
        {
            var tasksItems = await GetTasksList();

            var totalAssessments = new SummaryAssessment();

            totalAssessments.DesiredCompletionTime = desiredCompletionTime;
            totalAssessments.EstimationTimeFormat  = estimationTimeFormat;

            foreach (var taskItem in tasksItems)
            {
                taskItem.Assessments.Estimation  = 0;
                taskItem.Assessments.StDeviation = 0;
                taskItem.Assessments.Variance    = 0;
            }

            foreach (var taskItem in tasksItems)
            {
                var optimistic  = taskItem.Assessments.Optimistic;
                var mostLikely  = taskItem.Assessments.MostLikely;
                var pessimistic = taskItem.Assessments.Pessimistic;
                var deviation   = await _calculateService.CalculateStDeviation(optimistic, pessimistic);

                taskItem.Assessments.Estimation = await _calculateService.CalculateEstimation(optimistic, mostLikely, pessimistic);

                taskItem.Assessments.StDeviation += deviation;
                taskItem.Assessments.Variance    += await _calculateService.CalculateVariance(deviation);

                totalAssessments.SumEstimation  += taskItem.Assessments.Estimation;
                totalAssessments.SumStDeviation += taskItem.Assessments.StDeviation;
                totalAssessments.SumVariance    += taskItem.Assessments.Variance;
            }

            totalAssessments.PercentageOfCompletion = await _calculateService.CalculatePercentageOfCompletion(totalAssessments.SumEstimation, totalAssessments.SumVariance, desiredCompletionTime);

            await _cacheService.Upadate <SummaryAssessment>(nameof(SummaryAssessment), totalAssessments);

            return(totalAssessments);
        }