Index: Riskeer/Integration/src/Riskeer.Integration.Data/AssessmentSection.cs
===================================================================
diff -u -r7fc10264f0bb04fb75b3879b81dcb5ab8e7287f1 -r4832cbf81ea1488c49d06ffa0d1a57764915793b
--- Riskeer/Integration/src/Riskeer.Integration.Data/AssessmentSection.cs (.../AssessmentSection.cs) (revision 7fc10264f0bb04fb75b3879b81dcb5ab8e7287f1)
+++ Riskeer/Integration/src/Riskeer.Integration.Data/AssessmentSection.cs (.../AssessmentSection.cs) (revision 4832cbf81ea1488c49d06ffa0d1a57764915793b)
@@ -22,6 +22,7 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
+using System.Linq;
using Core.Common.Base;
using Riskeer.ClosingStructures.Data;
using Riskeer.Common.Data;
@@ -233,6 +234,32 @@
}
}
+ ///
+ /// Removes hydraulic boundary location calculations for .
+ ///
+ /// The hydraulic boundary locations to remove calculations for.
+ /// Thrown when is null.
+ public void RemoveHydraulicBoundaryLocationCalculations(IEnumerable hydraulicBoundaryLocations)
+ {
+ if (hydraulicBoundaryLocations == null)
+ {
+ throw new ArgumentNullException(nameof(hydraulicBoundaryLocations));
+ }
+
+ RemoveHydraulicBoundaryLocationCalculations(waterLevelCalculationsForSignalFloodingProbability, hydraulicBoundaryLocations);
+ RemoveHydraulicBoundaryLocationCalculations(waterLevelCalculationsForMaximumAllowableFloodingProbability, hydraulicBoundaryLocations);
+
+ foreach (HydraulicBoundaryLocationCalculationsForTargetProbability element in WaterLevelCalculationsForUserDefinedTargetProbabilities)
+ {
+ RemoveHydraulicBoundaryLocationCalculations(element.HydraulicBoundaryLocationCalculations, hydraulicBoundaryLocations);
+ }
+
+ foreach (HydraulicBoundaryLocationCalculationsForTargetProbability element in WaveHeightCalculationsForUserDefinedTargetProbabilities)
+ {
+ RemoveHydraulicBoundaryLocationCalculations(element.HydraulicBoundaryLocationCalculations, hydraulicBoundaryLocations);
+ }
+ }
+
public IEnumerable GetFailureMechanisms()
{
yield return Piping;
@@ -268,22 +295,6 @@
SetFailureMechanismsToBeInAssembly();
}
- private void ClearHydraulicBoundaryLocationCalculations()
- {
- waterLevelCalculationsForSignalFloodingProbability.Clear();
- waterLevelCalculationsForMaximumAllowableFloodingProbability.Clear();
-
- foreach (HydraulicBoundaryLocationCalculationsForTargetProbability element in WaterLevelCalculationsForUserDefinedTargetProbabilities)
- {
- element.HydraulicBoundaryLocationCalculations.Clear();
- }
-
- foreach (HydraulicBoundaryLocationCalculationsForTargetProbability element in WaveHeightCalculationsForUserDefinedTargetProbabilities)
- {
- element.HydraulicBoundaryLocationCalculations.Clear();
- }
- }
-
private void AddHydraulicBoundaryLocationCalculations(HydraulicBoundaryLocation hydraulicBoundaryLocation)
{
waterLevelCalculationsForSignalFloodingProbability.Add(new HydraulicBoundaryLocationCalculation(hydraulicBoundaryLocation));
@@ -300,6 +311,12 @@
}
}
+ private static void RemoveHydraulicBoundaryLocationCalculations(List locationCalculations,
+ IEnumerable locations)
+ {
+ locationCalculations.RemoveAll(lc => locations.Contains(lc.HydraulicBoundaryLocation));
+ }
+
private void SetFailureMechanismsToBeInAssembly()
{
Piping.InAssembly = Composition != AssessmentSectionComposition.Dune;
Index: Riskeer/Integration/test/Riskeer.Integration.Data.Test/AssessmentSectionTest.cs
===================================================================
diff -u -r7fc10264f0bb04fb75b3879b81dcb5ab8e7287f1 -r4832cbf81ea1488c49d06ffa0d1a57764915793b
--- Riskeer/Integration/test/Riskeer.Integration.Data.Test/AssessmentSectionTest.cs (.../AssessmentSectionTest.cs) (revision 7fc10264f0bb04fb75b3879b81dcb5ab8e7287f1)
+++ Riskeer/Integration/test/Riskeer.Integration.Data.Test/AssessmentSectionTest.cs (.../AssessmentSectionTest.cs) (revision 4832cbf81ea1488c49d06ffa0d1a57764915793b)
@@ -336,6 +336,65 @@
Assert.AreEqual(2, waveHeightCalculationsForTargetProbability.HydraulicBoundaryLocationCalculations.Count);
}
+ [Test]
+ public void RemoveHydraulicBoundaryLocationCalculations_HydraulicBoundaryLocationsNull_ThrowsArgumentNullException()
+ {
+ // Setup
+ var random = new Random(21);
+ var assessmentSection = new AssessmentSection(random.NextEnumValue());
+
+ // Call
+ void Call() => assessmentSection.RemoveHydraulicBoundaryLocationCalculations(null);
+
+ // Assert
+ var exception = Assert.Throws(Call);
+ Assert.AreEqual("hydraulicBoundaryLocations", exception.ParamName);
+ }
+
+ [Test]
+ public void RemoveHydraulicBoundaryLocationCalculations_MultipleHydraulicBoundaryLocations_RemovesExpectedCalculations()
+ {
+ // Setup
+ var random = new Random(21);
+ var assessmentSection = new AssessmentSection(random.NextEnumValue());
+
+ var waterLevelCalculationsForTargetProbability = new HydraulicBoundaryLocationCalculationsForTargetProbability(0.1);
+ assessmentSection.WaterLevelCalculationsForUserDefinedTargetProbabilities.Add(waterLevelCalculationsForTargetProbability);
+
+ var waveHeightCalculationsForTargetProbability = new HydraulicBoundaryLocationCalculationsForTargetProbability(0.01);
+ assessmentSection.WaveHeightCalculationsForUserDefinedTargetProbabilities.Add(waveHeightCalculationsForTargetProbability);
+
+ var location1 = new TestHydraulicBoundaryLocation();
+ var location2 = new TestHydraulicBoundaryLocation();
+ var location3 = new TestHydraulicBoundaryLocation();
+
+ assessmentSection.SetHydraulicBoundaryLocationCalculations(new HydraulicBoundaryLocation[]
+ {
+ location1,
+ location2,
+ location3
+ });
+
+ // Precondition
+ Assert.AreEqual(3, assessmentSection.WaterLevelCalculationsForSignalFloodingProbability.Count());
+ Assert.AreEqual(3, assessmentSection.WaterLevelCalculationsForMaximumAllowableFloodingProbability.Count());
+ Assert.AreEqual(3, waterLevelCalculationsForTargetProbability.HydraulicBoundaryLocationCalculations.Count);
+ Assert.AreEqual(3, waveHeightCalculationsForTargetProbability.HydraulicBoundaryLocationCalculations.Count);
+
+ // Call
+ assessmentSection.RemoveHydraulicBoundaryLocationCalculations(new[]
+ {
+ location2,
+ location3
+ });
+
+ // Assert
+ Assert.AreSame(location1, assessmentSection.WaterLevelCalculationsForSignalFloodingProbability.Single().HydraulicBoundaryLocation);
+ Assert.AreSame(location1, assessmentSection.WaterLevelCalculationsForMaximumAllowableFloodingProbability.Single().HydraulicBoundaryLocation);
+ Assert.AreSame(location1, waterLevelCalculationsForTargetProbability.HydraulicBoundaryLocationCalculations.Single().HydraulicBoundaryLocation);
+ Assert.AreSame(location1, waveHeightCalculationsForTargetProbability.HydraulicBoundaryLocationCalculations.Single().HydraulicBoundaryLocation);
+ }
+
private static IEnumerable GetFailureMechanismInAssemblyStates()
{
yield return new TestCaseData(AssessmentSectionComposition.Dike, new[]