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