Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/GrassCoverErosionInwardsCalculationActivity.cs
===================================================================
diff -u -r08adf25cc7efeb88759bcba90e9881466fbf60f9 -r033d7b8a24f6a4b966258700bc135a1a68881aff
--- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/GrassCoverErosionInwardsCalculationActivity.cs (.../GrassCoverErosionInwardsCalculationActivity.cs) (revision 08adf25cc7efeb88759bcba90e9881466fbf60f9)
+++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/GrassCoverErosionInwardsCalculationActivity.cs (.../GrassCoverErosionInwardsCalculationActivity.cs) (revision 033d7b8a24f6a4b966258700bc135a1a68881aff)
@@ -25,6 +25,7 @@
using Ringtoets.Common.Data.FailureMechanism;
using Ringtoets.Common.Service;
using Ringtoets.GrassCoverErosionInwards.Data;
+using Ringtoets.GrassCoverErosionInwards.Service.Properties;
using Ringtoets.GrassCoverErosionInwards.Utils;
using Ringtoets.HydraRing.Calculation.Activities;
@@ -89,12 +90,30 @@
PerformRun(() => GrassCoverErosionInwardsCalculationService.Validate(calculation, assessmentSection),
() => calculation.ClearOutput(),
- () => GrassCoverErosionInwardsCalculationService.Calculate(calculation,
- assessmentSection,
- hlcdDirectory,
- failureMechanismSection,
- failureMechanismSection.Name, // TODO: Provide name of reference line instead
- failureMechanism.GeneralInput));
+ () =>
+ {
+ ProgressText = Resources.GrassCoverErosionInwardsCalculationActivity_OnRun_Calculate_probability;
+ GrassCoverErosionInwardsCalculationServiceOutput output =
+ GrassCoverErosionInwardsCalculationService.CalculateProbability(calculation,
+ hlcdDirectory,
+ failureMechanismSection,
+ failureMechanismSection.Name, // TODO: Provide name of reference line instead
+ failureMechanism.GeneralInput);
+
+ if (output != null && calculation.InputParameters.CalculateDikeHeight)
+ {
+ ProgressText = Resources.GrassCoverErosionInwardsCalculationActivity_OnRun_Calculate_dikeHeight;
+ output.DikeHeight =
+ GrassCoverErosionInwardsCalculationService.CalculateDikeHeight(calculation,
+ assessmentSection,
+ hlcdDirectory,
+ failureMechanismSection,
+ failureMechanismSection.Name, // TODO : Provide name of reference line instead
+ failureMechanism.GeneralInput);
+ }
+
+ return output;
+ });
}
protected override void OnFinish()
Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/GrassCoverErosionInwardsCalculationService.cs
===================================================================
diff -u -ra2816cf7e28f73c0ea8c9432cee533ace72543cc -r033d7b8a24f6a4b966258700bc135a1a68881aff
--- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/GrassCoverErosionInwardsCalculationService.cs (.../GrassCoverErosionInwardsCalculationService.cs) (revision a2816cf7e28f73c0ea8c9432cee533ace72543cc)
+++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/GrassCoverErosionInwardsCalculationService.cs (.../GrassCoverErosionInwardsCalculationService.cs) (revision 033d7b8a24f6a4b966258700bc135a1a68881aff)
@@ -58,26 +58,23 @@
}
///
- /// Performs a grass cover erosion inwards calculation based on the supplied and sets
- /// if the calculation was successful. Error and status information is logged during the execution of the operation.
+ /// Performs a grass cover erosion inwards calculation based on the supplied
+ /// and sets if the calculation was successful.
+ /// Error and status information is logged during the execution of the operation.
///
/// The that holds all the information required to perform the calculation.
- /// The that holds information about the norm used in the calculation.
/// The directory of the HLCD file that should be used for performing the calculation.
/// The to create input with.
/// The id of the ring to perform the calculation for.
/// Calculation input parameters that apply to all instances.
/// A on a successful calculation, null otherwise.
- internal static GrassCoverErosionInwardsCalculationServiceOutput Calculate(GrassCoverErosionInwardsCalculation calculation,
- IAssessmentSection assessmentSection,
- string hlcdDirectory, FailureMechanismSection failureMechanismSection,
- string ringId, GeneralGrassCoverErosionInwardsInput generalInput)
+ internal static GrassCoverErosionInwardsCalculationServiceOutput CalculateProbability(GrassCoverErosionInwardsCalculation calculation,
+ string hlcdDirectory, FailureMechanismSection failureMechanismSection,
+ string ringId, GeneralGrassCoverErosionInwardsInput generalInput)
{
OvertoppingCalculationInput overtoppingCalculationInput = CreateOvertoppingInput(calculation, failureMechanismSection, generalInput);
var exceedanceProbabilityCalculationParser = new ExceedanceProbabilityCalculationParser();
var waveHeightCalculationParser = new WaveHeightCalculationParser();
- var targetProbabiltyCalculationParser = new TargetProbabilityCalculationParser();
- var calculateDikeHeight = calculation.InputParameters.CalculateDikeHeight;
CalculationServiceHelper.PerformCalculation(
calculation.Name,
@@ -96,44 +93,56 @@
});
VerifyOvertoppingCalculationOutput(exceedanceProbabilityCalculationParser.Output, waveHeightCalculationParser.Output, calculation.Name);
+ });
- if (calculateDikeHeight)
- {
- DikeHeightCalculationInput dikeHeightCalculationInput = CreateDikeHeightInput(calculation, assessmentSection, failureMechanismSection, generalInput);
+ return exceedanceProbabilityCalculationParser.Output != null
+ && waveHeightCalculationParser.Output != null ? new GrassCoverErosionInwardsCalculationServiceOutput(
+ exceedanceProbabilityCalculationParser.Output.Beta,
+ waveHeightCalculationParser.Output.WaveHeight,
+ waveHeightCalculationParser.Output.IsOvertoppingDominant,
+ null) : null;
+ }
- HydraRingCalculationService.PerformCalculation(
- hlcdDirectory,
- ringId,
- HydraRingTimeIntegrationSchemeType.FerryBorgesCastanheta,
- HydraRingUncertaintiesType.All,
- dikeHeightCalculationInput,
- new IHydraRingFileParser[]
- {
- targetProbabiltyCalculationParser
- });
+ ///
+ /// Performs a grass cover erosion inwards dike height calculation based on the supplied
+ /// and sets if the calculation was successful.
+ /// Error and status information is logged during the execution of the operation.
+ ///
+ /// The that holds all the information required to perform the calculation.
+ /// The that holds information about the norm used in the calculation.
+ /// The directory of the HLCD file that should be used for performing the calculation.
+ /// The to create input with.
+ /// The id of the ring to perform the calculation for.
+ /// Calculation input parameters that apply to all instances.
+ /// A double with a value on a successful calculation, double.NaN otherwise.
+ internal static double CalculateDikeHeight(GrassCoverErosionInwardsCalculation calculation,
+ IAssessmentSection assessmentSection,
+ string hlcdDirectory, FailureMechanismSection failureMechanismSection,
+ string ringId, GeneralGrassCoverErosionInwardsInput generalInput)
+ {
+ var targetProbabiltyCalculationParser = new TargetProbabilityCalculationParser();
- VerifyDikeHeightCalculationOutput(targetProbabiltyCalculationParser.Output, calculation.Name);
- }
- });
+ CalculationServiceHelper.PerformCalculation(
+ calculation.Name,
+ () =>
+ {
+ DikeHeightCalculationInput dikeHeightCalculationInput = CreateDikeHeightInput(calculation, assessmentSection, failureMechanismSection, generalInput);
- if (exceedanceProbabilityCalculationParser.Output == null || waveHeightCalculationParser.Output == null)
- {
- return null;
- }
+ HydraRingCalculationService.PerformCalculation(
+ hlcdDirectory,
+ ringId,
+ HydraRingTimeIntegrationSchemeType.FerryBorgesCastanheta,
+ HydraRingUncertaintiesType.All,
+ dikeHeightCalculationInput,
+ new IHydraRingFileParser[]
+ {
+ targetProbabiltyCalculationParser
+ });
- double? dikeHeightOutput = null;
+ VerifyDikeHeightCalculationOutput(targetProbabiltyCalculationParser.Output, calculation.Name);
+ });
- if (calculateDikeHeight)
- {
- TargetProbabilityCalculationOutput output = targetProbabiltyCalculationParser.Output;
- dikeHeightOutput = output == null ? double.NaN : output.Result;
- }
-
- return new GrassCoverErosionInwardsCalculationServiceOutput(
- exceedanceProbabilityCalculationParser.Output.Beta,
- waveHeightCalculationParser.Output.WaveHeight,
- waveHeightCalculationParser.Output.IsOvertoppingDominant,
- dikeHeightOutput);
+ return targetProbabiltyCalculationParser.Output == null ? double.NaN : targetProbabiltyCalculationParser.Output.Result;
}
private static void VerifyOvertoppingCalculationOutput(ExceedanceProbabilityCalculationOutput exceedanceOutput, WaveHeightCalculationOutput waveHeightOutput, string name)
@@ -152,25 +161,27 @@
}
}
- private static OvertoppingCalculationInput CreateOvertoppingInput(GrassCoverErosionInwardsCalculation calculation, FailureMechanismSection failureMechanismSection, GeneralGrassCoverErosionInwardsInput generalInput)
+ private static OvertoppingCalculationInput CreateOvertoppingInput(GrassCoverErosionInwardsCalculation calculation,
+ FailureMechanismSection failureMechanismSection,
+ GeneralGrassCoverErosionInwardsInput generalInput)
{
return new OvertoppingCalculationInput(calculation.InputParameters.HydraulicBoundaryLocation.Id,
new HydraRingSection(1, failureMechanismSection.GetSectionLength(), calculation.InputParameters.Orientation),
- calculation.InputParameters.DikeHeight,
+ calculation.InputParameters.DikeHeight,
generalInput.CriticalOvertoppingModelFactor,
- generalInput.FbFactor.Mean,
+ generalInput.FbFactor.Mean,
generalInput.FbFactor.StandardDeviation,
- generalInput.FnFactor.Mean,
+ generalInput.FnFactor.Mean,
generalInput.FnFactor.StandardDeviation,
- generalInput.OvertoppingModelFactor,
+ generalInput.OvertoppingModelFactor,
calculation.InputParameters.CriticalFlowRate.Mean,
- calculation.InputParameters.CriticalFlowRate.StandardDeviation,
- generalInput.FrunupModelFactor.Mean,
- generalInput.FrunupModelFactor.StandardDeviation,
- generalInput.FshallowModelFactor.Mean,
- generalInput.FshallowModelFactor.StandardDeviation,
+ calculation.InputParameters.CriticalFlowRate.StandardDeviation,
+ generalInput.FrunupModelFactor.Mean,
+ generalInput.FrunupModelFactor.StandardDeviation,
+ generalInput.FshallowModelFactor.Mean,
+ generalInput.FshallowModelFactor.StandardDeviation,
ParseProfilePoints(calculation.InputParameters.DikeGeometry),
- ParseForeshore(calculation.InputParameters),
+ ParseForeshore(calculation.InputParameters),
ParseBreakWater(calculation.InputParameters));
}
Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/GrassCoverErosionInwardsCalculationServiceOutput.cs
===================================================================
diff -u -r08adf25cc7efeb88759bcba90e9881466fbf60f9 -r033d7b8a24f6a4b966258700bc135a1a68881aff
--- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/GrassCoverErosionInwardsCalculationServiceOutput.cs (.../GrassCoverErosionInwardsCalculationServiceOutput.cs) (revision 08adf25cc7efeb88759bcba90e9881466fbf60f9)
+++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/GrassCoverErosionInwardsCalculationServiceOutput.cs (.../GrassCoverErosionInwardsCalculationServiceOutput.cs) (revision 033d7b8a24f6a4b966258700bc135a1a68881aff)
@@ -58,8 +58,8 @@
public bool IsOvertoppingDominant { get; private set; }
///
- /// Gets the dike height that was a result of the dike height calculation.
+ /// Gets or sets the dike height that was a result of the dike height calculation.
///
- public double? DikeHeight { get; private set; }
+ public double? DikeHeight { get; set; }
}
}
\ No newline at end of file
Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/Properties/Resources.Designer.cs
===================================================================
diff -u -ra34dbc4a2d6b3689cde30ea81370912cdaa858ce -r033d7b8a24f6a4b966258700bc135a1a68881aff
--- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision a34dbc4a2d6b3689cde30ea81370912cdaa858ce)
+++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 033d7b8a24f6a4b966258700bc135a1a68881aff)
@@ -61,6 +61,24 @@
}
///
+ /// Looks up a localized string similar to HBN berekenen.
+ ///
+ internal static string GrassCoverErosionInwardsCalculationActivity_OnRun_Calculate_dikeHeight {
+ get {
+ return ResourceManager.GetString("GrassCoverErosionInwardsCalculationActivity_OnRun_Calculate_dikeHeight", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Faalkans berekenen.
+ ///
+ internal static string GrassCoverErosionInwardsCalculationActivity_OnRun_Calculate_probability {
+ get {
+ return ResourceManager.GetString("GrassCoverErosionInwardsCalculationActivity_OnRun_Calculate_probability", resourceCulture);
+ }
+ }
+
+ ///
/// Looks up a localized string similar to De berekening voor grasbekleding erosie kruin en binnentalud '{0}' is niet gelukt..
///
internal static string GrassCoverErosionInwardsCalculationService_Calculate_Error_in_grass_cover_erosion_inwards_0_calculation {
Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/Properties/Resources.resx
===================================================================
diff -u -ra34dbc4a2d6b3689cde30ea81370912cdaa858ce -r033d7b8a24f6a4b966258700bc135a1a68881aff
--- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/Properties/Resources.resx (.../Resources.resx) (revision a34dbc4a2d6b3689cde30ea81370912cdaa858ce)
+++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/Properties/Resources.resx (.../Resources.resx) (revision 033d7b8a24f6a4b966258700bc135a1a68881aff)
@@ -123,4 +123,10 @@
De HBN berekening voor grasbekleding erosie kruin en binnentalud '{0}' is niet gelukt.
+
+ Faalkans berekenen
+
+
+ HBN berekenen
+
\ No newline at end of file
Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Integration.Test/GrassCoverErosionInwardsCalculationActivityIntegrationTest.cs
===================================================================
diff -u -r53aef346fd0ee3cc79d1f5df9171c476453f2935 -r033d7b8a24f6a4b966258700bc135a1a68881aff
--- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Integration.Test/GrassCoverErosionInwardsCalculationActivityIntegrationTest.cs (.../GrassCoverErosionInwardsCalculationActivityIntegrationTest.cs) (revision 53aef346fd0ee3cc79d1f5df9171c476453f2935)
+++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Integration.Test/GrassCoverErosionInwardsCalculationActivityIntegrationTest.cs (.../GrassCoverErosionInwardsCalculationActivityIntegrationTest.cs) (revision 033d7b8a24f6a4b966258700bc135a1a68881aff)
@@ -33,6 +33,7 @@
using Ringtoets.Common.Data.FailureMechanism;
using Ringtoets.GrassCoverErosionInwards.Data;
using Ringtoets.GrassCoverErosionInwards.Service;
+using Ringtoets.GrassCoverErosionInwards.Service.Properties;
using Ringtoets.HydraRing.Data;
using Ringtoets.Integration.Data;
using Ringtoets.Integration.Plugin.FileImporters;
@@ -186,7 +187,7 @@
}
};
- var activity = new GrassCoverErosionInwardsCalculationActivity(calculation, testDataPath, assessmentSection.GrassCoverErosionInwards, assessmentSection);
+ var activity = new GrassCoverErosionInwardsCalculationActivity(calculation, testDataPath, assessmentSection.GrassCoverErosionInwards, assessmentSection);
// Call
Action call = () => activity.Run();
@@ -205,7 +206,7 @@
}
[Test]
- public void Run_InvalidGrassCoverErosionInwardsCalculationAndRan_PerformGrassCoverErosionInwardsValidationAndCalculationAndLogStartAndEndAndError()
+ public void Run_InvalidGrassCoverErosionInwardsCalculationAndRan_PerformGrassCoverErosionInwardsValidationAndCalculationAndLogStartAndEndAndErrorAndDoesNotPerformDikeHeightCalculation()
{
// Setup
var mocks = new MockRepository();
@@ -253,11 +254,161 @@
}
[Test]
- public void Finish_ValidGrassCoverErosionInwardsCalculationAndRan_SetsOutputAndNotifyObserversOfGrassCoverErosionInwardsCalculation()
+ public void Run_CalculateDikeHeightTrueAndValidProbabilityCalculationAndInvalidDikeHeightCalculationAndRan_PerformGrassCoverErosionInwardsValidationAndCalculationAndLogStartAndEndAndError()
{
// Setup
var mocks = new MockRepository();
var observerMock = mocks.StrictMock();
+ mocks.ReplayAll();
+
+ var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike)
+ {
+ FailureMechanismContribution =
+ {
+ Norm = 1
+ }
+ };
+ ImportHydraulicBoundaryDatabase(assessmentSection);
+
+ assessmentSection.GrassCoverErosionInwards.AddSection(new FailureMechanismSection("test section", new[]
+ {
+ new Point2D(0, 0),
+ new Point2D(1, 1)
+ }));
+
+ var calculation = new GrassCoverErosionInwardsCalculation
+ {
+ InputParameters =
+ {
+ HydraulicBoundaryLocation = assessmentSection.HydraulicBoundaryDatabase.Locations.First(hl => hl.Id == 1300001),
+ DikeProfile = CreateDikeProfile(),
+ CalculateDikeHeight = true
+ }
+ };
+
+ calculation.Attach(observerMock);
+
+ var activity = new GrassCoverErosionInwardsCalculationActivity(calculation, testDataPath, assessmentSection.GrassCoverErosionInwards, assessmentSection);
+
+ // Call
+ Action call = () => activity.Run();
+
+ // Assert
+ TestHelper.AssertLogMessages(call, messages =>
+ {
+ var msgs = messages.ToArray();
+ Assert.AreEqual(7, msgs.Length);
+ StringAssert.StartsWith(String.Format("Validatie van '{0}' gestart om: ", calculation.Name), msgs[0]);
+ StringAssert.StartsWith(String.Format("Validatie van '{0}' beëindigd om: ", calculation.Name), msgs[1]);
+ StringAssert.StartsWith(String.Format("Berekening van '{0}' gestart om: ", calculation.Name), msgs[2]);
+ StringAssert.StartsWith(String.Format("Berekening van '{0}' beëindigd om: ", calculation.Name), msgs[3]);
+ StringAssert.StartsWith(String.Format("Berekening van '{0}' gestart om: ", calculation.Name), msgs[4]);
+ StringAssert.StartsWith(String.Format("De HBN berekening voor grasbekleding erosie kruin en binnentalud '{0}' is niet gelukt.", calculation.Name), msgs[5]);
+ StringAssert.StartsWith(String.Format("Berekening van '{0}' beëindigd om: ", calculation.Name), msgs[6]);
+ });
+ Assert.AreEqual(ActivityState.Executed, activity.State);
+ mocks.VerifyAll(); // Expect no calls on the observer
+ }
+
+ [Test]
+ public void Run_CalculateDikeHeightFalse_ProgressTextSetToProbabilityCalculation()
+ {
+ var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike);
+ ImportHydraulicBoundaryDatabase(assessmentSection);
+
+ assessmentSection.GrassCoverErosionInwards.AddSection(new FailureMechanismSection("test section", new[]
+ {
+ new Point2D(0, 0),
+ new Point2D(1, 1)
+ }));
+
+ var calculation = new GrassCoverErosionInwardsCalculation
+ {
+ InputParameters =
+ {
+ HydraulicBoundaryLocation = assessmentSection.HydraulicBoundaryDatabase.Locations.First(hl => hl.Id == 1300001),
+ DikeProfile = CreateDikeProfile(),
+ CalculateDikeHeight = false
+ }
+ };
+
+ var activity = new GrassCoverErosionInwardsCalculationActivity(calculation, testDataPath, assessmentSection.GrassCoverErosionInwards, assessmentSection);
+
+ // Call
+ activity.Run();
+
+ // Assert
+ Assert.AreEqual(Resources.GrassCoverErosionInwardsCalculationActivity_OnRun_Calculate_probability, activity.ProgressText);
+ }
+
+ [Test]
+ public void Run_CalculateDikeHeightTrueAndInvalidProbabilityCalculation_ProgressTextSetToProbabilityCalculation()
+ {
+ var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike);
+ ImportHydraulicBoundaryDatabase(assessmentSection);
+
+ assessmentSection.GrassCoverErosionInwards.AddSection(new FailureMechanismSection("test section", new[]
+ {
+ new Point2D(0, 0),
+ new Point2D(1, 1)
+ }));
+
+ var calculation = new GrassCoverErosionInwardsCalculation
+ {
+ InputParameters =
+ {
+ HydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, "test", 1, 1),
+ DikeProfile = CreateDikeProfile(),
+ CalculateDikeHeight = true
+ }
+ };
+
+ var activity = new GrassCoverErosionInwardsCalculationActivity(calculation, testDataPath, assessmentSection.GrassCoverErosionInwards, assessmentSection);
+
+ // Call
+ activity.Run();
+
+ // Assert
+ Assert.AreEqual(Resources.GrassCoverErosionInwardsCalculationActivity_OnRun_Calculate_probability, activity.ProgressText);
+ }
+
+ [Test]
+ public void Run_CalculateDikeHeightTrue_ProgressTextSetToDikeHeightCalculation()
+ {
+ var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike);
+ ImportHydraulicBoundaryDatabase(assessmentSection);
+
+ assessmentSection.GrassCoverErosionInwards.AddSection(new FailureMechanismSection("test section", new[]
+ {
+ new Point2D(0, 0),
+ new Point2D(1, 1)
+ }));
+
+ var calculation = new GrassCoverErosionInwardsCalculation
+ {
+ InputParameters =
+ {
+ HydraulicBoundaryLocation = assessmentSection.HydraulicBoundaryDatabase.Locations.First(hl => hl.Id == 1300001),
+ DikeProfile = CreateDikeProfile(),
+ CalculateDikeHeight = true
+ }
+ };
+
+ var activity = new GrassCoverErosionInwardsCalculationActivity(calculation, testDataPath, assessmentSection.GrassCoverErosionInwards, assessmentSection);
+
+ // Call
+ activity.Run();
+
+ // Assert
+ Assert.AreEqual(Resources.GrassCoverErosionInwardsCalculationActivity_OnRun_Calculate_dikeHeight, activity.ProgressText);
+ }
+
+ [Test]
+ public void Finish_CalculateDikeHeightFalseAndValidGrassCoverErosionInwardsCalculationAndRan_SetsOutputAndNotifyObserversOfGrassCoverErosionInwardsCalculation()
+ {
+ // Setup
+ var mocks = new MockRepository();
+ var observerMock = mocks.StrictMock();
observerMock.Expect(o => o.UpdateObserver());
mocks.ReplayAll();
@@ -275,7 +426,8 @@
InputParameters =
{
HydraulicBoundaryLocation = assessmentSection.HydraulicBoundaryDatabase.Locations.First(hl => hl.Id == 1300001),
- DikeProfile = CreateDikeProfile()
+ DikeProfile = CreateDikeProfile(),
+ CalculateDikeHeight = false
}
};
@@ -295,11 +447,15 @@
Assert.AreEqual((RoundedDouble) 2.792, calculation.Output.Reliability);
Assert.AreEqual(1.0/250000.0, calculation.Output.RequiredProbability);
Assert.AreEqual((RoundedDouble) 4.465, calculation.Output.RequiredReliability);
+ Assert.IsNaN(calculation.Output.DikeHeight);
+ Assert.IsFalse(calculation.Output.DikeHeightCalculated);
mocks.VerifyAll();
}
[Test]
- public void Finish_InvalidGrassCoverErosionInwardsCalculationAndRan_DoesNotSetOutputAndNotifyObserversOfGrassCoverErosionInwardsCalculation()
+ [TestCase(false, TestName = "Finish_InvalidCalculationAndRan_DoesNotSetOutputAndNotifyObservers(false)")]
+ [TestCase(true, TestName = "Finish_InvalidCalculationAndRan_DoesNotSetOutputAndNotifyObservers(true)")]
+ public void Finish_InvalidGrassCoverErosionInwardsCalculationAndRan_DoesNotSetOutputAndNotifyObservers(bool calculateDikeHeight)
{
// Setup
var mocks = new MockRepository();
@@ -320,7 +476,8 @@
{
InputParameters =
{
- HydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, "test", 1, 1)
+ HydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, "test", 1, 1),
+ CalculateDikeHeight = calculateDikeHeight
}
};
@@ -335,9 +492,108 @@
// Assert
Assert.IsNull(calculation.Output);
- mocks.VerifyAll(); // Expect no calls on the observer
+ mocks.VerifyAll();
}
+ [Test]
+ public void Finish_CalculateDikeHeightTrueAndValidCalculationsAndRan_OutputSetAndObserversNotified()
+ {
+ // Setup
+ var mocks = new MockRepository();
+ var observerMock = mocks.StrictMock();
+ observerMock.Expect(o => o.UpdateObserver());
+ mocks.ReplayAll();
+
+ var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike);
+ ImportHydraulicBoundaryDatabase(assessmentSection);
+
+ assessmentSection.GrassCoverErosionInwards.AddSection(new FailureMechanismSection("test section", new[]
+ {
+ new Point2D(0, 0),
+ new Point2D(1, 1)
+ }));
+
+ var calculation = new GrassCoverErosionInwardsCalculation
+ {
+ InputParameters =
+ {
+ HydraulicBoundaryLocation = assessmentSection.HydraulicBoundaryDatabase.Locations.First(hl => hl.Id == 1300001),
+ DikeProfile = CreateDikeProfile(),
+ CalculateDikeHeight = true
+ }
+ };
+
+ calculation.Attach(observerMock);
+
+ var activity = new GrassCoverErosionInwardsCalculationActivity(calculation, testDataPath, assessmentSection.GrassCoverErosionInwards, assessmentSection);
+
+ activity.Run();
+
+ // Call
+ activity.Finish();
+
+ // Assert
+ Assert.IsNotNull(calculation.Output);
+ Assert.AreEqual((RoundedDouble) 0.625, calculation.Output.FactorOfSafety);
+ Assert.AreEqual(0.002617555933643434d, calculation.Output.Probability);
+ Assert.AreEqual((RoundedDouble) 2.792, calculation.Output.Reliability);
+ Assert.AreEqual(1.0/250000.0, calculation.Output.RequiredProbability);
+ Assert.AreEqual((RoundedDouble) 4.465, calculation.Output.RequiredReliability);
+ Assert.AreEqual((RoundedDouble) 6.94, calculation.Output.DikeHeight);
+ Assert.IsTrue(calculation.Output.DikeHeightCalculated);
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ public void Finish_CalculateDikeHeightTrueAndInvalidDikeHeightCalculationAndRan_OutputSetAndObserversNotified()
+ {
+ // Setup
+ var mocks = new MockRepository();
+ var observerMock = mocks.StrictMock();
+ observerMock.Expect(o => o.UpdateObserver());
+ mocks.ReplayAll();
+
+ var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike)
+ {
+ FailureMechanismContribution =
+ {
+ Norm = 1
+ }
+ };
+ ImportHydraulicBoundaryDatabase(assessmentSection);
+
+ assessmentSection.GrassCoverErosionInwards.AddSection(new FailureMechanismSection("test section", new[]
+ {
+ new Point2D(0, 0),
+ new Point2D(1, 1)
+ }));
+
+ var calculation = new GrassCoverErosionInwardsCalculation
+ {
+ InputParameters =
+ {
+ HydraulicBoundaryLocation = assessmentSection.HydraulicBoundaryDatabase.Locations.First(hl => hl.Id == 1300001),
+ DikeProfile = CreateDikeProfile(),
+ CalculateDikeHeight = true
+ }
+ };
+
+ calculation.Attach(observerMock);
+
+ var activity = new GrassCoverErosionInwardsCalculationActivity(calculation, testDataPath, assessmentSection.GrassCoverErosionInwards, assessmentSection);
+
+ activity.Run();
+
+ // Call
+ activity.Finish();
+
+ // Assert
+ Assert.IsNotNull(calculation.Output);
+ Assert.IsNaN(calculation.Output.DikeHeight);
+ Assert.IsTrue(calculation.Output.DikeHeightCalculated);
+ mocks.VerifyAll();
+ }
+
private void ImportHydraulicBoundaryDatabase(AssessmentSection assessmentSection)
{
string validFilePath = Path.Combine(testDataPath, "HRD dutch coast south.sqlite");
Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Integration.Test/GrassCoverErosionInwardsCalculationServiceIntegrationTest.cs
===================================================================
diff -u -r53aef346fd0ee3cc79d1f5df9171c476453f2935 -r033d7b8a24f6a4b966258700bc135a1a68881aff
--- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Integration.Test/GrassCoverErosionInwardsCalculationServiceIntegrationTest.cs (.../GrassCoverErosionInwardsCalculationServiceIntegrationTest.cs) (revision 53aef346fd0ee3cc79d1f5df9171c476453f2935)
+++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Integration.Test/GrassCoverErosionInwardsCalculationServiceIntegrationTest.cs (.../GrassCoverErosionInwardsCalculationServiceIntegrationTest.cs) (revision 033d7b8a24f6a4b966258700bc135a1a68881aff)
@@ -189,7 +189,7 @@
}
[Test]
- public void Calculate_ValidCalculation_LogStartAndEndAndReturnOutput()
+ public void CalculateProbability_ValidCalculation_LogStartAndEndAndReturnOutput()
{
// Setup
var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike);
@@ -216,12 +216,11 @@
GrassCoverErosionInwardsCalculationServiceOutput output = null;
// Call
- Action call = () => output = GrassCoverErosionInwardsCalculationService.Calculate(calculation,
- assessmentSection,
- testDataPath,
- failureMechanismSection,
- failureMechanismSection.Name,
- assessmentSection.GrassCoverErosionInwards.GeneralInput);
+ Action call = () => output = GrassCoverErosionInwardsCalculationService.CalculateProbability(calculation,
+ testDataPath,
+ failureMechanismSection,
+ failureMechanismSection.Name,
+ assessmentSection.GrassCoverErosionInwards.GeneralInput);
// Assert
TestHelper.AssertLogMessages(call, messages =>
@@ -232,10 +231,11 @@
StringAssert.StartsWith(String.Format("Berekening van '{0}' beëindigd om: ", calculation.Name), msgs[1]);
});
Assert.IsNotNull(output);
+ Assert.IsNull(output.DikeHeight);
}
[Test]
- public void Calculate_InvalidCalculation_LogStartAndEndAndErrorMessageAndReturnNull()
+ public void CalculateProbability_InvalidCalculation_LogStartAndEndAndErrorMessageAndReturnNull()
{
// Setup
var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike);
@@ -259,12 +259,11 @@
GrassCoverErosionInwardsCalculationServiceOutput output = null;
// Call
- Action call = () => output = GrassCoverErosionInwardsCalculationService.Calculate(calculation,
- assessmentSection,
- testDataPath,
- failureMechanismSection,
- failureMechanismSection.Name,
- assessmentSection.GrassCoverErosionInwards.GeneralInput);
+ Action call = () => output = GrassCoverErosionInwardsCalculationService.CalculateProbability(calculation,
+ testDataPath,
+ failureMechanismSection,
+ failureMechanismSection.Name,
+ assessmentSection.GrassCoverErosionInwards.GeneralInput);
// Assert
TestHelper.AssertLogMessages(call, messages =>
@@ -279,7 +278,7 @@
}
[Test]
- public void Calculate_CalculateDikeHeightFalse_DikeHeightNotCalculated()
+ public void CalculateDikeHeight_CalculationValid_DikeHeightCalculated()
{
// Setup
var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike);
@@ -299,63 +298,15 @@
{
HydraulicBoundaryLocation = assessmentSection.HydraulicBoundaryDatabase.Locations.First(hl => hl.Id == 1300001),
DikeProfile = dikeProfile,
- CalculateDikeHeight = false
- }
- };
-
- var failureMechanismSection = assessmentSection.GrassCoverErosionInwards.Sections.First();
- GrassCoverErosionInwardsCalculationServiceOutput output = null;
-
- // Call
- Action call = () => output = GrassCoverErosionInwardsCalculationService.Calculate(calculation,
- assessmentSection,
- testDataPath,
- failureMechanismSection,
- failureMechanismSection.Name,
- assessmentSection.GrassCoverErosionInwards.GeneralInput);
-
- // Assert
- TestHelper.AssertLogMessages(call, messages =>
- {
- var msgs = messages.ToArray();
- Assert.AreEqual(2, msgs.Length);
- StringAssert.StartsWith(String.Format("Berekening van '{0}' gestart om: ", calculation.Name), msgs[0]);
- StringAssert.StartsWith(String.Format("Berekening van '{0}' beëindigd om: ", calculation.Name), msgs[1]);
- });
- Assert.IsNotNull(output);
- Assert.IsNull(output.DikeHeight);
- }
-
- [Test]
- public void Calculate_CalculateDikeHeightTrue_DikeHeightCalculated()
- {
- // Setup
- var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike);
- ImportHydraulicBoundaryDatabase(assessmentSection);
-
- assessmentSection.GrassCoverErosionInwards.AddSection(new FailureMechanismSection("test section", new[]
- {
- new Point2D(0, 0),
- new Point2D(1, 1)
- }));
-
- var dikeProfile = GetDikeProfile();
-
- var calculation = new GrassCoverErosionInwardsCalculation
- {
- InputParameters =
- {
- HydraulicBoundaryLocation = assessmentSection.HydraulicBoundaryDatabase.Locations.First(hl => hl.Id == 1300001),
- DikeProfile = dikeProfile,
CalculateDikeHeight = true
}
};
var failureMechanismSection = assessmentSection.GrassCoverErosionInwards.Sections.First();
- GrassCoverErosionInwardsCalculationServiceOutput output = null;
+ double? output = null;
// Call
- Action call = () => output = GrassCoverErosionInwardsCalculationService.Calculate(calculation,
+ Action call = () => output = GrassCoverErosionInwardsCalculationService.CalculateDikeHeight(calculation,
assessmentSection,
testDataPath,
failureMechanismSection,
@@ -370,12 +321,11 @@
StringAssert.StartsWith(String.Format("Berekening van '{0}' gestart om: ", calculation.Name), msgs[0]);
StringAssert.StartsWith(String.Format("Berekening van '{0}' beëindigd om: ", calculation.Name), msgs[1]);
});
- Assert.IsNotNull(output);
- Assert.AreEqual(15.5937, output.DikeHeight);
+ Assert.AreEqual(15.5937, output);
}
[Test]
- public void Calculate_CalculateDikeHeightTrueDikeHeightCalculationFails_DikeHeightOutputNaN()
+ public void CalculateDikeHeight_CalculationFails_DikeHeightOutputNaN()
{
// Setup
var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike)
@@ -406,15 +356,15 @@
};
var failureMechanismSection = assessmentSection.GrassCoverErosionInwards.Sections.First();
- GrassCoverErosionInwardsCalculationServiceOutput output = null;
+ double? output = null;
// Call
- Action call = () => output = GrassCoverErosionInwardsCalculationService.Calculate(calculation,
- assessmentSection,
- testDataPath,
- failureMechanismSection,
- failureMechanismSection.Name,
- assessmentSection.GrassCoverErosionInwards.GeneralInput);
+ Action call = () => output = GrassCoverErosionInwardsCalculationService.CalculateDikeHeight(calculation,
+ assessmentSection,
+ testDataPath,
+ failureMechanismSection,
+ failureMechanismSection.Name,
+ assessmentSection.GrassCoverErosionInwards.GeneralInput);
// Assert
TestHelper.AssertLogMessages(call, messages =>
@@ -425,58 +375,9 @@
StringAssert.StartsWith(String.Format("De HBN berekening voor grasbekleding erosie kruin en binnentalud '{0}' is niet gelukt.", calculation.Name), msgs[1]);
StringAssert.StartsWith(String.Format("Berekening van '{0}' beëindigd om: ", calculation.Name), msgs[2]);
});
- Assert.IsNotNull(output);
- Assert.IsNaN(output.DikeHeight);
+ Assert.IsNaN(output);
}
- [Test]
- public void Calculate_CalculateDikeHeightTrueAndCalculationInvalid_LogStartAndEndAndErrorMessageAndReturnNull()
- {
- // Setup
- var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike);
- ImportHydraulicBoundaryDatabase(assessmentSection);
-
- assessmentSection.GrassCoverErosionInwards.AddSection(new FailureMechanismSection("test section", new[]
- {
- new Point2D(0, 0),
- new Point2D(1, 1)
- }));
-
- var calculation = new GrassCoverErosionInwardsCalculation
- {
- InputParameters =
- {
- HydraulicBoundaryLocation = assessmentSection.HydraulicBoundaryDatabase.Locations.First(hl => hl.Id == 1300001),
- DikeProfile = new DikeProfile(new Point2D(0, 0), new RoughnessPoint[0], new Point2D[0],
- null, new DikeProfile.ConstructionProperties()),
- CalculateDikeHeight = true
- }
- };
-
- var failureMechanismSection = assessmentSection.GrassCoverErosionInwards.Sections.First();
- GrassCoverErosionInwardsCalculationServiceOutput output = null;
-
- // Call
- Action call = () => output = GrassCoverErosionInwardsCalculationService.Calculate(calculation,
- assessmentSection,
- testDataPath,
- failureMechanismSection,
- failureMechanismSection.Name,
- assessmentSection.GrassCoverErosionInwards.GeneralInput);
-
- // Assert
- TestHelper.AssertLogMessages(call, messages =>
- {
- var msgs = messages.ToArray();
- Assert.AreEqual(4, msgs.Length);
- StringAssert.StartsWith(String.Format("Berekening van '{0}' gestart om: ", calculation.Name), msgs[0]);
- StringAssert.StartsWith(String.Format("De berekening voor grasbekleding erosie kruin en binnentalud '{0}' is niet gelukt.", calculation.Name), msgs[1]);
- StringAssert.StartsWith(String.Format("De HBN berekening voor grasbekleding erosie kruin en binnentalud '{0}' is niet gelukt.", calculation.Name), msgs[2]);
- StringAssert.StartsWith(String.Format("Berekening van '{0}' beëindigd om: ", calculation.Name), msgs[3]);
- });
- Assert.IsNull(output);
- }
-
private void ImportHydraulicBoundaryDatabase(AssessmentSection assessmentSection)
{
string validFilePath = Path.Combine(testDataPath, "HRD dutch coast south.sqlite");