Exemplo n.º 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);
        }