Index: Riskeer/Common/src/Riskeer.Common.Data/AssemblyTool/FailureMechanismSectionAssemblyResultFactory.cs
===================================================================
diff -u -r802381e788dc1b766e4ccfa3bbf98be8749a638e -r0160b5685b018bea049ea3dd3e0937a8e9a79696
--- Riskeer/Common/src/Riskeer.Common.Data/AssemblyTool/FailureMechanismSectionAssemblyResultFactory.cs (.../FailureMechanismSectionAssemblyResultFactory.cs) (revision 802381e788dc1b766e4ccfa3bbf98be8749a638e)
+++ Riskeer/Common/src/Riskeer.Common.Data/AssemblyTool/FailureMechanismSectionAssemblyResultFactory.cs (.../FailureMechanismSectionAssemblyResultFactory.cs) (revision 0160b5685b018bea049ea3dd3e0937a8e9a79696)
@@ -107,12 +107,13 @@
///
/// The section result to assemble for.
/// The to assemble with.
- /// The to calculate the probability with.
- /// A .
+ /// The
+ /// to assemble with.
/// Thrown when any argument is null.
/// Thrown when the section could not be successfully assembled.
public static FailureMechanismSectionAssemblyResultWrapper AssembleSection(
- AdoptableFailureMechanismSectionResult sectionResult, IAssessmentSection assessmentSection, Func calculateProbabilityFunc)
+ AdoptableFailureMechanismSectionResult sectionResult, IAssessmentSection assessmentSection,
+ IFailureMechanismSectionResultCalculateProbabilityStrategy calculateProbabilityStrategy)
{
if (sectionResult == null)
{
@@ -124,14 +125,14 @@
throw new ArgumentNullException(nameof(assessmentSection));
}
- if (calculateProbabilityFunc == null)
+ if (calculateProbabilityStrategy == null)
{
- throw new ArgumentNullException(nameof(calculateProbabilityFunc));
+ throw new ArgumentNullException(nameof(calculateProbabilityStrategy));
}
double initialFailureMechanismResultSectionProbability =
sectionResult.InitialFailureMechanismResultType == AdoptableInitialFailureMechanismResultType.Adopt
- ? calculateProbabilityFunc()
+ ? calculateProbabilityStrategy.CalculateSectionProbability()
: sectionResult.ManualInitialFailureMechanismResultSectionProbability;
bool hasProbabilitySpecified = sectionResult.InitialFailureMechanismResultType != AdoptableInitialFailureMechanismResultType.NoFailureProbability;
@@ -142,7 +143,7 @@
return PerformAssembly(input);
}
-
+
///
/// Assembles a failure mechanism section result based on the input arguments.
///
Index: Riskeer/Common/test/Riskeer.Common.Data.Test/AssemblyTool/FailureMechanismSectionAssemblyResultFactoryTest.cs
===================================================================
diff -u -r802381e788dc1b766e4ccfa3bbf98be8749a638e -r0160b5685b018bea049ea3dd3e0937a8e9a79696
--- Riskeer/Common/test/Riskeer.Common.Data.Test/AssemblyTool/FailureMechanismSectionAssemblyResultFactoryTest.cs (.../FailureMechanismSectionAssemblyResultFactoryTest.cs) (revision 802381e788dc1b766e4ccfa3bbf98be8749a638e)
+++ Riskeer/Common/test/Riskeer.Common.Data.Test/AssemblyTool/FailureMechanismSectionAssemblyResultFactoryTest.cs (.../FailureMechanismSectionAssemblyResultFactoryTest.cs) (revision 0160b5685b018bea049ea3dd3e0937a8e9a79696)
@@ -382,11 +382,12 @@
{
// Setup
var mocks = new MockRepository();
+ var calculateStrategy = mocks.Stub();
var assessmentSection = mocks.Stub();
mocks.ReplayAll();
// Call
- void Call() => FailureMechanismSectionAssemblyResultFactory.AssembleSection(null, assessmentSection, () => double.NaN);
+ void Call() => FailureMechanismSectionAssemblyResultFactory.AssembleSection(null, assessmentSection, calculateStrategy);
// Assert
var exception = Assert.Throws(Call);
@@ -399,18 +400,22 @@
public void AssembleSectionAdoptableSectionWithoutProfileProbability_AssessmentSectionNull_ThrowsArgumentNullException()
{
// Setup
+ var mocks = new MockRepository();
+ var calculateStrategy = mocks.Stub();
+ mocks.ReplayAll();
+
var sectionResult = new AdoptableFailureMechanismSectionResult(FailureMechanismSectionTestFactory.CreateFailureMechanismSection());
// Call
- void Call() => FailureMechanismSectionAssemblyResultFactory.AssembleSection(sectionResult, null, () => double.NaN);
+ void Call() => FailureMechanismSectionAssemblyResultFactory.AssembleSection(sectionResult, null, calculateStrategy);
// Assert
var exception = Assert.Throws(Call);
Assert.AreEqual("assessmentSection", exception.ParamName);
}
[Test]
- public void AssembleSectionAdoptableSectionWithoutProfileProbability_CalculateProbabilityFuncNull_ThrowsArgumentNullException()
+ public void AssembleSectionAdoptableSectionWithoutProfileProbability_CalculateStrategyNull_ThrowsArgumentNullException()
{
// Setup
var mocks = new MockRepository();
@@ -424,7 +429,7 @@
// Assert
var exception = Assert.Throws(Call);
- Assert.AreEqual("calculateProbabilityFunc", exception.ParamName);
+ Assert.AreEqual("calculateProbabilityStrategy", exception.ParamName);
mocks.VerifyAll();
}
@@ -444,6 +449,11 @@
var furtherAnalysisType = random.NextEnumValue();
double refinedSectionProbability = random.NextDouble();
+ var mocks = new MockRepository();
+ var calculateStrategy = mocks.Stub();
+ calculateStrategy.Stub(c => c.CalculateSectionProbability()).Return(calculatedSectionProbability);
+ mocks.ReplayAll();
+
var assessmentSection = new AssessmentSectionStub();
var sectionResult = new AdoptableFailureMechanismSectionResult(FailureMechanismSectionTestFactory.CreateFailureMechanismSection())
@@ -461,7 +471,7 @@
FailureMechanismSectionAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismSectionAssemblyCalculator;
// Call
- FailureMechanismSectionAssemblyResultFactory.AssembleSection(sectionResult, assessmentSection, () => calculatedSectionProbability);
+ FailureMechanismSectionAssemblyResultFactory.AssembleSection(sectionResult, assessmentSection, calculateStrategy);
// Assert
FailureMechanismSectionAssemblyInput calculatorInput = calculator.FailureMechanismSectionAssemblyInput;
@@ -485,6 +495,10 @@
public void AssembleSectionAdoptableSectionWithoutProfileProbability_CalculatorRan_ReturnsExpectedOutput()
{
// Setup
+ var mocks = new MockRepository();
+ var calculateStrategy = mocks.Stub();
+ mocks.ReplayAll();
+
var assessmentSection = new AssessmentSectionStub();
var sectionResult = new AdoptableFailureMechanismSectionResult(FailureMechanismSectionTestFactory.CreateFailureMechanismSection());
@@ -494,7 +508,7 @@
FailureMechanismSectionAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismSectionAssemblyCalculator;
// Call
- FailureMechanismSectionAssemblyResultWrapper result = FailureMechanismSectionAssemblyResultFactory.AssembleSection(sectionResult, assessmentSection, () => double.NaN);
+ FailureMechanismSectionAssemblyResultWrapper result = FailureMechanismSectionAssemblyResultFactory.AssembleSection(sectionResult, assessmentSection, calculateStrategy);
// Assert
Assert.AreSame(calculator.FailureMechanismSectionAssemblyResultOutput, result);
@@ -505,6 +519,10 @@
public void AssembleSectionAdoptableSectionWithoutProfileProbability_CalculatorThrowsException_ThrowsAssemblyException()
{
// Setup
+ var mocks = new MockRepository();
+ var calculateStrategy = mocks.Stub();
+ mocks.ReplayAll();
+
var assessmentSection = new AssessmentSectionStub();
var sectionResult = new AdoptableFailureMechanismSectionResult(FailureMechanismSectionTestFactory.CreateFailureMechanismSection());
@@ -515,7 +533,7 @@
calculator.ThrowExceptionOnCalculate = true;
// Call
- void Call() => FailureMechanismSectionAssemblyResultFactory.AssembleSection(sectionResult, assessmentSection, () => double.NaN);
+ void Call() => FailureMechanismSectionAssemblyResultFactory.AssembleSection(sectionResult, assessmentSection, calculateStrategy);
// Assert
var exception = Assert.Throws(Call);