Index: Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Service/GrassCoverErosionOutwardsWaveConditionsCalculationActivity.cs =================================================================== diff -u -rbea6e87ff7f6b40ff9fcce4d46ccb55bb3b47535 -r0bb11ec189709c999bee440a31c003f00b0a3a2b --- Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Service/GrassCoverErosionOutwardsWaveConditionsCalculationActivity.cs (.../GrassCoverErosionOutwardsWaveConditionsCalculationActivity.cs) (revision bea6e87ff7f6b40ff9fcce4d46ccb55bb3b47535) +++ Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Service/GrassCoverErosionOutwardsWaveConditionsCalculationActivity.cs (.../GrassCoverErosionOutwardsWaveConditionsCalculationActivity.cs) (revision 0bb11ec189709c999bee440a31c003f00b0a3a2b) @@ -104,6 +104,11 @@ foreach (var waterLevel in calculation.InputParameters.WaterLevels) { + if (State == ActivityState.Canceled) + { + break; + } + log.Info(string.Format(Resources.GrassCoverErosionOutwardsWaveConditionsCalculationActivity_OnRun_Subject_0_for_waterlevel_1_started_time_2_, calculation.Name, waterLevel, Index: Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Integration.Test/GrassCoverErosionOutwardsWaveConditionsCalculationActivityIntegrationTest.cs =================================================================== diff -u -r595f353e98d132713e4f64452332eef14627140c -r0bb11ec189709c999bee440a31c003f00b0a3a2b --- Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Integration.Test/GrassCoverErosionOutwardsWaveConditionsCalculationActivityIntegrationTest.cs (.../GrassCoverErosionOutwardsWaveConditionsCalculationActivityIntegrationTest.cs) (revision 595f353e98d132713e4f64452332eef14627140c) +++ Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Integration.Test/GrassCoverErosionOutwardsWaveConditionsCalculationActivityIntegrationTest.cs (.../GrassCoverErosionOutwardsWaveConditionsCalculationActivityIntegrationTest.cs) (revision 0bb11ec189709c999bee440a31c003f00b0a3a2b) @@ -249,6 +249,45 @@ } [Test] + public void Cancel_WhenPerformingCalculation_CurrentAndSubsequentWaterLevelCalculationsCancelled() + { + // Setup + var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); + ImportHydraulicBoundaryDatabase(assessmentSection); + + GrassCoverErosionOutwardsWaveConditionsCalculation calculation = GetValidCalculation(assessmentSection); + + var activity = new GrassCoverErosionOutwardsWaveConditionsCalculationActivity(calculation, testDataPath, assessmentSection.GrassCoverErosionOutwards, assessmentSection); + + using (new WaveConditionsCalculationServiceConfig()) + { + activity.ProgressChanged += (sender, args) => + { + if (activity.State != ActivityState.Canceled) + { + // Call + activity.Cancel(); + } + }; + + // Assert + TestHelper.AssertLogMessages(() => activity.Run(), messages => + { + string[] msgs = messages.ToArray(); + RoundedDouble firstWaterLevel = calculation.InputParameters.WaterLevels.First(); + + Assert.AreEqual(4, msgs.Length); + StringAssert.StartsWith(string.Format("Berekening van '{0}' gestart om: ", calculation.Name), msgs[0]); + StringAssert.StartsWith(string.Format("Berekening '{0}' voor waterstand '{1}' gestart om: ", calculation.Name, firstWaterLevel), msgs[1]); + StringAssert.StartsWith(string.Format("Berekening '{0}' voor waterstand '{1}' beëindigd om: ", calculation.Name, firstWaterLevel), msgs[2]); + StringAssert.StartsWith(string.Format("Berekening van '{0}' beëindigd om: ", calculation.Name), msgs[3]); + }); + + Assert.AreEqual(ActivityState.Canceled, activity.State); + } + } + + [Test] public void OnFinish_CalculationPerformed_SetsOutput() { // Setup Index: Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Service/WaveImpactAsphaltCoverWaveConditionsCalculationActivity.cs =================================================================== diff -u -rdd84b844a388b0dc3f721bd40674c4ed513b3231 -r0bb11ec189709c999bee440a31c003f00b0a3a2b --- Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Service/WaveImpactAsphaltCoverWaveConditionsCalculationActivity.cs (.../WaveImpactAsphaltCoverWaveConditionsCalculationActivity.cs) (revision dd84b844a388b0dc3f721bd40674c4ed513b3231) +++ Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Service/WaveImpactAsphaltCoverWaveConditionsCalculationActivity.cs (.../WaveImpactAsphaltCoverWaveConditionsCalculationActivity.cs) (revision 0bb11ec189709c999bee440a31c003f00b0a3a2b) @@ -104,6 +104,11 @@ foreach (var waterLevel in calculation.InputParameters.WaterLevels) { + if (State == ActivityState.Canceled) + { + break; + } + log.Info(string.Format(Resources.WaveImpactAsphaltCoverWaveConditionsCalculationActivity_OnRun_Subject_0_for_waterlevel_1_started_time_2_, calculation.Name, waterLevel, Index: Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Integration.Test/WaveImpactAsphaltCoverWaveConditionsCalculationActivityIntegrationTest.cs =================================================================== diff -u -r595f353e98d132713e4f64452332eef14627140c -r0bb11ec189709c999bee440a31c003f00b0a3a2b --- Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Integration.Test/WaveImpactAsphaltCoverWaveConditionsCalculationActivityIntegrationTest.cs (.../WaveImpactAsphaltCoverWaveConditionsCalculationActivityIntegrationTest.cs) (revision 595f353e98d132713e4f64452332eef14627140c) +++ Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Integration.Test/WaveImpactAsphaltCoverWaveConditionsCalculationActivityIntegrationTest.cs (.../WaveImpactAsphaltCoverWaveConditionsCalculationActivityIntegrationTest.cs) (revision 0bb11ec189709c999bee440a31c003f00b0a3a2b) @@ -249,6 +249,45 @@ } [Test] + public void Cancel_WhenPerformingCalculation_CurrentAndSubsequentWaterLevelCalculationsCancelled() + { + // Setup + var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); + ImportHydraulicBoundaryDatabase(assessmentSection); + + WaveImpactAsphaltCoverWaveConditionsCalculation calculation = GetValidCalculation(assessmentSection); + + var activity = new WaveImpactAsphaltCoverWaveConditionsCalculationActivity(calculation, testDataPath, assessmentSection.WaveImpactAsphaltCover, assessmentSection); + + using (new WaveConditionsCalculationServiceConfig()) + { + activity.ProgressChanged += (sender, args) => + { + if (activity.State != ActivityState.Canceled) + { + // Call + activity.Cancel(); + } + }; + + // Assert + TestHelper.AssertLogMessages(() => activity.Run(), messages => + { + string[] msgs = messages.ToArray(); + RoundedDouble firstWaterLevel = calculation.InputParameters.WaterLevels.First(); + + Assert.AreEqual(4, msgs.Length); + StringAssert.StartsWith(string.Format("Berekening van '{0}' gestart om: ", calculation.Name), msgs[0]); + StringAssert.StartsWith(string.Format("Berekening '{0}' voor waterstand '{1}' gestart om: ", calculation.Name, firstWaterLevel), msgs[1]); + StringAssert.StartsWith(string.Format("Berekening '{0}' voor waterstand '{1}' beëindigd om: ", calculation.Name, firstWaterLevel), msgs[2]); + StringAssert.StartsWith(string.Format("Berekening van '{0}' beëindigd om: ", calculation.Name), msgs[3]); + }); + + Assert.AreEqual(ActivityState.Canceled, activity.State); + } + } + + [Test] public void OnFinish_CalculationPerformed_SetsOutput() { // Setup