Index: Ringtoets/StabilityStoneCover/src/Ringtoets.StabilityStoneCover.Service/Ringtoets.StabilityStoneCover.Service.csproj =================================================================== diff -u -re69acb9595f7bf1d202ddd1fb51934b66768b75d -r77ac74d895ded1f0d1f81a67b02a2f4d80299a3b --- Ringtoets/StabilityStoneCover/src/Ringtoets.StabilityStoneCover.Service/Ringtoets.StabilityStoneCover.Service.csproj (.../Ringtoets.StabilityStoneCover.Service.csproj) (revision e69acb9595f7bf1d202ddd1fb51934b66768b75d) +++ Ringtoets/StabilityStoneCover/src/Ringtoets.StabilityStoneCover.Service/Ringtoets.StabilityStoneCover.Service.csproj (.../Ringtoets.StabilityStoneCover.Service.csproj) (revision 77ac74d895ded1f0d1f81a67b02a2f4d80299a3b) @@ -65,6 +65,11 @@ Core.Common.Base False + + {F49BD8B2-332A-4C91-A196-8CCE0A2C7D98} + Core.Common.Utils + False + {d4200f43-3f72-4f42-af0a-8ced416a38ec} Ringtoets.Common.Data Index: Ringtoets/StabilityStoneCover/src/Ringtoets.StabilityStoneCover.Service/StabilityStoneCoverDataSynchronizationService.cs =================================================================== diff -u -r2973c5f790a5131e427bd5f73e2a620044199639 -r77ac74d895ded1f0d1f81a67b02a2f4d80299a3b --- Ringtoets/StabilityStoneCover/src/Ringtoets.StabilityStoneCover.Service/StabilityStoneCoverDataSynchronizationService.cs (.../StabilityStoneCoverDataSynchronizationService.cs) (revision 2973c5f790a5131e427bd5f73e2a620044199639) +++ Ringtoets/StabilityStoneCover/src/Ringtoets.StabilityStoneCover.Service/StabilityStoneCoverDataSynchronizationService.cs (.../StabilityStoneCoverDataSynchronizationService.cs) (revision 77ac74d895ded1f0d1f81a67b02a2f4d80299a3b) @@ -23,6 +23,7 @@ using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; +using Core.Common.Utils.Extensions; using Ringtoets.HydraRing.Data; using Ringtoets.StabilityStoneCover.Data; @@ -95,6 +96,32 @@ return affectedItems; } + /// + /// Clears the output for all calculations in the . + /// + /// The + /// which contains the calculations. + /// An of calculations which are affected by + /// clearing the output. + /// Thrown when + /// is null. + public static IEnumerable ClearAllWaveConditionsCalculationOutput(StabilityStoneCoverFailureMechanism failureMechanism) + { + if (failureMechanism == null) + { + throw new ArgumentNullException("failureMechanism"); + } + + var affectedItems = failureMechanism.Calculations + .Cast() + .Where(c => c.HasOutput) + .ToArray(); + + affectedItems.ForEachElementDo(ClearWaveConditionsCalculationOutput); + + return affectedItems; + } + private static void ClearHydraulicBoundaryLocation(StabilityStoneCoverWaveConditionsCalculation calculation) { calculation.InputParameters.HydraulicBoundaryLocation = null; Index: Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Service.Test/StabilityStoneCoverDataSynchronizationServiceTest.cs =================================================================== diff -u -rc96cfd7d2d167db3b0775f7d76f320c5e582ae27 -r77ac74d895ded1f0d1f81a67b02a2f4d80299a3b --- Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Service.Test/StabilityStoneCoverDataSynchronizationServiceTest.cs (.../StabilityStoneCoverDataSynchronizationServiceTest.cs) (revision c96cfd7d2d167db3b0775f7d76f320c5e582ae27) +++ Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Service.Test/StabilityStoneCoverDataSynchronizationServiceTest.cs (.../StabilityStoneCoverDataSynchronizationServiceTest.cs) (revision 77ac74d895ded1f0d1f81a67b02a2f4d80299a3b) @@ -23,6 +23,7 @@ using System.Collections.Generic; using System.Linq; using NUnit.Framework; +using Ringtoets.Common.Data.Probability; using Ringtoets.HydraRing.Data; using Ringtoets.Revetment.Data; using Ringtoets.StabilityStoneCover.Data; @@ -230,5 +231,52 @@ // Assert CollectionAssert.IsEmpty(affectedItems); } + + [Test] + public void ClearAllWaveConditionsCalculationOutput_FailureMechanismNull_ThrowsArgumentNullException() + { + // Call + TestDelegate call = () => StabilityStoneCoverDataSynchronizationService.ClearAllWaveConditionsCalculationOutput(null); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("failureMechanism", exception.ParamName); + } + + [Test] + public void ClearAllWaveConditionsCalculationOutput_WithOutput_ClearsCalculationsOutputAndReturnsAffectedCalculations() + { + // Setup + StabilityStoneCoverFailureMechanism failureMechanism = new StabilityStoneCoverFailureMechanism(); + StabilityStoneCoverWaveConditionsCalculation calculation1 = new StabilityStoneCoverWaveConditionsCalculation + { + Output = new StabilityStoneCoverWaveConditionsOutput(Enumerable.Empty(), Enumerable.Empty()) + }; + + StabilityStoneCoverWaveConditionsCalculation calculation2 = new StabilityStoneCoverWaveConditionsCalculation + { + Output = new StabilityStoneCoverWaveConditionsOutput(Enumerable.Empty(), Enumerable.Empty()) + }; + + StabilityStoneCoverWaveConditionsCalculation calculation3 = new StabilityStoneCoverWaveConditionsCalculation(); + + failureMechanism.WaveConditionsCalculationGroup.Children.Add(calculation1); + failureMechanism.WaveConditionsCalculationGroup.Children.Add(calculation2); + failureMechanism.WaveConditionsCalculationGroup.Children.Add(calculation3); + + // Call + IEnumerable affectedItems = StabilityStoneCoverDataSynchronizationService.ClearAllWaveConditionsCalculationOutput(failureMechanism); + + // Assert + foreach (StabilityStoneCoverWaveConditionsCalculation calculation in failureMechanism.WaveConditionsCalculationGroup.Children.Cast()) + { + Assert.IsNull(calculation.Output); + } + CollectionAssert.AreEqual(new[] + { + calculation1, + calculation2 + }, affectedItems); + } } } \ No newline at end of file