Index: Ringtoets/Integration/test/Ringtoets.Integration.Data.Test/AssessmentSectionTest.cs =================================================================== diff -u -rb2ef7ff2f4eb8bb6b4954751bf5de32d37df84d1 -r8db49d5f51b6dd7e779a1fdcc70f5ced075261bf --- Ringtoets/Integration/test/Ringtoets.Integration.Data.Test/AssessmentSectionTest.cs (.../AssessmentSectionTest.cs) (revision b2ef7ff2f4eb8bb6b4954751bf5de32d37df84d1) +++ Ringtoets/Integration/test/Ringtoets.Integration.Data.Test/AssessmentSectionTest.cs (.../AssessmentSectionTest.cs) (revision 8db49d5f51b6dd7e779a1fdcc70f5ced075261bf) @@ -27,11 +27,22 @@ using Core.Common.Base.Geometry; using Core.Common.TestUtil; using NUnit.Framework; +using Ringtoets.ClosingStructures.Data; using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Contribution; using Ringtoets.Common.Data.FailureMechanism; using Ringtoets.Common.Data.Hydraulics; using Ringtoets.Common.Data.TestUtil; +using Ringtoets.DuneErosion.Data; +using Ringtoets.GrassCoverErosionInwards.Data; +using Ringtoets.GrassCoverErosionOutwards.Data; +using Ringtoets.HeightStructures.Data; +using Ringtoets.Integration.Data.StandAlone; +using Ringtoets.MacroStabilityInwards.Data; +using Ringtoets.Piping.Data; +using Ringtoets.StabilityPointStructures.Data; +using Ringtoets.StabilityStoneCover.Data; +using Ringtoets.WaveImpactAsphaltCover.Data; namespace Ringtoets.Integration.Data.Test { @@ -532,6 +543,23 @@ AssertDefaultHydraulicBoundaryLocationCalculations(assessmentSection, 1, hydraulicBoundaryLocation2); } + [Test] + [TestCaseSource(nameof(GetNewFailureMechanisms))] + public void GivenAssessmentSection_WhenSettingFailureMechanismWithSameContribution_ThenNewFailureMechanismSet( + Action setNewFailureMechanismAction, TFailureMechanism newFailureMechanism, + Func getFailureMechanismFunc) + where TFailureMechanism : IFailureMechanism + { + // Given + var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); + + // When + setNewFailureMechanismAction(assessmentSection, newFailureMechanism); + + // Then + Assert.AreSame(getFailureMechanismFunc(assessmentSection), newFailureMechanism); + } + private static IFailureMechanism[] GetExpectedContributingFailureMechanisms(AssessmentSection section) { return new IFailureMechanism[] @@ -736,5 +764,66 @@ Assert.IsNull(hydraulicBoundaryLocationCalculation.Output); Assert.IsFalse(hydraulicBoundaryLocationCalculation.InputParameters.ShouldIllustrationPointsBeCalculated); } + + private static IEnumerable GetNewFailureMechanisms() + { + yield return new TestCaseData(new Action((section, failureMechanism) => section.Piping = failureMechanism), + new PipingFailureMechanism(), + new Func(section => section.Piping)); + yield return new TestCaseData(new Action((section, failureMechanism) => section.GrassCoverErosionInwards = failureMechanism), + new GrassCoverErosionInwardsFailureMechanism(), + new Func(section => section.GrassCoverErosionInwards)); + yield return new TestCaseData(new Action((section, failureMechanism) => section.MacroStabilityInwards = failureMechanism), + new MacroStabilityInwardsFailureMechanism(), + new Func(section => section.MacroStabilityInwards)); + yield return new TestCaseData(new Action((section, failureMechanism) => section.MacroStabilityOutwards = failureMechanism), + new MacroStabilityOutwardsFailureMechanism(), + new Func(section => section.MacroStabilityOutwards)); + yield return new TestCaseData(new Action((section, failureMechanism) => section.Microstability = failureMechanism), + new MicrostabilityFailureMechanism(), + new Func(section => section.Microstability)); + yield return new TestCaseData(new Action((section, failureMechanism) => section.StabilityStoneCover = failureMechanism), + new StabilityStoneCoverFailureMechanism(), + new Func(section => section.StabilityStoneCover)); + yield return new TestCaseData(new Action((section, failureMechanism) => section.StabilityStoneCover = failureMechanism), + new StabilityStoneCoverFailureMechanism(), + new Func(section => section.StabilityStoneCover)); + yield return new TestCaseData(new Action((section, failureMechanism) => section.WaveImpactAsphaltCover = failureMechanism), + new WaveImpactAsphaltCoverFailureMechanism(), + new Func(section => section.WaveImpactAsphaltCover)); + yield return new TestCaseData(new Action((section, failureMechanism) => section.WaterPressureAsphaltCover = failureMechanism), + new WaterPressureAsphaltCoverFailureMechanism(), + new Func(section => section.WaterPressureAsphaltCover)); + yield return new TestCaseData(new Action((section, failureMechanism) => section.GrassCoverErosionOutwards = failureMechanism), + new GrassCoverErosionOutwardsFailureMechanism(), + new Func(section => section.GrassCoverErosionOutwards)); + yield return new TestCaseData(new Action((section, failureMechanism) => section.GrassCoverSlipOffOutwards = failureMechanism), + new GrassCoverSlipOffOutwardsFailureMechanism(), + new Func(section => section.GrassCoverSlipOffOutwards)); + yield return new TestCaseData(new Action((section, failureMechanism) => section.GrassCoverSlipOffInwards = failureMechanism), + new GrassCoverSlipOffInwardsFailureMechanism(), + new Func(section => section.GrassCoverSlipOffInwards)); + yield return new TestCaseData(new Action((section, failureMechanism) => section.HeightStructures = failureMechanism), + new HeightStructuresFailureMechanism(), + new Func(section => section.HeightStructures)); + yield return new TestCaseData(new Action((section, failureMechanism) => section.ClosingStructures = failureMechanism), + new ClosingStructuresFailureMechanism(), + new Func(section => section.ClosingStructures)); + yield return new TestCaseData(new Action((section, failureMechanism) => section.PipingStructure = failureMechanism), + new PipingStructureFailureMechanism(), + new Func(section => section.PipingStructure)); + yield return new TestCaseData(new Action((section, failureMechanism) => section.StabilityPointStructures = failureMechanism), + new StabilityPointStructuresFailureMechanism(), + new Func(section => section.StabilityPointStructures)); + yield return new TestCaseData(new Action((section, failureMechanism) => section.StrengthStabilityLengthwiseConstruction = failureMechanism), + new StrengthStabilityLengthwiseConstructionFailureMechanism(), + new Func(section => section.StrengthStabilityLengthwiseConstruction)); + yield return new TestCaseData(new Action((section, failureMechanism) => section.DuneErosion = failureMechanism), + new DuneErosionFailureMechanism(), + new Func(section => section.DuneErosion)); + yield return new TestCaseData(new Action((section, failureMechanism) => section.TechnicalInnovation = failureMechanism), + new TechnicalInnovationFailureMechanism(), + new Func(section => section.TechnicalInnovation)); + } } } \ No newline at end of file