Index: Ringtoets/Integration/src/Ringtoets.Integration.Data/StandAlone/AssemblyFactories/MicrostabilityFailureMechanismAssemblyFactory.cs
===================================================================
diff -u -r06800c4b5c53dd8a385a9f15ce44e9c4038a3726 -rc43f7692bfadc0b065baf71ef3dd382c32da8566
--- Ringtoets/Integration/src/Ringtoets.Integration.Data/StandAlone/AssemblyFactories/MicrostabilityFailureMechanismAssemblyFactory.cs (.../MicrostabilityFailureMechanismAssemblyFactory.cs) (revision 06800c4b5c53dd8a385a9f15ce44e9c4038a3726)
+++ Ringtoets/Integration/src/Ringtoets.Integration.Data/StandAlone/AssemblyFactories/MicrostabilityFailureMechanismAssemblyFactory.cs (.../MicrostabilityFailureMechanismAssemblyFactory.cs) (revision c43f7692bfadc0b065baf71ef3dd382c32da8566)
@@ -172,6 +172,27 @@
}
///
+ /// Gets the assembly category group of the given .
+ ///
+ /// The failure mechanism section result to get the assembly category group for.
+ /// A .
+ /// Thrown when any parameter is null.
+ /// Thrown when the
+ /// could not be created.
+ public static FailureMechanismSectionAssemblyCategoryGroup GetSectionAssemblyCategoryGroup(
+ MicrostabilityFailureMechanismSectionResult failureMechanismSectionResult)
+ {
+ if (failureMechanismSectionResult == null)
+ {
+ throw new ArgumentNullException(nameof(failureMechanismSectionResult));
+ }
+
+ return failureMechanismSectionResult.UseManualAssemblyCategoryGroup
+ ? failureMechanismSectionResult.ManualAssemblyCategoryGroup
+ : AssembleCombinedAssessment(failureMechanismSectionResult);
+ }
+
+ ///
/// Assembles the failure mechanism assembly.
///
/// The failure mechanism to assemble for.
@@ -193,9 +214,7 @@
}
IEnumerable sectionAssemblies =
- failureMechanism.SectionResults.Select(sectionResult => sectionResult.UseManualAssemblyCategoryGroup
- ? sectionResult.ManualAssemblyCategoryGroup
- : AssembleCombinedAssessment(sectionResult)).ToArray();
+ failureMechanism.SectionResults.Select(GetSectionAssemblyCategoryGroup).ToArray();
IAssemblyToolCalculatorFactory calculatorFactory = AssemblyToolCalculatorFactory.Instance;
IFailureMechanismAssemblyCalculator calculator =
Index: Ringtoets/Integration/test/Ringtoets.Integration.Data.Test/StandAlone/AssemblyFactories/MicrostabilityFailureMechanismAssemblyFactoryTest.cs
===================================================================
diff -u -r5e0a72833803f6a51d6e70a166bdd48d1d4418c7 -rc43f7692bfadc0b065baf71ef3dd382c32da8566
--- Ringtoets/Integration/test/Ringtoets.Integration.Data.Test/StandAlone/AssemblyFactories/MicrostabilityFailureMechanismAssemblyFactoryTest.cs (.../MicrostabilityFailureMechanismAssemblyFactoryTest.cs) (revision 5e0a72833803f6a51d6e70a166bdd48d1d4418c7)
+++ Ringtoets/Integration/test/Ringtoets.Integration.Data.Test/StandAlone/AssemblyFactories/MicrostabilityFailureMechanismAssemblyFactoryTest.cs (.../MicrostabilityFailureMechanismAssemblyFactoryTest.cs) (revision c43f7692bfadc0b065baf71ef3dd382c32da8566)
@@ -370,6 +370,112 @@
#endregion
+ #region GetSectionAssemblyCategoryGroup
+
+ [Test]
+ public void GetSectionAssemblyCategoryGroup_FailureMechanismSectionResultNull_ThrowsArgumentNullException()
+ {
+ // Call
+ TestDelegate call = () => MicrostabilityFailureMechanismAssemblyFactory.GetSectionAssemblyCategoryGroup(
+ null);
+
+ // Assert
+ var exception = Assert.Throws(call);
+ Assert.AreEqual("failureMechanismSectionResult", exception.ParamName);
+ }
+
+ [Test]
+ public void GetSectionAssemblyCategoryGroup_WithoutManualInput_SetsInputOnCalculator()
+ {
+ // Setup
+ var sectionResult = new MicrostabilityFailureMechanismSectionResult(FailureMechanismSectionTestFactory.CreateFailureMechanismSection());
+
+ using (new AssemblyToolCalculatorFactoryConfig())
+ {
+ var calculatorFactory = (TestAssemblyToolCalculatorFactory)AssemblyToolCalculatorFactory.Instance;
+ FailureMechanismSectionAssemblyCalculatorStub calculator = calculatorFactory.LastCreatedFailureMechanismSectionAssemblyCalculator;
+
+ // Call
+ MicrostabilityFailureMechanismAssemblyFactory.GetSectionAssemblyCategoryGroup(
+ sectionResult);
+
+ // Assert
+ FailureMechanismSectionAssemblyCategoryGroup expectedSimpleAssembly = MicrostabilityFailureMechanismAssemblyFactory.AssembleSimpleAssessment(
+ sectionResult);
+ FailureMechanismSectionAssemblyCategoryGroup expectedDetailedAssembly = MicrostabilityFailureMechanismAssemblyFactory.AssembleDetailedAssessment(
+ sectionResult);
+ FailureMechanismSectionAssemblyCategoryGroup expectedTailorMadeAssembly = MicrostabilityFailureMechanismAssemblyFactory.AssembleTailorMadeAssessment(
+ sectionResult);
+
+ Assert.AreEqual(expectedSimpleAssembly, calculator.CombinedSimpleAssemblyGroupInput);
+ Assert.AreEqual(expectedDetailedAssembly, calculator.CombinedDetailedAssemblyGroupInput);
+ Assert.AreEqual(expectedTailorMadeAssembly, calculator.CombinedTailorMadeAssemblyGroupInput);
+ }
+ }
+
+ [Test]
+ public void GetSectionAssemblyCategoryGroup_WithoutManualInput_ReturnsOutput()
+ {
+ // Setup
+ var sectionResult = new MicrostabilityFailureMechanismSectionResult(FailureMechanismSectionTestFactory.CreateFailureMechanismSection());
+
+ using (new AssemblyToolCalculatorFactoryConfig())
+ {
+ // Call
+ FailureMechanismSectionAssemblyCategoryGroup categoryGroup = MicrostabilityFailureMechanismAssemblyFactory.GetSectionAssemblyCategoryGroup(
+ sectionResult);
+
+ // Assert
+ FailureMechanismSectionAssemblyCategoryGroup expectedAssembly = MicrostabilityFailureMechanismAssemblyFactory.AssembleCombinedAssessment(
+ sectionResult);
+ Assert.AreEqual(categoryGroup, expectedAssembly);
+ }
+ }
+
+ [Test]
+ public void GetSectionAssemblyCategoryGroup_WithManualInput_ReturnsOutput()
+ {
+ // Setup
+ var sectionResult = new MicrostabilityFailureMechanismSectionResult(FailureMechanismSectionTestFactory.CreateFailureMechanismSection())
+ {
+ UseManualAssemblyCategoryGroup = true,
+ ManualAssemblyCategoryGroup = new Random(39).NextEnumValue()
+ };
+
+ // Call
+ FailureMechanismSectionAssemblyCategoryGroup categoryGroup = MicrostabilityFailureMechanismAssemblyFactory.GetSectionAssemblyCategoryGroup(
+ sectionResult);
+
+ // Assert
+ Assert.AreEqual(categoryGroup, sectionResult.ManualAssemblyCategoryGroup);
+ }
+
+ [Test]
+ public void GetSectionAssemblyCategoryGroup_WithoutManualInputAndCalculatorThrowsException_ThrowsAssemblyException()
+ {
+ // Setup
+ var sectionResult = new MicrostabilityFailureMechanismSectionResult(FailureMechanismSectionTestFactory.CreateFailureMechanismSection());
+
+ using (new AssemblyToolCalculatorFactoryConfig())
+ {
+ var calculatorfactory = (TestAssemblyToolCalculatorFactory)AssemblyToolCalculatorFactory.Instance;
+ FailureMechanismSectionAssemblyCalculatorStub calculator = calculatorfactory.LastCreatedFailureMechanismSectionAssemblyCalculator;
+ calculator.ThrowExceptionOnCalculateCombinedAssembly = true;
+
+ // Call
+ TestDelegate call = () => MicrostabilityFailureMechanismAssemblyFactory.GetSectionAssemblyCategoryGroup(
+ sectionResult);
+
+ // Assert
+ var exception = Assert.Throws(call);
+ Exception innerException = exception.InnerException;
+ Assert.IsInstanceOf(innerException);
+ Assert.AreEqual(innerException.Message, exception.Message);
+ }
+ }
+
+ #endregion
+
#region Failure Mechanism Assembly
[Test]