Пример #1
0
        public string GetCalculatedProbabilityValidationError(Func <double> getProbabilityFunc)
        {
            if (getProbabilityFunc == null)
            {
                throw new ArgumentNullException(nameof(getProbabilityFunc));
            }

            T[] relevantScenarios = sectionResult.GetRelevantCalculationScenarios(calculationScenarios, intersectionFunc).ToArray();

            if (relevantScenarios.Length == 0)
            {
                return(Resources.FailureMechanismSectionResultRowWithCalculatedProbabilityErrorProvider_No_relevant_calculation_scenarios_present);
            }

            if (Math.Abs(CalculationScenarioHelper.GetTotalContribution(relevantScenarios) - 1.0) > 1e-6)
            {
                return(Resources.FailureMechanismSectionResultRowWithCalculatedProbabilityErrorProvider_Scenario_contribution_for_this_section_not_100);
            }

            if (!relevantScenarios.All(s => s.HasOutput))
            {
                return(Resources.FailureMechanismSectionResultRowWithCalculatedProbabilityErrorProvider_Not_all_relevant_calculation_scenarios_have_been_executed);
            }

            if (double.IsNaN(getProbabilityFunc()))
            {
                return(Resources.FailureMechanismSectionResultRowWithCalculatedProbabilityErrorProvider_All_relevant_calculation_scenarios_must_have_valid_output);
            }

            return(string.Empty);
        }
        public void GetTotalContribution_CalculationScenariosNull_ThrowsArgumentNullException()
        {
            // Call
            void Call() => CalculationScenarioHelper.GetTotalContribution <ICalculationScenario>(null);

            // Assert
            var exception = Assert.Throws <ArgumentNullException>(Call);

            Assert.AreEqual("calculationScenarios", exception.ParamName);
        }
        public void GetTotalContribution_WithCalculationScenarios_ReturnsTotalContribution()
        {
            // Setup
            var calculationScenario1 = new TestCalculationScenario
            {
                Contribution = (RoundedDouble)0.4323
            };
            var calculationScenario2 = new TestCalculationScenario
            {
                Contribution = (RoundedDouble)0.1226
            };

            // Call
            RoundedDouble totalContribution = CalculationScenarioHelper.GetTotalContribution(new[]
            {
                calculationScenario1,
                calculationScenario2
            });

            // Assert
            RoundedDouble expectedTotalContribution = calculationScenario1.Contribution + calculationScenario2.Contribution;

            Assert.AreEqual(expectedTotalContribution, totalContribution);
        }