Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsGuiPlugin.cs =================================================================== diff -u -r0bb125b90287c712f303d231c1083fc79ef45a9a -r636a79efa1f104b917c48d043151ada9fc4e69ac --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsGuiPlugin.cs (.../GrassCoverErosionInwardsGuiPlugin.cs) (revision 0bb125b90287c712f303d231c1083fc79ef45a9a) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsGuiPlugin.cs (.../GrassCoverErosionInwardsGuiPlugin.cs) (revision 636a79efa1f104b917c48d043151ada9fc4e69ac) @@ -137,6 +137,7 @@ ParseForeshore(inwardsInput), ParseBreakWater(inwardsInput) ), + () => { }, output => { ParseHydraRingOutput(calculation, output); }); } Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Activities/HydraRingActivity.cs =================================================================== diff -u -re4613b1908b45105cdc5be7f3fb2f4fad823473e -r636a79efa1f104b917c48d043151ada9fc4e69ac --- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Activities/HydraRingActivity.cs (.../HydraRingActivity.cs) (revision e4613b1908b45105cdc5be7f3fb2f4fad823473e) +++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Activities/HydraRingActivity.cs (.../HydraRingActivity.cs) (revision 636a79efa1f104b917c48d043151ada9fc4e69ac) @@ -35,20 +35,17 @@ /// Creates a new instance of the class. /// /// The action to perform before running a Hydra-Ring calculation (like clearing output, validation, etc.). - /// Thrown when is null. protected HydraRingActivity(Action beforeRunAction) { - if (beforeRunAction == null) - { - throw new ArgumentNullException("beforeRunAction", @"The action to perform before run should be set."); - } - this.beforeRunAction = beforeRunAction; } protected override void OnRun() { - beforeRunAction(); + if (beforeRunAction != null) + { + beforeRunAction(); + } } } } Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Activities/HydraRingActivityFactory.cs =================================================================== diff -u -rb2ad6c7d0227c965485ec4d6f8a98f7a49a59951 -r636a79efa1f104b917c48d043151ada9fc4e69ac --- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Activities/HydraRingActivityFactory.cs (.../HydraRingActivityFactory.cs) (revision b2ad6c7d0227c965485ec4d6f8a98f7a49a59951) +++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Activities/HydraRingActivityFactory.cs (.../HydraRingActivityFactory.cs) (revision 636a79efa1f104b917c48d043151ada9fc4e69ac) @@ -44,7 +44,8 @@ /// The to use while executing the calculation. /// The to use while executing the calculation. /// The input of the calculation to perform. - /// The action to perform after the calculation is performed. + /// The action to perform before the calculation is performed. + /// The action to perform after the calculation is performed. /// Thrown when one of the string arguments is null or empty. /// Thrown when one of the other arguments is null. public static TargetProbabilityCalculationActivity Create(string name, @@ -53,11 +54,17 @@ HydraRingTimeIntegrationSchemeType timeIntegrationSchemeType, HydraRingUncertaintiesType uncertaintiesType, TargetProbabilityCalculationInput targetProbabilityCalculationInput, - Action action) + Action beforeRunAction, + Action handleOutputAction) { - VerifyCalculationActivityInput(name, hlcdDirectory, ringId, timeIntegrationSchemeType, uncertaintiesType, targetProbabilityCalculationInput, action); + VerifyCalculationActivityInput(name, hlcdDirectory, ringId, timeIntegrationSchemeType, + uncertaintiesType, targetProbabilityCalculationInput, + beforeRunAction, handleOutputAction); - return new TargetProbabilityCalculationActivity(name, hlcdDirectory, ringId, timeIntegrationSchemeType, uncertaintiesType, targetProbabilityCalculationInput, null, action, hydraRingCalculationService); + return new TargetProbabilityCalculationActivity(name, hlcdDirectory, ringId, timeIntegrationSchemeType, + uncertaintiesType, targetProbabilityCalculationInput, + beforeRunAction, handleOutputAction, + hydraRingCalculationService); } /// @@ -69,7 +76,8 @@ /// The to use while executing the calculation. /// The to use while executing the calculation. /// The input of the calculation to perform. - /// The action to perform after the calculation is performed. + /// The action to perform before the calculation is performed. + /// The action to perform after the calculation is performed. /// Thrown when one of the string arguments is null or empty. /// Thrown when one of the other arguments is null. public static ExceedanceProbabilityCalculationActivity Create(string name, @@ -78,16 +86,22 @@ HydraRingTimeIntegrationSchemeType timeIntegrationSchemeType, HydraRingUncertaintiesType uncertaintiesType, ExceedanceProbabilityCalculationInput exceedanceProbabilityCalculationInput, - Action action) + Action beforeRunAction, + Action handleOutputAction) { - VerifyCalculationActivityInput(name, hlcdDirectory, ringId, timeIntegrationSchemeType, uncertaintiesType, exceedanceProbabilityCalculationInput, action); + VerifyCalculationActivityInput(name, hlcdDirectory, ringId, timeIntegrationSchemeType, + uncertaintiesType, exceedanceProbabilityCalculationInput, + beforeRunAction, handleOutputAction); - return new ExceedanceProbabilityCalculationActivity(name, hlcdDirectory, ringId, timeIntegrationSchemeType, uncertaintiesType, exceedanceProbabilityCalculationInput, null, action, hydraRingCalculationService); + return new ExceedanceProbabilityCalculationActivity(name, hlcdDirectory, ringId, timeIntegrationSchemeType, + uncertaintiesType, exceedanceProbabilityCalculationInput, + beforeRunAction, handleOutputAction, + hydraRingCalculationService); } private static void VerifyCalculationActivityInput(string name, string hlcdDirectory, string ringId, HydraRingTimeIntegrationSchemeType timeIntegrationSchemeType, HydraRingUncertaintiesType uncertaintiesType, HydraRingCalculationInput hydraRingCalculationInput, - object action) + object beforeRunAction, object handleOutputAction) { if (string.IsNullOrEmpty(hlcdDirectory)) { @@ -104,10 +118,15 @@ throw new ArgumentNullException("hydraRingCalculationInput", @"Calculation input should be set."); } - if (action == null) + if (beforeRunAction == null) { - throw new ArgumentNullException("action", @"Handle calculation output action should be set."); + throw new ArgumentNullException("beforeRunAction", @"Before calculation run action should be set."); } + + if (handleOutputAction == null) + { + throw new ArgumentNullException("handleOutputAction", @"Handle calculation output action should be set."); + } } } } \ No newline at end of file Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Activities/HydraRingActivityFactoryTest.cs =================================================================== diff -u -r578037b5080f7a4820286ea02c6b4c322a8b1b09 -r636a79efa1f104b917c48d043151ada9fc4e69ac --- Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Activities/HydraRingActivityFactoryTest.cs (.../HydraRingActivityFactoryTest.cs) (revision 578037b5080f7a4820286ea02c6b4c322a8b1b09) +++ Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Activities/HydraRingActivityFactoryTest.cs (.../HydraRingActivityFactoryTest.cs) (revision 636a79efa1f104b917c48d043151ada9fc4e69ac) @@ -44,7 +44,7 @@ mocks.ReplayAll(); // Call - TestDelegate test = () => HydraRingActivityFactory.Create("name", "", "ringId", HydraRingTimeIntegrationSchemeType.FBC, HydraRingUncertaintiesType.All, exceedanceProbabilityCalculationInput, output => { }); + TestDelegate test = () => HydraRingActivityFactory.Create("name", "", "ringId", HydraRingTimeIntegrationSchemeType.FBC, HydraRingUncertaintiesType.All, exceedanceProbabilityCalculationInput, () => { }, output => { }); // Assert var exception = Assert.Throws(test, "HLCD directory should be set."); @@ -61,7 +61,7 @@ mocks.ReplayAll(); // Call - TestDelegate test = () => HydraRingActivityFactory.Create("name", "hlcdDirectory", "", HydraRingTimeIntegrationSchemeType.FBC, HydraRingUncertaintiesType.All, exceedanceProbabilityCalculationInput, output => { }); + TestDelegate test = () => HydraRingActivityFactory.Create("name", "hlcdDirectory", "", HydraRingTimeIntegrationSchemeType.FBC, HydraRingUncertaintiesType.All, exceedanceProbabilityCalculationInput, () => { }, output => { }); // Assert var exception = Assert.Throws(test, "Ring id should be set."); @@ -76,14 +76,30 @@ mocks.ReplayAll(); // Call - TestDelegate test = () => HydraRingActivityFactory.Create("name", "hlcdDirectory", "ringId", HydraRingTimeIntegrationSchemeType.FBC, HydraRingUncertaintiesType.All, (ExceedanceProbabilityCalculationInput) null, output => { }); + TestDelegate test = () => HydraRingActivityFactory.Create("name", "hlcdDirectory", "ringId", HydraRingTimeIntegrationSchemeType.FBC, HydraRingUncertaintiesType.All, (ExceedanceProbabilityCalculationInput) null, () => { }, output => { }); // Assert var exception = Assert.Throws(test, "Calculation input should be set."); Assert.AreEqual("hydraRingCalculationInput", exception.ParamName); } [Test] + public void CreateExceedanceProbabilityCalculationInput_InputHandleBeforeCalculationActionNull_ThrowsArgumentNullException() + { + // Setup + var mocks = new MockRepository(); + var exceedanceProbabilityCalculationInput = mocks.StrictMock(1); + mocks.ReplayAll(); + + // Call + TestDelegate test = () => HydraRingActivityFactory.Create("name", "hlcdDirectory", "ringId", HydraRingTimeIntegrationSchemeType.FBC, HydraRingUncertaintiesType.All, exceedanceProbabilityCalculationInput, null, output => { }); + + // Assert + var exception = Assert.Throws(test, "Handle before calculation run action should be set."); + Assert.AreEqual("beforeRunAction", exception.ParamName); + } + + [Test] public void CreateExceedanceProbabilityCalculationInput_InputHandleCalculationOutputActionNull_ThrowsArgumentNullException() { // Setup @@ -92,11 +108,11 @@ mocks.ReplayAll(); // Call - TestDelegate test = () => HydraRingActivityFactory.Create("name", "hlcdDirectory", "ringId", HydraRingTimeIntegrationSchemeType.FBC, HydraRingUncertaintiesType.All, exceedanceProbabilityCalculationInput, null); + TestDelegate test = () => HydraRingActivityFactory.Create("name", "hlcdDirectory", "ringId", HydraRingTimeIntegrationSchemeType.FBC, HydraRingUncertaintiesType.All, exceedanceProbabilityCalculationInput, () => { }, null); // Assert var exception = Assert.Throws(test, "Handle calculation output action should be set."); - Assert.AreEqual("action", exception.ParamName); + Assert.AreEqual("handleOutputAction", exception.ParamName); } [Test] @@ -109,7 +125,7 @@ mocks.ReplayAll(); // Call - var activity = HydraRingActivityFactory.Create("name", "hlcdDirectory", "ringId", HydraRingTimeIntegrationSchemeType.FBC, HydraRingUncertaintiesType.All, exceedanceProbabilityCalculationInput, output => { }); + var activity = HydraRingActivityFactory.Create("name", "hlcdDirectory", "ringId", HydraRingTimeIntegrationSchemeType.FBC, HydraRingUncertaintiesType.All, exceedanceProbabilityCalculationInput, () => { }, output => { }); // Assert Assert.IsInstanceOf(activity); @@ -132,7 +148,7 @@ mocks.ReplayAll(); // Call - TestDelegate test = () => HydraRingActivityFactory.Create("name", "", "ringId", HydraRingTimeIntegrationSchemeType.FBC, HydraRingUncertaintiesType.All, targetProbabilityCalculationInput, output => { }); + TestDelegate test = () => HydraRingActivityFactory.Create("name", "", "ringId", HydraRingTimeIntegrationSchemeType.FBC, HydraRingUncertaintiesType.All, targetProbabilityCalculationInput, () => { }, output => { }); // Assert var exception = Assert.Throws(test, "HLCD directory should be set."); @@ -149,7 +165,7 @@ mocks.ReplayAll(); // Call - TestDelegate test = () => HydraRingActivityFactory.Create("name", "hlcdDirectory", "", HydraRingTimeIntegrationSchemeType.FBC, HydraRingUncertaintiesType.All, targetProbabilityCalculationInput, output => { }); + TestDelegate test = () => HydraRingActivityFactory.Create("name", "hlcdDirectory", "", HydraRingTimeIntegrationSchemeType.FBC, HydraRingUncertaintiesType.All, targetProbabilityCalculationInput, () => { }, output => { }); // Assert var exception = Assert.Throws(test, "Ring id should be set."); @@ -165,14 +181,31 @@ mocks.ReplayAll(); // Call - TestDelegate test = () => HydraRingActivityFactory.Create("name", "hlcdDirectory", "ringId", HydraRingTimeIntegrationSchemeType.FBC, HydraRingUncertaintiesType.All, (TargetProbabilityCalculationInput) null, output => { }); + TestDelegate test = () => HydraRingActivityFactory.Create("name", "hlcdDirectory", "ringId", HydraRingTimeIntegrationSchemeType.FBC, HydraRingUncertaintiesType.All, (TargetProbabilityCalculationInput) null, () => { }, output => { }); // Assert var exception = Assert.Throws(test, "Calculation input should be set."); Assert.AreEqual("hydraRingCalculationInput", exception.ParamName); } [Test] + public void CreateTargetProbabilityCalculationInput_InputHandleBeforeCalculationActionNull_ThrowsArgumentNullException() + { + // Setup + var mocks = new MockRepository(); + var targetProbabilityCalculationInput = mocks.StrictMock(1, 2.2); + + mocks.ReplayAll(); + + // Call + TestDelegate test = () => HydraRingActivityFactory.Create("name", "hlcdDirectory", "ringId", HydraRingTimeIntegrationSchemeType.FBC, HydraRingUncertaintiesType.All, targetProbabilityCalculationInput, null, output => { }); + + // Assert + var exception = Assert.Throws(test, "Before calculation run action should be set."); + Assert.AreEqual("beforeRunAction", exception.ParamName); + } + + [Test] public void CreateTargetProbabilityCalculationInput_InputHandleCalculationOutputActionNull_ThrowsArgumentNullException() { // Setup @@ -182,11 +215,11 @@ mocks.ReplayAll(); // Call - TestDelegate test = () => HydraRingActivityFactory.Create("name", "hlcdDirectory", "ringId", HydraRingTimeIntegrationSchemeType.FBC, HydraRingUncertaintiesType.All, targetProbabilityCalculationInput, null); + TestDelegate test = () => HydraRingActivityFactory.Create("name", "hlcdDirectory", "ringId", HydraRingTimeIntegrationSchemeType.FBC, HydraRingUncertaintiesType.All, targetProbabilityCalculationInput, () => { }, null); // Assert var exception = Assert.Throws(test, "Handle calculation output action should be set."); - Assert.AreEqual("action", exception.ParamName); + Assert.AreEqual("handleOutputAction", exception.ParamName); } [Test] @@ -199,7 +232,7 @@ mocks.ReplayAll(); // Call - var activity = HydraRingActivityFactory.Create("name", "hlcdDirectory", "ringId", HydraRingTimeIntegrationSchemeType.FBC, HydraRingUncertaintiesType.All, targetProbabilityCalculationInput, output => { }); + var activity = HydraRingActivityFactory.Create("name", "hlcdDirectory", "ringId", HydraRingTimeIntegrationSchemeType.FBC, HydraRingUncertaintiesType.All, targetProbabilityCalculationInput, () => { }, output => { }); // Assert Assert.IsInstanceOf(activity); Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Activities/HydraRingActivityTest.cs =================================================================== diff -u -re4613b1908b45105cdc5be7f3fb2f4fad823473e -r636a79efa1f104b917c48d043151ada9fc4e69ac --- Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Activities/HydraRingActivityTest.cs (.../HydraRingActivityTest.cs) (revision e4613b1908b45105cdc5be7f3fb2f4fad823473e) +++ Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.Test/Activities/HydraRingActivityTest.cs (.../HydraRingActivityTest.cs) (revision 636a79efa1f104b917c48d043151ada9fc4e69ac) @@ -29,16 +29,32 @@ public class HydraRingActivityTest { [Test] - public void Constructor_BeforeRunActionNull_ThrowsArgumentNullException() + public void Run_BeforeRunActionSet_BeforeRunActionPerformed() { + // Setup + var count = 0; + var hydraRingActivity = new TestHydraRingActivity(() => { count++; }); + // Call - TestDelegate test = () => new TestHydraRingActivity(null); + hydraRingActivity.Run(); // Assert - var paramName = Assert.Throws(test).ParamName; - Assert.AreEqual("beforeRunAction", paramName); + Assert.AreEqual(1, count); } + [Test] + public void Run_BeforeRunActionNull_DoesNotThrow() + { + // Setup + var hydraRingActivity = new TestHydraRingActivity(null); + + // Call + TestDelegate test = () => hydraRingActivity.Run(); + + // Assert + Assert.DoesNotThrow(test); + } + private class TestHydraRingActivity : HydraRingActivity { public TestHydraRingActivity(Action beforeRunAction) : base(beforeRunAction) {} Index: Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsGuiPlugin.cs =================================================================== diff -u -r60f9f8cfadfe1b22e5989aa92ab9839c4623338d -r636a79efa1f104b917c48d043151ada9fc4e69ac --- Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsGuiPlugin.cs (.../RingtoetsGuiPlugin.cs) (revision 60f9f8cfadfe1b22e5989aa92ab9839c4623338d) +++ Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsGuiPlugin.cs (.../RingtoetsGuiPlugin.cs) (revision 636a79efa1f104b917c48d043151ada9fc4e69ac) @@ -706,6 +706,7 @@ HydraRingTimeIntegrationSchemeType.FBC, HydraRingUncertaintiesType.All, new AssessmentLevelCalculationInput((int) hydraulicBoundaryLocation.Id, assessmentSection.FailureMechanismContribution.Norm), + () => { }, output => { ParseHydraRingOutput(hydraulicBoundaryLocation, output); }); }