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