Index: Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Service/Ringtoets.WaveImpactAsphaltCover.Service.csproj =================================================================== diff -u -r01c86929c554e5092193f6c7e0c673f58b5d2bbc -r5f55b35b1398af4604a31b78b7d4a144d209684f --- Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Service/Ringtoets.WaveImpactAsphaltCover.Service.csproj (.../Ringtoets.WaveImpactAsphaltCover.Service.csproj) (revision 01c86929c554e5092193f6c7e0c673f58b5d2bbc) +++ Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Service/Ringtoets.WaveImpactAsphaltCover.Service.csproj (.../Ringtoets.WaveImpactAsphaltCover.Service.csproj) (revision 5f55b35b1398af4604a31b78b7d4a144d209684f) @@ -55,6 +55,11 @@ Core.Common.Base False + + {F49BD8B2-332A-4C91-A196-8CCE0A2C7D98} + Core.Common.Utils + False + {D4200F43-3F72-4F42-AF0A-8CED416A38EC} Ringtoets.Common.Data Index: Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Service/WaveImpactAsphaltCoverDataSynchronizationService.cs =================================================================== diff -u -rc96cfd7d2d167db3b0775f7d76f320c5e582ae27 -r5f55b35b1398af4604a31b78b7d4a144d209684f --- Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Service/WaveImpactAsphaltCoverDataSynchronizationService.cs (.../WaveImpactAsphaltCoverDataSynchronizationService.cs) (revision c96cfd7d2d167db3b0775f7d76f320c5e582ae27) +++ Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Service/WaveImpactAsphaltCoverDataSynchronizationService.cs (.../WaveImpactAsphaltCoverDataSynchronizationService.cs) (revision 5f55b35b1398af4604a31b78b7d4a144d209684f) @@ -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.WaveImpactAsphaltCover.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(WaveImpactAsphaltCoverFailureMechanism 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(WaveImpactAsphaltCoverWaveConditionsCalculation calculation) { calculation.InputParameters.HydraulicBoundaryLocation = null; Index: Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Service.Test/WaveImpactAsphaltCoverDataSynchronizationServiceTest.cs =================================================================== diff -u -r2973c5f790a5131e427bd5f73e2a620044199639 -r5f55b35b1398af4604a31b78b7d4a144d209684f --- Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Service.Test/WaveImpactAsphaltCoverDataSynchronizationServiceTest.cs (.../WaveImpactAsphaltCoverDataSynchronizationServiceTest.cs) (revision 2973c5f790a5131e427bd5f73e2a620044199639) +++ Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Service.Test/WaveImpactAsphaltCoverDataSynchronizationServiceTest.cs (.../WaveImpactAsphaltCoverDataSynchronizationServiceTest.cs) (revision 5f55b35b1398af4604a31b78b7d4a144d209684f) @@ -229,5 +229,52 @@ // Assert CollectionAssert.IsEmpty(affectedItems); } + + [Test] + public void ClearAllWaveConditionsCalculationOutput_FailureMechanismNull_ThrowsArgumentNullException() + { + // Call + TestDelegate call = () => WaveImpactAsphaltCoverDataSynchronizationService.ClearAllWaveConditionsCalculationOutput(null); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("failureMechanism", exception.ParamName); + } + + [Test] + public void ClearAllWaveConditionsCalculationOutput_WithOutput_ClearsCalculationsOutputAndReturnsAffectedCalculations() + { + // Setup + WaveImpactAsphaltCoverFailureMechanism failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); + WaveImpactAsphaltCoverWaveConditionsCalculation calculation1 = new WaveImpactAsphaltCoverWaveConditionsCalculation + { + Output = new WaveImpactAsphaltCoverWaveConditionsOutput(Enumerable.Empty()) + }; + + WaveImpactAsphaltCoverWaveConditionsCalculation calculation2 = new WaveImpactAsphaltCoverWaveConditionsCalculation + { + Output = new WaveImpactAsphaltCoverWaveConditionsOutput(Enumerable.Empty()) + }; + + WaveImpactAsphaltCoverWaveConditionsCalculation calculation3 = new WaveImpactAsphaltCoverWaveConditionsCalculation(); + + failureMechanism.WaveConditionsCalculationGroup.Children.Add(calculation1); + failureMechanism.WaveConditionsCalculationGroup.Children.Add(calculation2); + failureMechanism.WaveConditionsCalculationGroup.Children.Add(calculation3); + + // Call + IEnumerable affectedItems = WaveImpactAsphaltCoverDataSynchronizationService.ClearAllWaveConditionsCalculationOutput(failureMechanism); + + // Assert + foreach (WaveImpactAsphaltCoverWaveConditionsCalculation calculation in failureMechanism.WaveConditionsCalculationGroup.Children.Cast()) + { + Assert.IsNull(calculation.Output); + } + CollectionAssert.AreEqual(new[] + { + calculation1, + calculation2 + }, affectedItems); + } } } \ No newline at end of file