private static void TestProbabilisticFailureMechanismsResults(BenchmarkTestInput input,
                                                                      BenchmarkTestResult result)
        {
            result.MethodResults.Wbi2B1 = false;
            AssessmentSectionResult assemblerResult = null;

            try
            {
                var assembler = new AssessmentGradeAssembler();
                assemblerResult = assembler.AssembleAssessmentSectionWbi2B1(
                    input.ExpectedFailureMechanismsResults.Select(fmr => fmr.ExpectedCombinedProbability),
                    input.ExpectedAssessmentSectionCategories, false);
            }
            catch (AssemblyException)
            {
                Assert.IsTrue(input.ExpectedSafetyAssessmentAssemblyResult.ExpectedCombinedAssessmentGrade ==
                              EExpectedAssessmentGrade.Exception);
                result.AreEqualAssemblyResultFinalVerdict            = true;
                result.AreEqualAssemblyResultFinalVerdictProbability = true;
                result.MethodResults.Wbi2B1 = true;
                return;
            }

            Assert.IsNotNull(assemblerResult);
            AssertHelper.AssertAreEqualProbabilities(
                input.ExpectedSafetyAssessmentAssemblyResult.ExpectedCombinedProbability,
                new Probability(assemblerResult.FailureProbability));
            Assert.AreEqual(
                input.ExpectedSafetyAssessmentAssemblyResult.ExpectedCombinedAssessmentGrade.ToEAssessmentGrade(),
                assemblerResult.Category);

            result.AreEqualAssemblyResultFinalVerdict            = true;
            result.AreEqualAssemblyResultFinalVerdictProbability = true;
            result.MethodResults.Wbi2B1 = true;
        }
        protected override void TestAssessmentSectionResultInternal()
        {
            var assembler = new FailureMechanismResultAssembler();

            if (ExpectedFailureMechanismResult != null)
            {
                FailureMechanismAssemblyResult result = null;
                try
                {
                    result = assembler.AssembleFailureMechanismWbi1B1(
                        ExpectedFailureMechanismResult.LengthEffectFactor,
                        ExpectedFailureMechanismResult.Sections.OfType <ExpectedFailureMechanismSection>()
                        .Select(s =>
                                new FailureMechanismSectionAssemblyResult(s.ExpectedCombinedProbabilitySection,
                                                                          s.ExpectedCombinedProbabilitySection,
                                                                          s.ExpectedInterpretationCategory)).ToArray(),
                        false);
                }
                catch (AssemblyException e)
                {
                    result = new FailureMechanismAssemblyResult(Probability.NaN, EFailureMechanismAssemblyMethod.Correlated);
                }

                AssertHelper.AssertAreEqualProbabilities(ExpectedFailureMechanismResult.ExpectedCombinedProbability, result.Probability);
                Assert.AreEqual(ExpectedFailureMechanismResult.ExpectedIsSectionsCorrelated, result.AssemblyMethod);
            }
        }
        protected override void TestAssessmentSectionResultTemporalInternal()
        {
            var assembler = new FailureMechanismResultAssembler();

            if (ExpectedFailureMechanismResult != null)
            {
                var result = assembler.AssembleFailureMechanismWbi1B1(
                    ExpectedFailureMechanismResult.LengthEffectFactor,
                    ExpectedFailureMechanismResult.Sections.OfType <ExpectedFailureMechanismSection>()
                    .Select(s =>
                            new FailureMechanismSectionAssemblyResult(s.ExpectedCombinedProbabilitySection,
                                                                      s.ExpectedCombinedProbabilitySection,
                                                                      s.ExpectedInterpretationCategory)).ToArray(),
                    true);

                AssertHelper.AssertAreEqualProbabilities(ExpectedFailureMechanismResult.ExpectedCombinedProbabilityTemporal, result.Probability);
                Assert.AreEqual(ExpectedFailureMechanismResult.ExpectedIsSectionsCorrelatedTemporal, result.AssemblyMethod);
            }
        }
Ejemplo n.º 4
0
        protected override void TestCombinedAssessmentInternal()
        {
            var assembler = new AssessmentResultsTranslator();

            if (ExpectedFailureMechanismResult != null)
            {
                var exception = new AssertionException("Errors occurred");
                foreach (var section in ExpectedFailureMechanismResult.Sections.OfType <ExpectedFailureMechanismSectionWithLengthEffect>())
                {
                    // WBI-0A-1 (direct with probability)
                    var result = assembler.TranslateAssessmentResultWbi0A2(
                        section.IsRelevant
                            ? double.IsNaN(section.InitialMechanismProbabilitySection) || double.IsNaN(section.InitialMechanismProbabilityProfile)
                                ? ESectionInitialMechanismProbabilitySpecification.RelevantNoProbabilitySpecification
                                : ESectionInitialMechanismProbabilitySpecification.RelevantWithProbabilitySpecification
                            : ESectionInitialMechanismProbabilitySpecification.NotRelevant,
                        section.InitialMechanismProbabilityProfile,
                        section.InitialMechanismProbabilitySection,
                        section.RefinementStatus,
                        section.RefinedProbabilityProfile,
                        section.RefinedProbabilitySection,
                        InterpretationCategories);

                    try
                    {
                        AssertHelper.AssertAreEqualProbabilities(section.ExpectedCombinedProbabilitySection, result.ProbabilitySection);
                        Assert.AreEqual(section.ExpectedInterpretationCategory, result.InterpretationCategory);
                    }
                    catch (AssertionException e)
                    {
                        exception.Data.Add(section.SectionName, e);
                    }
                }

                if (exception.Data.Count > 0)
                {
                    throw exception;
                }
            }
        }