private static void TestCombinedSectionsFinalResultsTemporal(BenchmarkTestInput input,
                                                                     BenchmarkTestResult result)
        {
            var assembler = new CommonFailureMechanismSectionAssembler();

            var calculatedResults = assembler
                                    .DetermineCombinedResultPerCommonSectionWbi3C1(
                input.ExpectedCombinedSectionResultPerFailureMechanism,
                true).ToArray();
            var expectedResults = input.ExpectedCombinedSectionResultTemporal.ToArray();

            try
            {
                Assert.AreEqual(expectedResults.Length, calculatedResults.Length);
                for (int i = 0; i < expectedResults.Length; i++)
                {
                    Assert.AreEqual(expectedResults[i].SectionStart, calculatedResults[i].SectionStart, 0.01);
                    Assert.AreEqual(expectedResults[i].SectionEnd, calculatedResults[i].SectionEnd, 0.01);
                    Assert.AreEqual(expectedResults[i].Category, calculatedResults[i].Category);
                }

                result.AreEqualAssemblyResultCombinedSectionsResultsTemporal = true;
                result.MethodResults.Wbi3C1T = true;
            }
            catch (AssertionException)
            {
                result.AreEqualAssemblyResultCombinedSectionsResultsTemporal = false;
                result.MethodResults.Wbi3C1T = false;
            }
        }
        private static void TestGeneratedCombinedSections(BenchmarkTestInput input, BenchmarkTestResult result)
        {
            var assembler = new CommonFailureMechanismSectionAssembler();
            // WBI-3A-1
            var combinedSections = assembler.FindGreatestCommonDenominatorSectionsWbi3A1(
                input.ExpectedFailureMechanismsResults.Select(
                    fm => new FailureMechanismSectionListWithFailureMechanismId(fm.Name,
                                                                                fm.Sections.Select(
                                                                                    s => new FailureMechanismSection(s.Start, s.End))))
                .ToArray()
                , input.Length);

            try
            {
                Assert.IsNotNull(combinedSections);
                var expectedSections   = input.ExpectedCombinedSectionResult.ToArray();
                var calculatedSections = combinedSections.Sections.ToArray();
                Assert.AreEqual(expectedSections.Length, calculatedSections.Length);
                for (int i = 0; i < expectedSections.Length; i++)
                {
                    Assert.AreEqual(expectedSections[i].SectionStart, calculatedSections[i].SectionStart, 0.01);
                    Assert.AreEqual(expectedSections[i].SectionEnd, calculatedSections[i].SectionEnd, 0.01);
                }

                result.AreEqualAssemblyResultCombinedSections = true;
                result.MethodResults.Wbi3A1 = true;
            }
            catch (AssertionException)
            {
                result.AreEqualAssemblyResultCombinedSections = false;
                result.MethodResults.Wbi3A1 = false;
            }
        }
        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;
        }
示例#4
0
 private static string ReplaceCategoriesKeywordsWithResult(string template, BenchmarkTestResult result)
 {
     template = template.Replace("$AreEqualCategoriesListAssessmentSection$",
                                 ToResultText(result.AreEqualCategoriesListAssessmentSection));
     template = template.Replace("$AreEqualCategoriesListInterpretationCategories$",
                                 ToResultText(result.AreEqualCategoriesListInterpretationCategories));
     return(template);
 }
示例#5
0
 private static string ReplaceFinalVerdictKeywordsWithResult(string template, BenchmarkTestResult result)
 {
     template = template.Replace("$AreEqualAssemblyResultFinalVerdict$",
                                 ToResultText(result.AreEqualAssemblyResultFinalVerdict));
     template = template.Replace("$AreEqualAssemblyResultFinalVerdictProbability$",
                                 ToResultText(result.AreEqualAssemblyResultFinalVerdictProbability));
     template = template.Replace("$AreEqualAssemblyResultFinalVerdictProbabilityTemporal$",
                                 ToResultText(result.AreEqualAssemblyResultFinalVerdictProbabilityTemporal));
     template = template.Replace("$AreEqualAssemblyResultFinalVerdictTemporal$",
                                 ToResultText(result.AreEqualAssemblyResultFinalVerdictTemporal));
     return(template);
 }
        /// <summary>
        /// Test the assembly of combined sections.
        /// </summary>
        /// <param name="input">The input.</param>
        /// <param name="result">The result.</param>
        public static void TestAssemblyOfCombinedSections(BenchmarkTestInput input, BenchmarkTestResult result)
        {
            TestGeneratedCombinedSections(input, result);
            TestCombinedSectionsFinalResults(input, result);
            TestCombinedSectionsFinalResultsTemporal(input, result);

            foreach (FailureMechanismSectionListWithFailureMechanismId failureMechanismsCombinedResult in input
                     .ExpectedCombinedSectionResultPerFailureMechanism)
            {
                var mechanism = input.ExpectedFailureMechanismsResults.First(r => r.MechanismId == failureMechanismsCombinedResult.FailureMechanismId);
                TestCombinedSectionsFailureMechanismResults(input, result, mechanism.Name, failureMechanismsCombinedResult.FailureMechanismId, mechanism.HasLengthEffect);
            }
        }
示例#7
0
        /// <summary>
        /// Writes the report.
        /// </summary>
        /// <param name="order">The order.</param>
        /// <param name="result">The result.</param>
        /// <param name="reportDirectory">The report directory.</param>
        public static void WriteReport(int order, BenchmarkTestResult result, string reportDirectory)
        {
            string template = GetReportTemplate();

            template = template.Replace("$BenchmarkTestName$", result.TestName.Replace("_", @"\_"));
            template = template.Replace("$Order$", order.ToString());

            template = ReplaceFailureMechanismsTableWithResult(template, result);
            template = ReplaceCategoriesKeywordsWithResult(template, result);
            template = ReplaceFinalVerdictKeywordsWithResult(template, result);
            template = ReplaceCommonSectionsKeywordsWithResult(template, result);

            WriteReportToDestination(template, reportDirectory, GetTargetFileNameFromInputName(result.FileName));
        }
        /// <summary>
        /// Tests the norm categories.
        /// </summary>
        /// <param name="input">The input.</param>
        /// <param name="result">The result.</param>
        public static void TestEqualNormCategories(BenchmarkTestInput input, BenchmarkTestResult result)
        {
            var calculator = new CategoryLimitsCalculator();

            // WBI-2-1
            CategoriesList <AssessmentSectionCategory> categories = calculator.CalculateAssessmentSectionCategoryLimitsWbi21(
                new AssessmentSection((Probability)input.SignalingNorm, (Probability)input.LowerBoundaryNorm));
            CategoriesList <AssessmentSectionCategory> expectedCategories =
                input.ExpectedAssessmentSectionCategories;

            result.AreEqualCategoriesListAssessmentSection =
                AssertHelper.AssertEqualCategoriesList <AssessmentSectionCategory, EAssessmentGrade>(
                    expectedCategories, categories);
            result.MethodResults.Wbi21 = result.AreEqualCategoriesListAssessmentSection;
        }
        private static BenchmarkFailureMechanismTestResult GetBenchmarkTestFailureMechanismResult(
            BenchmarkTestResult result,
            string mechanismName, string mechanismId, bool hasLengthEffect)
        {
            var failureMechanismTestResult = result.FailureMechanismResults.FirstOrDefault(fmr => fmr.MechanismId == mechanismId);

            if (failureMechanismTestResult == null)
            {
                failureMechanismTestResult =
                    BenchmarkTestFailureMechanismResultFactory.CreateFailureMechanismTestResult(mechanismName, mechanismId, hasLengthEffect);
                result.FailureMechanismResults.Add(failureMechanismTestResult);
            }

            return(failureMechanismTestResult);
        }
        /// <summary>
        /// Test the failure mechanism assembly.
        /// </summary>
        /// <param name="expectedFailureMechanismResult">The expected failure mechanism result.</param>
        /// <param name="testResult">The test result.</param>
        /// <param name="interpretationCategories">The interpretation categories needed to translate a probability to an interpretation category.</param>
        public static void TestFailureMechanismAssembly(ExpectedFailureMechanismResult expectedFailureMechanismResult,
                                                        BenchmarkTestResult testResult, CategoriesList <InterpretationCategory> interpretationCategories)
        {
            var failureMechanismTestResult =
                GetBenchmarkTestFailureMechanismResult(testResult, expectedFailureMechanismResult.Name, expectedFailureMechanismResult.MechanismId, expectedFailureMechanismResult.HasLengthEffect);

            var failureMechanismTester =
                expectedFailureMechanismResult.HasLengthEffect
                    ? new FailureMechanismWithLengthEffectResultTester(testResult.MethodResults, expectedFailureMechanismResult, interpretationCategories) as IFailureMechanismResultTester
                    : new FailureMechanismResultTester(testResult.MethodResults, expectedFailureMechanismResult, interpretationCategories);

            failureMechanismTestResult.AreEqualCombinedAssessmentResultsPerSection =
                failureMechanismTester.TestCombinedAssessment();
            failureMechanismTestResult.AreEqualAssessmentResultPerAssessmentSection =
                failureMechanismTester.TestAssessmentSectionResult();
            failureMechanismTestResult.AreEqualAssessmentResultPerAssessmentSectionTemporal =
                failureMechanismTester.TestAssessmentSectionResultTemporal();
        }
        public void RunBenchmarkTest(string testName, string fileName)
        {
            BenchmarkTestInput  input      = AssemblyExcelFileReader.Read(fileName, testName);
            BenchmarkTestResult testResult = new BenchmarkTestResult(fileName, testName);

            BenchmarkTestRunner.TestEqualNormCategories(input, testResult);
            BenchmarkTestRunner.TestEqualInterpretationCategories(input, testResult);

            foreach (ExpectedFailureMechanismResult expectedFailureMechanismResult in input.ExpectedFailureMechanismsResults)
            {
                BenchmarkTestRunner.TestFailureMechanismAssembly(expectedFailureMechanismResult, testResult,
                                                                 input.ExpectedInterpretationCategories);
            }

            BenchmarkTestRunner.TestFinalVerdictAssembly(input, testResult);

            BenchmarkTestRunner.TestAssemblyOfCombinedSections(input, testResult);

            testResults[testName] = testResult;
        }
        private static void TestCombinedSectionsFailureMechanismResults(BenchmarkTestInput input,
                                                                        BenchmarkTestResult result, string mechanismName, string mechanismId, bool hasLengthEffect)
        {
            var assembler = new CommonFailureMechanismSectionAssembler();

            var combinedSections            = new FailureMechanismSectionList(input.ExpectedCombinedSectionResult);
            var failureMechanismSectionList = new FailureMechanismSectionList(
                input.ExpectedFailureMechanismsResults.First(fm => fm.MechanismId == mechanismId).Sections
                .OfType <ExpectedFailureMechanismSection>()
                .Select(CreateExpectedFailureMechanismSectionWithResult));

            var calculatedSectionResults = assembler.TranslateFailureMechanismResultsToCommonSectionsWbi3B1(
                failureMechanismSectionList,
                combinedSections);

            var calculatedSections = calculatedSectionResults.Sections.OfType <FailureMechanismSectionWithCategory>().ToArray();
            var expectedSections   = input.ExpectedCombinedSectionResultPerFailureMechanism.First(l => l.FailureMechanismId == mechanismId).Sections
                                     .OfType <FailureMechanismSectionWithCategory>().ToArray();

            var failureMechanismResult = GetBenchmarkTestFailureMechanismResult(result, mechanismName, mechanismId, hasLengthEffect);

            try
            {
                Assert.AreEqual(expectedSections.Length, calculatedSections.Length);
                for (int i = 0; i < expectedSections.Length; i++)
                {
                    Assert.AreEqual(expectedSections[i].SectionStart, calculatedSections[i].SectionStart, 0.01);
                    Assert.AreEqual(expectedSections[i].SectionEnd, calculatedSections[i].SectionEnd, 0.01);
                    Assert.AreEqual(expectedSections[i].Category, calculatedSections[i].Category);
                }

                failureMechanismResult.AreEqualCombinedResultsCombinedSections = true;
                result.MethodResults.Wbi3B1 = BenchmarkTestHelper.GetUpdatedMethodResult(result.MethodResults.Wbi3B1, true);
            }
            catch (AssertionException e)
            {
                Console.WriteLine("Error matching combined sections for {0}: {1}", failureMechanismResult.Name, e.Message);
                failureMechanismResult.AreEqualCombinedResultsCombinedSections = false;
                result.MethodResults.Wbi3B1 = false;
            }
        }
示例#13
0
        public void RunBenchmarkTest()
        {
            var testDirectory = Path.Combine(BenchmarkTestHelper.GetBenchmarkTestsDirectory(), "testdefinitions");
            var fileName      = Directory.GetFiles(testDirectory, "*traject 30-4*.xlsx").First();
            var testName      = BenchmarkTestHelper.GetTestName(fileName);

            BenchmarkTestInput  input      = AssemblyExcelFileReader.Read(fileName, testName);
            BenchmarkTestResult testResult = new BenchmarkTestResult(fileName, testName);

            BenchmarkTestRunner.TestEqualNormCategories(input, testResult);
            BenchmarkTestRunner.TestEqualInterpretationCategories(input, testResult);

            foreach (ExpectedFailureMechanismResult expectedFailureMechanismResult in input
                     .ExpectedFailureMechanismsResults)
            {
                BenchmarkTestRunner.TestFailureMechanismAssembly(expectedFailureMechanismResult,
                                                                 testResult,
                                                                 input.ExpectedInterpretationCategories);
            }

            BenchmarkTestRunner.TestFinalVerdictAssembly(input, testResult);

            BenchmarkTestRunner.TestAssemblyOfCombinedSections(input, testResult);
        }
示例#14
0
 private static string ReplaceCommonSectionsKeywordsWithResult(string template, BenchmarkTestResult result)
 {
     template = template.Replace("$AreEqualAssemblyResultCombinedSections$",
                                 ToResultText(result.AreEqualAssemblyResultCombinedSections));
     template = template.Replace("$AreEqualAssemblyResultCombinedSectionsResults$",
                                 ToResultText(result.AreEqualAssemblyResultCombinedSectionsResults));
     template = template.Replace("$AreEqualAssemblyResultCombinedSectionsResultsTemporal$",
                                 ToResultText(result.AreEqualAssemblyResultCombinedSectionsResultsTemporal));
     return(template);
 }
示例#15
0
        private static string ReplaceFailureMechanismsTableWithResult(string template, BenchmarkTestResult result)
        {
            var str = "";

            for (var index = 0; index < result.FailureMechanismResults.Count; index++)
            {
                var m = result.FailureMechanismResults[index];
                str += m.Name + " & " + m.MechanismId + " & " + m.HasLengthEffect + " & " +
                       ToResultText(m.AreEqualCombinedAssessmentResultsPerSection) + " & " +
                       ToResultText(m.AreEqualAssessmentResultPerAssessmentSection) + " & " +
                       ToResultText(m.AreEqualAssessmentResultPerAssessmentSectionTemporal) + " & " +
                       ToResultText(m.AreEqualCombinedResultsCombinedSections);
                if (index != result.FailureMechanismResults.Count - 1)
                {
                    str += @" \B \\ \T" + "\n";
                }
            }

            return(template.Replace("$FailureMechanismResultsTable$", str));
        }
 /// <summary>
 /// Test the final verdict assembly.
 /// </summary>
 /// <param name="input">The input.</param>
 /// <param name="result">The result.</param>
 public static void TestFinalVerdictAssembly(BenchmarkTestInput input, BenchmarkTestResult result)
 {
     TestProbabilisticFailureMechanismsResults(input, result);
     TestProbabilisticFailureMechanismsResultsTemporal(input, result);
 }