Index: Riskeer/AssemblyTool/src/Riskeer.AssemblyTool.KernelWrapper/Calculators/Assembly/FailureMechanismSectionAssemblyCalculator.cs =================================================================== diff -u -r5f7afeb5da4572e7e4c9932d7eecb5fac86f44aa -r5255068f26299b26ed9ee7fd0266e4cfc85c7dbd --- Riskeer/AssemblyTool/src/Riskeer.AssemblyTool.KernelWrapper/Calculators/Assembly/FailureMechanismSectionAssemblyCalculator.cs (.../FailureMechanismSectionAssemblyCalculator.cs) (revision 5f7afeb5da4572e7e4c9932d7eecb5fac86f44aa) +++ Riskeer/AssemblyTool/src/Riskeer.AssemblyTool.KernelWrapper/Calculators/Assembly/FailureMechanismSectionAssemblyCalculator.cs (.../FailureMechanismSectionAssemblyCalculator.cs) (revision 5255068f26299b26ed9ee7fd0266e4cfc85c7dbd) @@ -69,7 +69,7 @@ IAssessmentResultsTranslator kernel = factory.CreateFailureMechanismSectionAssemblyKernel(); - FailurePathSectionAssemblyResult output = kernel.TranslateAssessmentResultWbi0A2(input.IsRelevant, + FailurePathSectionAssemblyResult output = kernel.TranslateAssessmentResultWbi0A2(GetInitialMechanismProbabilitySpecification(input), CreateProbability(input.InitialProfileProbability), CreateProbability(input.InitialSectionProbability), input.FurtherAnalysisNeeded, @@ -89,6 +89,15 @@ } } + private static ESectionInitialMechanismProbabilitySpecification GetInitialMechanismProbabilitySpecification(FailureMechanismSectionAssemblyInput input) + { + return !input.IsRelevant + ? ESectionInitialMechanismProbabilitySpecification.NotRelevant + : input.HasProbabilitySpecified + ? ESectionInitialMechanismProbabilitySpecification.RelevantWithProbabilitySpecification + : ESectionInitialMechanismProbabilitySpecification.RelevantNoProbabilitySpecification; + } + private static Probability CreateProbability(double value) { return new Probability(value); Index: Riskeer/AssemblyTool/test/Riskeer.AssemblyTool.KernelWrapper.Test/Calculators/Assembly/FailureMechanismSectionAssemblyCalculatorTest.cs =================================================================== diff -u -r841793d896b63b42a504a5f8761609fbe23fec99 -r5255068f26299b26ed9ee7fd0266e4cfc85c7dbd --- Riskeer/AssemblyTool/test/Riskeer.AssemblyTool.KernelWrapper.Test/Calculators/Assembly/FailureMechanismSectionAssemblyCalculatorTest.cs (.../FailureMechanismSectionAssemblyCalculatorTest.cs) (revision 841793d896b63b42a504a5f8761609fbe23fec99) +++ Riskeer/AssemblyTool/test/Riskeer.AssemblyTool.KernelWrapper.Test/Calculators/Assembly/FailureMechanismSectionAssemblyCalculatorTest.cs (.../FailureMechanismSectionAssemblyCalculatorTest.cs) (revision 5255068f26299b26ed9ee7fd0266e4cfc85c7dbd) @@ -89,18 +89,24 @@ } [Test] - public void AssembleFailureMechanismSection_WithValidInput_InputCorrectlySendToKernel() + [TestCase(false, true, ESectionInitialMechanismProbabilitySpecification.NotRelevant)] + [TestCase(false, false, ESectionInitialMechanismProbabilitySpecification.NotRelevant)] + [TestCase(true, true, ESectionInitialMechanismProbabilitySpecification.RelevantWithProbabilitySpecification)] + [TestCase(true, false, ESectionInitialMechanismProbabilitySpecification.RelevantNoProbabilitySpecification)] + public void AssembleFailureMechanismSection_WithValidInput_InputCorrectlySendToKernel( + bool isRelevant, bool hasProbabilitySpecified, + ESectionInitialMechanismProbabilitySpecification expectedInitialMechanismProbabilitySpecification) { // Setup const double signalingNorm = 0.0001; const double lowerLimitNorm = 0.001; var random = new Random(21); - var input = new FailureMechanismSectionAssemblyInput(lowerLimitNorm, - signalingNorm, - random.NextBoolean(), random.NextDouble(), - random.NextDouble(), - random.NextBoolean(), random.NextDouble(), random.NextDouble()); + var input = new FailureMechanismSectionAssemblyInput(lowerLimitNorm, signalingNorm, + isRelevant, hasProbabilitySpecified, + random.NextDouble(), random.NextDouble(), + random.NextBoolean(), + random.NextDouble(), random.NextDouble()); using (new AssemblyToolKernelFactoryConfig()) { var factory = (TestAssemblyToolKernelFactory) AssemblyToolKernelFactory.Instance; @@ -109,9 +115,8 @@ categoryLimitsKernel.CategoryLimits = categoryLimits; FailureMechanismSectionAssemblyKernelStub failureMechanismSectionAssemblyKernel = factory.LastCreatedFailureMechanismSectionAssemblyKernel; - failureMechanismSectionAssemblyKernel.FailurePathSectionAssemblyResult = new FailurePathSectionAssemblyResult(new Probability(random.NextDouble()), - new Probability(random.NextDouble()), - random.NextEnumValue()); + failureMechanismSectionAssemblyKernel.FailurePathSectionAssemblyResult = new FailurePathSectionAssemblyResult( + new Probability(random.NextDouble(0.0, 0.01)), new Probability(random.NextDouble(0.01, 0.02)), random.NextEnumValue()); var calculator = new FailureMechanismSectionAssemblyCalculator(factory); @@ -124,7 +129,7 @@ ProbabilityAssert.AreEqual(signalingNorm, assessmentSection.FailureProbabilitySignallingLimit); Assert.AreSame(categoryLimits, failureMechanismSectionAssemblyKernel.Categories); - Assert.AreEqual(input.IsRelevant, failureMechanismSectionAssemblyKernel.InitialMechanismProbabilitySpecification); + Assert.AreEqual(expectedInitialMechanismProbabilitySpecification, failureMechanismSectionAssemblyKernel.InitialMechanismProbabilitySpecification); Assert.AreEqual(input.InitialProfileProbability, failureMechanismSectionAssemblyKernel.ProbabilityInitialMechanismProfile); Assert.AreEqual(input.InitialSectionProbability, failureMechanismSectionAssemblyKernel.ProbabilityInitialMechanismSection); Assert.AreEqual(input.FurtherAnalysisNeeded, failureMechanismSectionAssemblyKernel.NeedsRefinement); @@ -263,10 +268,9 @@ const double signalingNorm = 0.0001; var random = new Random(21); - return new FailureMechanismSectionAssemblyInput(lowerLimitNorm, - signalingNorm, - random.NextBoolean(), random.NextDouble(), - random.NextDouble(), + return new FailureMechanismSectionAssemblyInput(lowerLimitNorm, signalingNorm, + random.NextBoolean(), random.NextBoolean(), + random.NextDouble(), random.NextDouble(), random.NextBoolean(), random.NextDouble(), random.NextDouble()); }