Index: Ringtoets/DuneErosion/src/Ringtoets.DuneErosion.Data/DuneLocationCalculation.cs =================================================================== diff -u -rc743d1f229ff553fff9a05964c1adac6e510df4a -ree62f9ef8c69cd574bd23077bf9079e3e8fbdd8c --- Ringtoets/DuneErosion/src/Ringtoets.DuneErosion.Data/DuneLocationCalculation.cs (.../DuneLocationCalculation.cs) (revision c743d1f229ff553fff9a05964c1adac6e510df4a) +++ Ringtoets/DuneErosion/src/Ringtoets.DuneErosion.Data/DuneLocationCalculation.cs (.../DuneLocationCalculation.cs) (revision ee62f9ef8c69cd574bd23077bf9079e3e8fbdd8c) @@ -20,13 +20,14 @@ // All rights reserved. using System; +using Core.Common.Base; namespace Ringtoets.DuneErosion.Data { /// /// Adapter class for a dune erosion calculation. /// - public class DuneLocationCalculation + public class DuneLocationCalculation : Observable { /// /// Creates a new instance of . Index: Ringtoets/DuneErosion/src/Ringtoets.DuneErosion.Service/DuneErosionDataSynchronizationService.cs =================================================================== diff -u -rd18c49efb0d6e0b49fb9a54daf3589d6069a62b1 -ree62f9ef8c69cd574bd23077bf9079e3e8fbdd8c --- Ringtoets/DuneErosion/src/Ringtoets.DuneErosion.Service/DuneErosionDataSynchronizationService.cs (.../DuneErosionDataSynchronizationService.cs) (revision d18c49efb0d6e0b49fb9a54daf3589d6069a62b1) +++ Ringtoets/DuneErosion/src/Ringtoets.DuneErosion.Service/DuneErosionDataSynchronizationService.cs (.../DuneErosionDataSynchronizationService.cs) (revision ee62f9ef8c69cd574bd23077bf9079e3e8fbdd8c) @@ -58,10 +58,12 @@ { throw new ArgumentNullException(nameof(failureMechanism)); } + if (hydraulicBoundaryLocations == null) { throw new ArgumentNullException(nameof(hydraulicBoundaryLocations)); } + if (duneLocations == null) { throw new ArgumentNullException(nameof(duneLocations)); @@ -112,6 +114,32 @@ .ToArray(); } + /// + /// Clears the output of the dune location calculations within the collection. + /// + /// The calculations for which the output needs to be cleared. + /// All objects changed during the clear. + /// Thrown when is null. + public static IEnumerable ClearDuneCalculationsOutput(IEnumerable calculations) + { + if (calculations == null) + { + throw new ArgumentNullException(nameof(calculations)); + } + + var affectedCalculations = new List(); + foreach (DuneLocationCalculation calculation in calculations) + { + if (calculation.Output != null) + { + calculation.Output = null; + affectedCalculations.Add(calculation); + } + } + + return affectedCalculations; + } + private static bool DoesHydraulicBoundaryLocationMatchWithDuneLocation(HydraulicBoundaryLocation hydraulicBoundaryLocation, ReadDuneLocation readDuneLocation) { Index: Ringtoets/DuneErosion/test/Ringtoets.DuneErosion.Data.Test/DuneLocationCalculationTest.cs =================================================================== diff -u -rc743d1f229ff553fff9a05964c1adac6e510df4a -ree62f9ef8c69cd574bd23077bf9079e3e8fbdd8c --- Ringtoets/DuneErosion/test/Ringtoets.DuneErosion.Data.Test/DuneLocationCalculationTest.cs (.../DuneLocationCalculationTest.cs) (revision c743d1f229ff553fff9a05964c1adac6e510df4a) +++ Ringtoets/DuneErosion/test/Ringtoets.DuneErosion.Data.Test/DuneLocationCalculationTest.cs (.../DuneLocationCalculationTest.cs) (revision ee62f9ef8c69cd574bd23077bf9079e3e8fbdd8c) @@ -20,6 +20,7 @@ // All rights reserved. using System; +using Core.Common.Base; using NUnit.Framework; using Ringtoets.DuneErosion.Data.TestUtil; @@ -46,11 +47,12 @@ var duneLocation = new TestDuneLocation(); // Call - var duneLocationCalculation = new DuneLocationCalculation(duneLocation); + var calculation = new DuneLocationCalculation(duneLocation); // Assert - Assert.AreSame(duneLocation, duneLocationCalculation.DuneLocation); - Assert.IsNull(duneLocationCalculation.Output); + Assert.IsInstanceOf(calculation); + Assert.AreSame(duneLocation, calculation.DuneLocation); + Assert.IsNull(calculation.Output); } } } Index: Ringtoets/DuneErosion/test/Ringtoets.DuneErosion.Service.Test/DuneErosionDataSynchronizationServiceTest.cs =================================================================== diff -u -rd18c49efb0d6e0b49fb9a54daf3589d6069a62b1 -ree62f9ef8c69cd574bd23077bf9079e3e8fbdd8c --- Ringtoets/DuneErosion/test/Ringtoets.DuneErosion.Service.Test/DuneErosionDataSynchronizationServiceTest.cs (.../DuneErosionDataSynchronizationServiceTest.cs) (revision d18c49efb0d6e0b49fb9a54daf3589d6069a62b1) +++ Ringtoets/DuneErosion/test/Ringtoets.DuneErosion.Service.Test/DuneErosionDataSynchronizationServiceTest.cs (.../DuneErosionDataSynchronizationServiceTest.cs) (revision ee62f9ef8c69cd574bd23077bf9079e3e8fbdd8c) @@ -252,5 +252,43 @@ location }, affected); } + + [Test] + public void ClearDuneLocationOutput_CalculationsNull_ThrowsArgumentNullException() + { + // Call + TestDelegate call = () => DuneErosionDataSynchronizationService.ClearDuneCalculationsOutput(null); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("calculations", exception.ParamName); + } + + [Test] + public void ClearDuneLocationOutput_CalculationsWithOutput_OutputClearedAndAffectedItemsReturned() + { + // Setup + var calculationWithOutput = new DuneLocationCalculation(new TestDuneLocation()) + { + Output = new TestDuneLocationOutput() + }; + var calculationWithoutOutput = new DuneLocationCalculation(new TestDuneLocation()); + + var calculations = new[] + { + calculationWithOutput, + calculationWithoutOutput + }; + + // Call + IEnumerable affected = DuneErosionDataSynchronizationService.ClearDuneCalculationsOutput(calculations); + + // Assert + Assert.IsNull(calculationWithOutput.Output); + CollectionAssert.AreEqual(new[] + { + calculationWithOutput + }, affected); + } } } \ No newline at end of file