Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Forms/PropertyClasses/GrassCoverErosionInwardsInputContextProperties.cs
===================================================================
diff -u -r75c87ba087fcb4bf89090d844455b215b25b4a75 -r68f69d1b55ec8a2b5804548507740706b5d824cc
--- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Forms/PropertyClasses/GrassCoverErosionInwardsInputContextProperties.cs (.../GrassCoverErosionInwardsInputContextProperties.cs) (revision 75c87ba087fcb4bf89090d844455b215b25b4a75)
+++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Forms/PropertyClasses/GrassCoverErosionInwardsInputContextProperties.cs (.../GrassCoverErosionInwardsInputContextProperties.cs) (revision 68f69d1b55ec8a2b5804548507740706b5d824cc)
@@ -267,8 +267,7 @@
}
set
{
- data.WrappedData.ShouldDikeHeightIllustrationPointsBeCalculated = value;
- data.WrappedData.NotifyObservers();
+ PropertyChangeHelper.ChangePropertyAndNotify(() => data.WrappedData.ShouldDikeHeightIllustrationPointsBeCalculated = value, propertyChangeHandler);
}
}
@@ -283,8 +282,7 @@
}
set
{
- data.WrappedData.ShouldOvertoppingRateIllustrationPointsBeCalculated = value;
- data.WrappedData.NotifyObservers();
+ PropertyChangeHelper.ChangePropertyAndNotify(() => data.WrappedData.ShouldOvertoppingRateIllustrationPointsBeCalculated = value, propertyChangeHandler);
}
}
@@ -299,8 +297,7 @@
}
set
{
- data.WrappedData.ShouldOvertoppingOutputIllustrationPointsBeCalculated = value;
- data.WrappedData.NotifyObservers();
+ PropertyChangeHelper.ChangePropertyAndNotify(() => data.WrappedData.ShouldOvertoppingOutputIllustrationPointsBeCalculated = value, propertyChangeHandler);
}
}
Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/GrassCoverErosionInwardsCalculationService.cs
===================================================================
diff -u -rc77ccbb8b26516270f36ef53110be573839f3470 -r68f69d1b55ec8a2b5804548507740706b5d824cc
--- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/GrassCoverErosionInwardsCalculationService.cs (.../GrassCoverErosionInwardsCalculationService.cs) (revision c77ccbb8b26516270f36ef53110be573839f3470)
+++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/GrassCoverErosionInwardsCalculationService.cs (.../GrassCoverErosionInwardsCalculationService.cs) (revision 68f69d1b55ec8a2b5804548507740706b5d824cc)
@@ -728,7 +728,7 @@
/// The to base the
/// to create on.
///
- private GeneralResult ConvertIllustrationPointsResult(GeneralResult result, string errorMessage)
+ public GeneralResult ConvertIllustrationPointsResult(GeneralResult result, string errorMessage)
{
if (result == null)
{
Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/PropertyClasses/GrassCoverErosionInwardsInputContextPropertiesTest.cs
===================================================================
diff -u -r75c87ba087fcb4bf89090d844455b215b25b4a75 -r68f69d1b55ec8a2b5804548507740706b5d824cc
--- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/PropertyClasses/GrassCoverErosionInwardsInputContextPropertiesTest.cs (.../GrassCoverErosionInwardsInputContextPropertiesTest.cs) (revision 75c87ba087fcb4bf89090d844455b215b25b4a75)
+++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/PropertyClasses/GrassCoverErosionInwardsInputContextPropertiesTest.cs (.../GrassCoverErosionInwardsInputContextPropertiesTest.cs) (revision 68f69d1b55ec8a2b5804548507740706b5d824cc)
@@ -258,6 +258,24 @@
}
[Test]
+ public void ShouldOvertoppingOutputIllustrationPointsBeCalculated_Always_InputChangedAndObservablesNotified()
+ {
+ SetPropertyAndVerifyNotifcationsAndOutput(properties => properties.ShouldOvertoppingOutputIllustrationPointsBeCalculated = true);
+ }
+
+ [Test]
+ public void ShouldDikeHeightIllustrationPointsBeCalculated_Always_InputChangedAndObservablesNotified()
+ {
+ SetPropertyAndVerifyNotifcationsAndOutput(properties => properties.ShouldDikeHeightIllustrationPointsBeCalculated = true);
+ }
+
+ [Test]
+ public void ShouldOvertoppingRateIllustrationPointsBeCalculated_Always_InputChangedAndObservablesNotified()
+ {
+ SetPropertyAndVerifyNotifcationsAndOutput(properties => properties.ShouldOvertoppingRateIllustrationPointsBeCalculated = true);
+ }
+
+ [Test]
public void SelectedHydraulicBoundaryLocation_Always_InputChangedAndObservablesNotified()
{
var selectableLocation = new SelectableHydraulicBoundaryLocation(new TestHydraulicBoundaryLocation(), new Point2D(0, 0));
Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Service.Test/GrassCoverErosionInwardsCalculationServiceTest.cs
===================================================================
diff -u -r75c87ba087fcb4bf89090d844455b215b25b4a75 -r68f69d1b55ec8a2b5804548507740706b5d824cc
--- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Service.Test/GrassCoverErosionInwardsCalculationServiceTest.cs (.../GrassCoverErosionInwardsCalculationServiceTest.cs) (revision 75c87ba087fcb4bf89090d844455b215b25b4a75)
+++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Service.Test/GrassCoverErosionInwardsCalculationServiceTest.cs (.../GrassCoverErosionInwardsCalculationServiceTest.cs) (revision 68f69d1b55ec8a2b5804548507740706b5d824cc)
@@ -29,13 +29,16 @@
using Rhino.Mocks;
using Ringtoets.Common.Data.AssessmentSection;
using Ringtoets.Common.Data.DikeProfiles;
+using Ringtoets.Common.Data.Exceptions;
using Ringtoets.Common.Data.Hydraulics;
using Ringtoets.Common.Data.Probability;
using Ringtoets.Common.Data.TestUtil;
using Ringtoets.Common.Service.TestUtil;
using Ringtoets.GrassCoverErosionInwards.Data;
using Ringtoets.GrassCoverErosionInwards.Service.TestUtil;
using Ringtoets.HydraRing.Calculation.Calculator.Factory;
+using Ringtoets.HydraRing.Calculation.Data.Input.Overtopping;
+using Ringtoets.HydraRing.Calculation.Data.Output.IllustrationPoints;
using Ringtoets.HydraRing.Calculation.Exceptions;
using Ringtoets.HydraRing.Calculation.TestUtil.Calculator;
using Ringtoets.HydraRing.Calculation.TestUtil.IllustrationPoints;
@@ -1684,6 +1687,108 @@
}
}
+
+ [Test]
+ public void ConvertIllustrationPointsResult_ResultNull_WarnErrorMessage()
+ {
+ // Setup
+ GeneralResult generalResult = null;
+
+ var errorMessage = "Error Message, input null";
+ var service = new GrassCoverErosionInwardsCalculationService();
+
+ // Call
+ var exceptionThrown = false;
+
+ // Call
+ Action call = () =>
+ {
+ try
+ {
+ service.ConvertIllustrationPointsResult(generalResult, errorMessage);
+ }
+ catch (IllustrationPointConversionException)
+ {
+ exceptionThrown = true;
+ }
+ };
+
+ // Assert
+ TestHelper.AssertLogMessages(call, messages =>
+ {
+ string[] msgs = messages.ToArray();
+ Assert.AreEqual(errorMessage, msgs[0]);
+ Assert.IsFalse(exceptionThrown);
+ });
+ }
+
+ [Test]
+ public void Calculate_ValidInputButIllustrationPointResultsInvalid_IllustrationPointsNotSetAndLogsWarning()
+ {
+ // Setup
+ GrassCoverErosionInwardsFailureMechanism failureMechanism = CreateGrassCoverErosionInwardsFailureMechanism();
+
+ var mockRepository = new MockRepository();
+ var calculatorFactory = mockRepository.StrictMock();
+ calculatorFactory.Expect(cf => cf.CreateOvertoppingCalculator(testDataPath)).Return(new TestOvertoppingCalculator
+ {
+ IllustrationPointsResult = TestGeneralResult.CreateGeneralResultWithSubMechanismIllustrationPoints()
+ });
+ calculatorFactory.Stub(cf => cf.CreateDikeHeightCalculator(testDataPath)).Return(new TestHydraulicLoadsCalculator
+ {
+ IllustrationPointsResult = TestGeneralResult.CreateGeneralResultWithSubMechanismIllustrationPoints()
+ });
+ calculatorFactory.Stub(cf => cf.CreateOvertoppingRateCalculator(testDataPath)).Return(new TestHydraulicLoadsCalculator
+ {
+ IllustrationPointsResult = TestGeneralResult.CreateGeneralResultWithSubMechanismIllustrationPoints()
+ });
+ IAssessmentSection assessmentSectionStub = AssessmentSectionHelper.CreateAssessmentSectionStub(failureMechanism,
+ mockRepository,
+ validFile);
+ mockRepository.ReplayAll();
+
+ DikeProfile dikeProfile = GetDikeProfile();
+
+ var hydraulicBoundary = new TestHydraulicBoundaryLocation();
+ var calculation = new GrassCoverErosionInwardsCalculation
+ {
+ InputParameters =
+ {
+ HydraulicBoundaryLocation = hydraulicBoundary,
+ DikeProfile = dikeProfile,
+ DikeHeightCalculationType = DikeHeightCalculationType.CalculateByAssessmentSectionNorm,
+ OvertoppingRateCalculationType = OvertoppingRateCalculationType.CalculateByAssessmentSectionNorm,
+ UseForeshore = true,
+ ShouldDikeHeightIllustrationPointsBeCalculated = true,
+ ShouldOvertoppingOutputIllustrationPointsBeCalculated = false,
+ ShouldOvertoppingRateIllustrationPointsBeCalculated = false
+ }
+ };
+
+ using (new HydraRingCalculatorFactoryConfig(calculatorFactory))
+ {
+ // Call
+ Action call = () => new GrassCoverErosionInwardsCalculationService().Calculate(calculation,
+ assessmentSectionStub,
+ failureMechanism.GeneralInput,
+ failureMechanism.Contribution,
+ validFile);
+
+ // Assert
+ TestHelper.AssertLogMessages(call, messages =>
+ {
+ string[] msgs = messages.ToArray();
+
+ Assert.AreEqual(8, msgs.Length);
+
+ CalculationServiceTestHelper.AssertCalculationStartMessage(msgs[0]);
+ Assert.AreEqual("Het uitlezen van illustratiepunten is mislukt.", msgs[4]);
+ });
+ Assert.IsNotNull(calculation.Output);
+ Assert.IsNull(calculation.Output.DikeHeightOutput.GeneralFaultTreeIllustrationPoint);
+ }
+
+ }
private static GrassCoverErosionInwardsFailureMechanism CreateGrassCoverErosionInwardsFailureMechanism()
{
return new GrassCoverErosionInwardsFailureMechanism