Index: Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Data/GrassCoverErosionOutwardsFailureMechanismSectionResultAssemblyFactory.cs
===================================================================
diff -u -r6a9db55abb11d74aa021ee32a46a55dc963a58fe -r7fb2c9216edfe52ad09142d2775bc35408f0c445
--- Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Data/GrassCoverErosionOutwardsFailureMechanismSectionResultAssemblyFactory.cs (.../GrassCoverErosionOutwardsFailureMechanismSectionResultAssemblyFactory.cs) (revision 6a9db55abb11d74aa021ee32a46a55dc963a58fe)
+++ Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Data/GrassCoverErosionOutwardsFailureMechanismSectionResultAssemblyFactory.cs (.../GrassCoverErosionOutwardsFailureMechanismSectionResultAssemblyFactory.cs) (revision 7fb2c9216edfe52ad09142d2775bc35408f0c445)
@@ -64,5 +64,41 @@
throw new AssemblyException(e.Message, e);
}
}
+
+ ///
+ /// Assembles the detailed assessment results.
+ ///
+ /// The failure mechanism section result to assemble the
+ /// detailed assembly results for.
+ /// A based on the .
+ /// Thrown when
+ /// is null.
+ /// Thrown when the
+ /// could not be created.
+ public static FailureMechanismSectionAssemblyCategoryGroup AssembleDetailedAssessment(
+ GrassCoverErosionOutwardsFailureMechanismSectionResult failureMechanismSectionResult)
+ {
+ if (failureMechanismSectionResult == null)
+ {
+ throw new ArgumentNullException(nameof(failureMechanismSectionResult));
+ }
+
+ IAssemblyToolCalculatorFactory calculatorFactory = AssemblyToolCalculatorFactory.Instance;
+ IFailureMechanismSectionAssemblyCalculator calculator =
+ calculatorFactory.CreateFailureMechanismSectionAssemblyCalculator(AssemblyToolKernelFactory.Instance);
+
+ try
+ {
+ return calculator.AssembleDetailedAssessment(failureMechanismSectionResult.DetailedAssessmentResultForFactorizedSignalingNorm,
+ failureMechanismSectionResult.DetailedAssessmentResultForSignalingNorm,
+ failureMechanismSectionResult.DetailedAssessmentResultForMechanismSpecificLowerLimitNorm,
+ failureMechanismSectionResult.DetailedAssessmentResultForLowerLimitNorm,
+ failureMechanismSectionResult.DetailedAssessmentResultForFactorizedLowerLimitNorm);
+ }
+ catch (FailureMechanismSectionAssemblyCalculatorException e)
+ {
+ throw new AssemblyException(e.Message, e);
+ }
+ }
}
}
\ No newline at end of file
Index: Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Data.Test/GrassCoverErosionOutwardsFailureMechanismSectionResultAssemblyFactoryTest.cs
===================================================================
diff -u -r6a9db55abb11d74aa021ee32a46a55dc963a58fe -r7fb2c9216edfe52ad09142d2775bc35408f0c445
--- Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Data.Test/GrassCoverErosionOutwardsFailureMechanismSectionResultAssemblyFactoryTest.cs (.../GrassCoverErosionOutwardsFailureMechanismSectionResultAssemblyFactoryTest.cs) (revision 6a9db55abb11d74aa021ee32a46a55dc963a58fe)
+++ Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Data.Test/GrassCoverErosionOutwardsFailureMechanismSectionResultAssemblyFactoryTest.cs (.../GrassCoverErosionOutwardsFailureMechanismSectionResultAssemblyFactoryTest.cs) (revision 7fb2c9216edfe52ad09142d2775bc35408f0c445)
@@ -37,6 +37,8 @@
[TestFixture]
public class GrassCoverErosionOutwardsFailureMechanismSectionResultAssemblyFactoryTest
{
+ #region Simple Assembly
+
[Test]
public void AssembleSimpleAssessment_FailureMechanismSectionResultNull_ThrowsArgumentNullException()
{
@@ -116,5 +118,99 @@
Assert.AreEqual(innerException.Message, exception.Message);
}
}
+
+ #endregion
+
+ #region Detailed Assembly
+
+ [Test]
+ public void AssembleDetailedAssessment_FailureMechanismSectionResultNull_ThrowsArgumentNullException()
+ {
+ // Call
+ TestDelegate call = () => GrassCoverErosionOutwardsFailureMechanismSectionResultAssemblyFactory.AssembleDetailedAssessment(null);
+
+ // Assert
+ var exception = Assert.Throws(call);
+ Assert.AreEqual("failureMechanismSectionResult", exception.ParamName);
+ }
+
+ [Test]
+ public void AssembleDetailedAssessment_WithSectionResult_SetsInputOnCalculator()
+ {
+ // Setup
+ var random = new Random(21);
+ FailureMechanismSection failureMechanismSection = FailureMechanismSectionTestFactory.CreateFailureMechanismSection();
+ var sectionResult = new GrassCoverErosionOutwardsFailureMechanismSectionResult(failureMechanismSection)
+ {
+ DetailedAssessmentResultForFactorizedSignalingNorm = random.NextEnumValue(),
+ DetailedAssessmentResultForSignalingNorm = random.NextEnumValue(),
+ DetailedAssessmentResultForMechanismSpecificLowerLimitNorm = random.NextEnumValue(),
+ DetailedAssessmentResultForLowerLimitNorm = random.NextEnumValue(),
+ DetailedAssessmentResultForFactorizedLowerLimitNorm = random.NextEnumValue()
+ };
+
+ using (new AssemblyToolCalculatorFactoryConfig())
+ {
+ var calculatorfactory = (TestAssemblyToolCalculatorFactory)AssemblyToolCalculatorFactory.Instance;
+ FailureMechanismSectionAssemblyCalculatorStub calculator = calculatorfactory.LastCreatedFailureMechanismSectionAssemblyCalculator;
+
+ // Call
+ GrassCoverErosionOutwardsFailureMechanismSectionResultAssemblyFactory.AssembleDetailedAssessment(sectionResult);
+
+ // Assert
+ Assert.AreEqual(sectionResult.DetailedAssessmentResultForFactorizedSignalingNorm, calculator.DetailedAssesmentResultForFactorizedSignalingNormInput);
+ Assert.AreEqual(sectionResult.DetailedAssessmentResultForSignalingNorm, calculator.DetailedAssesmentResultForSignalingNormInput);
+ Assert.AreEqual(sectionResult.DetailedAssessmentResultForMechanismSpecificLowerLimitNorm, calculator.DetailedAssesmentResultForMechanismSpecificLowerLimitNormInput);
+ Assert.AreEqual(sectionResult.DetailedAssessmentResultForLowerLimitNorm, calculator.DetailedAssesmentResultForLowerLimitNormInput);
+ Assert.AreEqual(sectionResult.DetailedAssessmentResultForFactorizedLowerLimitNorm, calculator.DetailedAssesmentResultForFactorizedLowerLimitNormInput);
+ }
+ }
+
+ [Test]
+ public void AssembleDetailedAssessment_AssemblyRan_ReturnsOutput()
+ {
+ // Setup
+ FailureMechanismSection failureMechanismSection = FailureMechanismSectionTestFactory.CreateFailureMechanismSection();
+ var sectionResult = new GrassCoverErosionOutwardsFailureMechanismSectionResult(failureMechanismSection);
+
+ using (new AssemblyToolCalculatorFactoryConfig())
+ {
+ var calculatorfactory = (TestAssemblyToolCalculatorFactory)AssemblyToolCalculatorFactory.Instance;
+ FailureMechanismSectionAssemblyCalculatorStub calculator = calculatorfactory.LastCreatedFailureMechanismSectionAssemblyCalculator;
+
+ // Call
+ FailureMechanismSectionAssemblyCategoryGroup actualOutput =
+ GrassCoverErosionOutwardsFailureMechanismSectionResultAssemblyFactory.AssembleDetailedAssessment(sectionResult);
+
+ // Assert
+ Assert.AreEqual(calculator.DetailedAssessmentAssemblyGroupOutput, actualOutput);
+ }
+ }
+
+ [Test]
+ public void AssembleDetailedAssessment_CalculatorThrowsExceptions_ThrowsAssemblyException()
+ {
+ // Setup
+ FailureMechanismSection failureMechanismSection = FailureMechanismSectionTestFactory.CreateFailureMechanismSection();
+ var sectionResult = new GrassCoverErosionOutwardsFailureMechanismSectionResult(failureMechanismSection);
+
+ using (new AssemblyToolCalculatorFactoryConfig())
+ {
+ var calculatorfactory = (TestAssemblyToolCalculatorFactory)AssemblyToolCalculatorFactory.Instance;
+ FailureMechanismSectionAssemblyCalculatorStub calculator = calculatorfactory.LastCreatedFailureMechanismSectionAssemblyCalculator;
+ calculator.ThrowExceptionOnCalculate = true;
+
+ // Call
+ TestDelegate call = () => GrassCoverErosionOutwardsFailureMechanismSectionResultAssemblyFactory.AssembleDetailedAssessment(sectionResult);
+
+ // Assert
+ var exception = Assert.Throws(call);
+ Exception innerException = exception.InnerException;
+ Assert.IsInstanceOf(innerException);
+ Assert.AreEqual(innerException.Message, exception.Message);
+ }
+ }
+
+ #endregion
}
}
\ No newline at end of file