Index: Ringtoets/DuneErosion/src/Ringtoets.DuneErosion.Service/DuneErosionDataSynchronizationService.cs =================================================================== diff -u -ree62f9ef8c69cd574bd23077bf9079e3e8fbdd8c -rf0c2e0726fb0d7a85fd1e192f3775c8dba10605f --- Ringtoets/DuneErosion/src/Ringtoets.DuneErosion.Service/DuneErosionDataSynchronizationService.cs (.../DuneErosionDataSynchronizationService.cs) (revision ee62f9ef8c69cd574bd23077bf9079e3e8fbdd8c) +++ Ringtoets/DuneErosion/src/Ringtoets.DuneErosion.Service/DuneErosionDataSynchronizationService.cs (.../DuneErosionDataSynchronizationService.cs) (revision f0c2e0726fb0d7a85fd1e192f3775c8dba10605f) @@ -115,19 +115,32 @@ } /// - /// Clears the output of the dune location calculations within the collection. + /// Clears the output of the dune location calculations within the dune erosion failure mechanism. /// - /// The calculations for which the output needs to be cleared. + /// The failure mechanism for which the output of the calculations needs to be cleared. /// All objects changed during the clear. - /// Thrown when is null. - public static IEnumerable ClearDuneCalculationsOutput(IEnumerable calculations) + /// Thrown when is null. + public static IEnumerable ClearDuneCalculationOutputs(DuneErosionFailureMechanism failureMechanism) { - if (calculations == null) + if (failureMechanism == null) { - throw new ArgumentNullException(nameof(calculations)); + throw new ArgumentNullException(nameof(failureMechanism)); } var affectedCalculations = new List(); + + affectedCalculations.AddRange(ClearDuneCalculationsOutput(failureMechanism.CalculationsForMechanismSpecificFactorizedSignalingNorm)); + affectedCalculations.AddRange(ClearDuneCalculationsOutput(failureMechanism.CalculationsForMechanismSpecificSignalingNorm)); + affectedCalculations.AddRange(ClearDuneCalculationsOutput(failureMechanism.CalculationsForMechanismSpecificLowerLimitNorm)); + affectedCalculations.AddRange(ClearDuneCalculationsOutput(failureMechanism.CalculationsForLowerLimitNorm)); + affectedCalculations.AddRange(ClearDuneCalculationsOutput(failureMechanism.CalculationsForFactorizedLowerLimitNorm)); + + return affectedCalculations; + } + + private static IEnumerable ClearDuneCalculationsOutput(IEnumerable calculations) + { + var affectedCalculations = new List(); foreach (DuneLocationCalculation calculation in calculations) { if (calculation.Output != null) Index: Ringtoets/DuneErosion/test/Ringtoets.DuneErosion.Service.Test/DuneErosionDataSynchronizationServiceTest.cs =================================================================== diff -u -ree62f9ef8c69cd574bd23077bf9079e3e8fbdd8c -rf0c2e0726fb0d7a85fd1e192f3775c8dba10605f --- Ringtoets/DuneErosion/test/Ringtoets.DuneErosion.Service.Test/DuneErosionDataSynchronizationServiceTest.cs (.../DuneErosionDataSynchronizationServiceTest.cs) (revision ee62f9ef8c69cd574bd23077bf9079e3e8fbdd8c) +++ Ringtoets/DuneErosion/test/Ringtoets.DuneErosion.Service.Test/DuneErosionDataSynchronizationServiceTest.cs (.../DuneErosionDataSynchronizationServiceTest.cs) (revision f0c2e0726fb0d7a85fd1e192f3775c8dba10605f) @@ -254,41 +254,55 @@ } [Test] - public void ClearDuneLocationOutput_CalculationsNull_ThrowsArgumentNullException() + public void ClearDuneCalculationOutputs_FailureMechanismNull_ThrowsArgumentNullException() { // Call - TestDelegate call = () => DuneErosionDataSynchronizationService.ClearDuneCalculationsOutput(null); + TestDelegate call = () => DuneErosionDataSynchronizationService.ClearDuneCalculationOutputs(null); // Assert var exception = Assert.Throws(call); - Assert.AreEqual("calculations", exception.ParamName); + Assert.AreEqual("failureMechanism", exception.ParamName); } [Test] - public void ClearDuneLocationOutput_CalculationsWithOutput_OutputClearedAndAffectedItemsReturned() + public void ClearDuneCalculationOutputs_CalculationsWithOutput_OutputClearedAndAffectedItemsReturned() { // Setup - var calculationWithOutput = new DuneLocationCalculation(new TestDuneLocation()) + var duneLocations = new[] { - Output = new TestDuneLocationOutput() + new TestDuneLocation(), + new TestDuneLocation() }; - var calculationWithoutOutput = new DuneLocationCalculation(new TestDuneLocation()); - var calculations = new[] - { - calculationWithOutput, - calculationWithoutOutput - }; + var failureMechanism = new DuneErosionFailureMechanism(); + failureMechanism.DuneLocations.AddRange(duneLocations); + failureMechanism.SetDuneLocationCalculations(duneLocations); + failureMechanism.CalculationsForMechanismSpecificFactorizedSignalingNorm.First().Output = new TestDuneLocationOutput(); + failureMechanism.CalculationsForMechanismSpecificSignalingNorm.First().Output = new TestDuneLocationOutput(); + failureMechanism.CalculationsForMechanismSpecificLowerLimitNorm.First().Output = new TestDuneLocationOutput(); + failureMechanism.CalculationsForLowerLimitNorm.First().Output = new TestDuneLocationOutput(); + failureMechanism.CalculationsForFactorizedLowerLimitNorm.First().Output = new TestDuneLocationOutput(); + // Call - IEnumerable affected = DuneErosionDataSynchronizationService.ClearDuneCalculationsOutput(calculations); + IEnumerable affected = DuneErosionDataSynchronizationService.ClearDuneCalculationOutputs(failureMechanism); // Assert - Assert.IsNull(calculationWithOutput.Output); - CollectionAssert.AreEqual(new[] + var expectedAffectedCalculations = new[] { - calculationWithOutput - }, affected); + failureMechanism.CalculationsForMechanismSpecificFactorizedSignalingNorm.First(), + failureMechanism.CalculationsForMechanismSpecificSignalingNorm.First(), + failureMechanism.CalculationsForMechanismSpecificLowerLimitNorm.First(), + failureMechanism.CalculationsForLowerLimitNorm.First(), + failureMechanism.CalculationsForFactorizedLowerLimitNorm.First() + }; + CollectionAssert.AreEquivalent(expectedAffectedCalculations, affected); + + Assert.True(failureMechanism.CalculationsForMechanismSpecificFactorizedSignalingNorm.All(calc => calc.Output == null)); + Assert.True(failureMechanism.CalculationsForMechanismSpecificSignalingNorm.All(calc => calc.Output == null)); + Assert.True(failureMechanism.CalculationsForMechanismSpecificLowerLimitNorm.All(calc => calc.Output == null)); + Assert.True(failureMechanism.CalculationsForLowerLimitNorm.All(calc => calc.Output == null)); + Assert.True(failureMechanism.CalculationsForFactorizedLowerLimitNorm.All(calc => calc.Output == null)); } } } \ No newline at end of file Index: Ringtoets/Integration/test/Ringtoets.Integration.TestUtil/TestDataGenerator.cs =================================================================== diff -u -r3e2a8feb80fe42eb72d66a456a21e030f2d25674 -rf0c2e0726fb0d7a85fd1e192f3775c8dba10605f --- Ringtoets/Integration/test/Ringtoets.Integration.TestUtil/TestDataGenerator.cs (.../TestDataGenerator.cs) (revision 3e2a8feb80fe42eb72d66a456a21e030f2d25674) +++ Ringtoets/Integration/test/Ringtoets.Integration.TestUtil/TestDataGenerator.cs (.../TestDataGenerator.cs) (revision f0c2e0726fb0d7a85fd1e192f3775c8dba10605f) @@ -125,11 +125,7 @@ { AssessmentSection assessmentSection = GetAssessmentSectionWithAllCalculationConfigurations(composition); RingtoetsDataSynchronizationService.ClearHydraulicBoundaryLocationCalculationOutput(assessmentSection); - DuneErosionDataSynchronizationService.ClearDuneCalculationsOutput(assessmentSection.DuneErosion.CalculationsForMechanismSpecificFactorizedSignalingNorm); - DuneErosionDataSynchronizationService.ClearDuneCalculationsOutput(assessmentSection.DuneErosion.CalculationsForMechanismSpecificSignalingNorm); - DuneErosionDataSynchronizationService.ClearDuneCalculationsOutput(assessmentSection.DuneErosion.CalculationsForMechanismSpecificLowerLimitNorm); - DuneErosionDataSynchronizationService.ClearDuneCalculationsOutput(assessmentSection.DuneErosion.CalculationsForLowerLimitNorm); - DuneErosionDataSynchronizationService.ClearDuneCalculationsOutput(assessmentSection.DuneErosion.CalculationsForFactorizedLowerLimitNorm); + DuneErosionDataSynchronizationService.ClearDuneCalculationOutputs(assessmentSection.DuneErosion); return assessmentSection; }