Index: Riskeer/Integration/src/Riskeer.Integration.Data/Assembly/AssessmentSectionAssemblyFactory.cs
===================================================================
diff -u -r1221454f1d26ca1c900e5f9590e6e9f68fb621c4 -re93102d35ecd29d9fe4c17a8bc614ce86cbe0e52
--- Riskeer/Integration/src/Riskeer.Integration.Data/Assembly/AssessmentSectionAssemblyFactory.cs (.../AssessmentSectionAssemblyFactory.cs) (revision 1221454f1d26ca1c900e5f9590e6e9f68fb621c4)
+++ Riskeer/Integration/src/Riskeer.Integration.Data/Assembly/AssessmentSectionAssemblyFactory.cs (.../AssessmentSectionAssemblyFactory.cs) (revision e93102d35ecd29d9fe4c17a8bc614ce86cbe0e52)
@@ -142,24 +142,83 @@
/// Thrown when the results could not be assembled.
private static IEnumerable GetFailureMechanismAssemblyResults(AssessmentSection assessmentSection)
{
- yield return PipingFailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.Piping, assessmentSection);
- yield return MacroStabilityInwardsFailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.MacroStabilityInwards, assessmentSection);
- yield return GrassCoverErosionInwardsFailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.GrassCoverErosionInwards, assessmentSection);
- yield return ClosingStructuresFailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.ClosingStructures, assessmentSection);
- yield return HeightStructuresFailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.HeightStructures, assessmentSection);
- yield return StabilityPointStructuresFailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.StabilityPointStructures, assessmentSection);
- yield return GrassCoverErosionOutwardsFailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.GrassCoverErosionOutwards, assessmentSection);
- yield return StabilityStoneCoverFailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.StabilityStoneCover, assessmentSection);
- yield return WaveImpactAsphaltCoverFailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.WaveImpactAsphaltCover, assessmentSection);
- yield return DuneErosionFailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.DuneErosion, assessmentSection);
- yield return PipingStructureFailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.PipingStructure, assessmentSection);
- yield return FailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.GrassCoverSlipOffInwards, assessmentSection);
- yield return FailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.GrassCoverSlipOffOutwards, assessmentSection);
- yield return FailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.Microstability, assessmentSection);
- yield return FailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.WaterPressureAsphaltCover, assessmentSection);
+ if (assessmentSection.Piping.InAssembly)
+ {
+ yield return PipingFailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.Piping, assessmentSection);
+ }
- foreach (SpecificFailurePath failurePath in assessmentSection.SpecificFailurePaths)
+ if (assessmentSection.MacroStabilityInwards.InAssembly)
{
+ yield return MacroStabilityInwardsFailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.MacroStabilityInwards, assessmentSection);
+ }
+
+ if (assessmentSection.GrassCoverErosionInwards.InAssembly)
+ {
+ yield return GrassCoverErosionInwardsFailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.GrassCoverErosionInwards, assessmentSection);
+ }
+
+ if (assessmentSection.ClosingStructures.InAssembly)
+ {
+ yield return ClosingStructuresFailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.ClosingStructures, assessmentSection);
+ }
+
+ if (assessmentSection.HeightStructures.InAssembly)
+ {
+ yield return HeightStructuresFailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.HeightStructures, assessmentSection);
+ }
+
+ if (assessmentSection.StabilityPointStructures.InAssembly)
+ {
+ yield return StabilityPointStructuresFailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.StabilityPointStructures, assessmentSection);
+ }
+
+ if (assessmentSection.GrassCoverErosionOutwards.InAssembly)
+ {
+ yield return GrassCoverErosionOutwardsFailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.GrassCoverErosionOutwards, assessmentSection);
+ }
+
+ if (assessmentSection.StabilityStoneCover.InAssembly)
+ {
+ yield return StabilityStoneCoverFailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.StabilityStoneCover, assessmentSection);
+ }
+
+ if (assessmentSection.WaveImpactAsphaltCover.InAssembly)
+ {
+ yield return WaveImpactAsphaltCoverFailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.WaveImpactAsphaltCover, assessmentSection);
+ }
+
+ if (assessmentSection.DuneErosion.InAssembly)
+ {
+ yield return DuneErosionFailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.DuneErosion, assessmentSection);
+ }
+
+ if (assessmentSection.PipingStructure.InAssembly)
+ {
+ yield return PipingStructureFailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.PipingStructure, assessmentSection);
+ }
+
+ if (assessmentSection.GrassCoverSlipOffInwards.InAssembly)
+ {
+ yield return FailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.GrassCoverSlipOffInwards, assessmentSection);
+ }
+
+ if (assessmentSection.GrassCoverSlipOffOutwards.InAssembly)
+ {
+ yield return FailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.GrassCoverSlipOffOutwards, assessmentSection);
+ }
+
+ if (assessmentSection.Microstability.InAssembly)
+ {
+ yield return FailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.Microstability, assessmentSection);
+ }
+
+ if (assessmentSection.WaterPressureAsphaltCover.InAssembly)
+ {
+ yield return FailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.WaterPressureAsphaltCover, assessmentSection);
+ }
+
+ foreach (SpecificFailurePath failurePath in assessmentSection.SpecificFailurePaths.Where(fp => fp.InAssembly))
+ {
yield return FailureMechanismAssemblyFactory.AssembleFailureMechanism(failurePath, assessmentSection);
}
}
Index: Riskeer/Integration/test/Riskeer.Integration.Data.Test/Assembly/AssessmentSectionAssemblyFactoryTest.cs
===================================================================
diff -u -r1221454f1d26ca1c900e5f9590e6e9f68fb621c4 -re93102d35ecd29d9fe4c17a8bc614ce86cbe0e52
--- Riskeer/Integration/test/Riskeer.Integration.Data.Test/Assembly/AssessmentSectionAssemblyFactoryTest.cs (.../AssessmentSectionAssemblyFactoryTest.cs) (revision 1221454f1d26ca1c900e5f9590e6e9f68fb621c4)
+++ Riskeer/Integration/test/Riskeer.Integration.Data.Test/Assembly/AssessmentSectionAssemblyFactoryTest.cs (.../AssessmentSectionAssemblyFactoryTest.cs) (revision e93102d35ecd29d9fe4c17a8bc614ce86cbe0e52)
@@ -23,6 +23,7 @@
using System.Collections.Generic;
using System.Linq;
using Core.Common.TestUtil;
+using Core.Common.Util.Extensions;
using NUnit.Framework;
using Riskeer.AssemblyTool.Data;
using Riskeer.AssemblyTool.KernelWrapper.Calculators;
@@ -57,10 +58,10 @@
}
[Test]
- public void AssembleAssessmentSection_WithAssessmentSection_SetsInputOnCalculator()
+ public void AssembleAssessmentSection_WithAssessmentSectionContainingFailurePathsWithRandomInAssemblyState_SetsInputOnCalculator()
{
// Setup
- AssessmentSection assessmentSection = CreateAssessmentSection();
+ AssessmentSection assessmentSection = CreateAssessmentSectionContainingFailurePathsWithRandomInAssemblyState();
using (new AssemblyToolCalculatorFactoryConfig())
{
@@ -79,7 +80,7 @@
int expectedNrOfProbabilities = assessmentSection.GetFailureMechanisms()
.Cast()
.Concat(assessmentSection.SpecificFailurePaths)
- .Count();
+ .Count(fp => fp.InAssembly);
IEnumerable calculatorInput = assessmentSectionAssemblyCalculator.FailureMechanismProbabilitiesInput;
Assert.AreEqual(expectedNrOfProbabilities, calculatorInput.Count());
foreach (double failureMechanismProbability in calculatorInput)
@@ -119,10 +120,10 @@
calculator.ThrowExceptionOnCalculate = true;
// Call
- TestDelegate call = () => AssessmentSectionAssemblyFactory.AssembleAssessmentSection(CreateAssessmentSection());
+ void Call() => AssessmentSectionAssemblyFactory.AssembleAssessmentSection(CreateAssessmentSection());
// Assert
- var exception = Assert.Throws(call);
+ var exception = Assert.Throws(Call);
Exception innerException = exception.InnerException;
Assert.IsInstanceOf(innerException);
Assert.AreEqual(innerException.Message, exception.Message);
@@ -140,10 +141,10 @@
calculator.ThrowExceptionOnCalculate = true;
// Call
- TestDelegate call = () => AssessmentSectionAssemblyFactory.AssembleAssessmentSection(CreateAssessmentSection());
+ void Call() => AssessmentSectionAssemblyFactory.AssembleAssessmentSection(CreateAssessmentSection());
// Assert
- var exception = Assert.Throws(call);
+ var exception = Assert.Throws(Call);
Exception innerException = exception.InnerException;
Assert.IsInstanceOf(innerException);
Assert.AreEqual("Voor een of meerdere toetssporen kan geen oordeel worden bepaald.", exception.Message);
@@ -298,13 +299,25 @@
{
var random = new Random(21);
var assessmentSection = new AssessmentSection(random.NextEnumValue());
-
IEnumerable failurePaths = Enumerable.Repeat(new SpecificFailurePath(), random.Next(1, 10))
.ToArray();
assessmentSection.SpecificFailurePaths.AddRange(failurePaths);
return assessmentSection;
}
+ private static AssessmentSection CreateAssessmentSectionContainingFailurePathsWithRandomInAssemblyState()
+ {
+ var random = new Random(21);
+
+ AssessmentSection assessmentSection = CreateAssessmentSection();
+
+ IEnumerable failurePaths = assessmentSection.GetFailureMechanisms();
+ failurePaths = failurePaths.Concat(assessmentSection.SpecificFailurePaths);
+ failurePaths.ForEachElementDo(fp => fp.InAssembly = random.NextBoolean());
+
+ return assessmentSection;
+ }
+
#endregion
}
}
\ No newline at end of file