Index: Riskeer/Integration/src/Riskeer.Integration.Data/Assembly/AssessmentSectionAssemblyFactory.cs =================================================================== diff -u -r5d397160d4d2ba1189b73958b5e22e7ca0f6b174 -r20834fa8501f9fc2050c06977665a69e7a28ff2f --- Riskeer/Integration/src/Riskeer.Integration.Data/Assembly/AssessmentSectionAssemblyFactory.cs (.../AssessmentSectionAssemblyFactory.cs) (revision 5d397160d4d2ba1189b73958b5e22e7ca0f6b174) +++ Riskeer/Integration/src/Riskeer.Integration.Data/Assembly/AssessmentSectionAssemblyFactory.cs (.../AssessmentSectionAssemblyFactory.cs) (revision 20834fa8501f9fc2050c06977665a69e7a28ff2f) @@ -29,6 +29,7 @@ using Riskeer.ClosingStructures.Data; using Riskeer.Common.Data.Contribution; using Riskeer.Common.Data.Exceptions; +using Riskeer.Common.Data.FailureMechanism; using Riskeer.Common.Data.FailurePath; using Riskeer.DuneErosion.Data; using Riskeer.GrassCoverErosionInwards.Data; @@ -69,7 +70,7 @@ IAssessmentSectionAssemblyCalculator calculator = calculatorFactory.CreateAssessmentSectionAssemblyCalculator(AssemblyToolKernelFactory.Instance); - IEnumerable assemblyResults = GetFailureMechanismAssemblyResults(assessmentSection).ToArray(); + IEnumerable assemblyResults = GetFailureMechanismAssemblyResults(assessmentSection); FailureMechanismContribution contribution = assessmentSection.FailureMechanismContribution; return calculator.AssembleAssessmentSection(assemblyResults, contribution.LowerLimitNorm, contribution.SignalingNorm); } @@ -142,85 +143,55 @@ /// Thrown when the results could not be assembled. private static IEnumerable GetFailureMechanismAssemblyResults(AssessmentSection assessmentSection) { - if (assessmentSection.Piping.InAssembly) - { - yield return PipingFailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.Piping, assessmentSection); - } + var failureMechanismAssemblies = new List(); - if (assessmentSection.MacroStabilityInwards.InAssembly) - { - yield return MacroStabilityInwardsFailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.MacroStabilityInwards, assessmentSection); - } + AssembleWhenApplicable(failureMechanismAssemblies, assessmentSection.Piping, assessmentSection, + PipingFailureMechanismAssemblyFactory.AssembleFailureMechanism); + AssembleWhenApplicable(failureMechanismAssemblies, assessmentSection.MacroStabilityInwards, assessmentSection, + MacroStabilityInwardsFailureMechanismAssemblyFactory.AssembleFailureMechanism); + AssembleWhenApplicable(failureMechanismAssemblies, assessmentSection.GrassCoverErosionInwards, assessmentSection, + GrassCoverErosionInwardsFailureMechanismAssemblyFactory.AssembleFailureMechanism); + AssembleWhenApplicable(failureMechanismAssemblies, assessmentSection.ClosingStructures, assessmentSection, + ClosingStructuresFailureMechanismAssemblyFactory.AssembleFailureMechanism); + AssembleWhenApplicable(failureMechanismAssemblies, assessmentSection.HeightStructures, assessmentSection, + HeightStructuresFailureMechanismAssemblyFactory.AssembleFailureMechanism); + AssembleWhenApplicable(failureMechanismAssemblies, assessmentSection.StabilityPointStructures, assessmentSection, + StabilityPointStructuresFailureMechanismAssemblyFactory.AssembleFailureMechanism); + AssembleWhenApplicable(failureMechanismAssemblies, assessmentSection.GrassCoverErosionOutwards, assessmentSection, + GrassCoverErosionOutwardsFailureMechanismAssemblyFactory.AssembleFailureMechanism); + AssembleWhenApplicable(failureMechanismAssemblies, assessmentSection.StabilityStoneCover, assessmentSection, + StabilityStoneCoverFailureMechanismAssemblyFactory.AssembleFailureMechanism); + AssembleWhenApplicable(failureMechanismAssemblies, assessmentSection.WaveImpactAsphaltCover, assessmentSection, + WaveImpactAsphaltCoverFailureMechanismAssemblyFactory.AssembleFailureMechanism); + AssembleWhenApplicable(failureMechanismAssemblies, assessmentSection.DuneErosion, assessmentSection, + DuneErosionFailureMechanismAssemblyFactory.AssembleFailureMechanism); + AssembleWhenApplicable(failureMechanismAssemblies, assessmentSection.PipingStructure, assessmentSection, + PipingStructureFailureMechanismAssemblyFactory.AssembleFailureMechanism); + AssembleWhenApplicable(failureMechanismAssemblies, assessmentSection.GrassCoverSlipOffInwards, assessmentSection, + FailureMechanismAssemblyFactory.AssembleFailureMechanism); + AssembleWhenApplicable(failureMechanismAssemblies, assessmentSection.GrassCoverSlipOffOutwards, assessmentSection, + FailureMechanismAssemblyFactory.AssembleFailureMechanism); + AssembleWhenApplicable(failureMechanismAssemblies, assessmentSection.Microstability, assessmentSection, + FailureMechanismAssemblyFactory.AssembleFailureMechanism); + AssembleWhenApplicable(failureMechanismAssemblies, assessmentSection.WaterPressureAsphaltCover, assessmentSection, + FailureMechanismAssemblyFactory.AssembleFailureMechanism); - if (assessmentSection.GrassCoverErosionInwards.InAssembly) - { - yield return GrassCoverErosionInwardsFailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.GrassCoverErosionInwards, assessmentSection); - } + failureMechanismAssemblies.AddRange(assessmentSection.SpecificFailurePaths + .Where(fp => fp.InAssembly) + .Select(fp => FailureMechanismAssemblyFactory.AssembleFailureMechanism(fp, assessmentSection))); - if (assessmentSection.ClosingStructures.InAssembly) - { - yield return ClosingStructuresFailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.ClosingStructures, assessmentSection); - } + return failureMechanismAssemblies; + } - if (assessmentSection.HeightStructures.InAssembly) + private static void AssembleWhenApplicable( + List resultsList, TFailureMechanism failureMechanism, AssessmentSection assessmentSection, + Func performAssemblyFunc) + where TFailureMechanism : IFailurePath + { + if (failureMechanism.InAssembly) { - yield return HeightStructuresFailureMechanismAssemblyFactory.AssembleFailureMechanism(assessmentSection.HeightStructures, assessmentSection); + resultsList.Add(performAssemblyFunc(failureMechanism, 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); - } } } } \ No newline at end of file Index: Riskeer/Integration/test/Riskeer.Integration.Forms.Test/Observers/AssessmentSectionResultObserverTest.cs =================================================================== diff -u -rfb8263cfbd127c78763807caa1c2802f6f487b0f -r20834fa8501f9fc2050c06977665a69e7a28ff2f --- Riskeer/Integration/test/Riskeer.Integration.Forms.Test/Observers/AssessmentSectionResultObserverTest.cs (.../AssessmentSectionResultObserverTest.cs) (revision fb8263cfbd127c78763807caa1c2802f6f487b0f) +++ Riskeer/Integration/test/Riskeer.Integration.Forms.Test/Observers/AssessmentSectionResultObserverTest.cs (.../AssessmentSectionResultObserverTest.cs) (revision 20834fa8501f9fc2050c06977665a69e7a28ff2f) @@ -190,7 +190,6 @@ resultObserver.Attach(observer); // When - specificFailurePath.NotifyObservers(); // Then Index: Riskeer/Integration/test/Riskeer.Integration.Forms.Test/Views/FailureMechanismAssemblyResultRowTest.cs =================================================================== diff -u -r4705ff4ab5813dca45603ae25f5a9fcfab93fbd0 -r20834fa8501f9fc2050c06977665a69e7a28ff2f --- Riskeer/Integration/test/Riskeer.Integration.Forms.Test/Views/FailureMechanismAssemblyResultRowTest.cs (.../FailureMechanismAssemblyResultRowTest.cs) (revision 4705ff4ab5813dca45603ae25f5a9fcfab93fbd0) +++ Riskeer/Integration/test/Riskeer.Integration.Forms.Test/Views/FailureMechanismAssemblyResultRowTest.cs (.../FailureMechanismAssemblyResultRowTest.cs) (revision 20834fa8501f9fc2050c06977665a69e7a28ff2f) @@ -66,14 +66,12 @@ } [Test] - [TestCase("")] - [TestCase(" ")] - [TestCase("I am an errorMessage")] - public void ConstructorWithErrorMessage_WithArguments_ExpectedProperties(string errorMessage) + public void ConstructorWithErrorMessage_WithArguments_ExpectedProperties() { // Setup const string failureMechanismName = "Failure Mechanism Name"; const string failureMechanismCode = "Code"; + const string errorMessage = "Error"; var mocks = new MockRepository(); var failureMechanism = mocks.Stub();