Index: Ringtoets/Common/src/Ringtoets.Common.Forms/GuiServices/HydraulicBoundaryLocationCalculationGuiService.cs =================================================================== diff -u -reebbc3b7f6370ec49ab77281034fab75b676c66f -r171d7076759cc5d094c73342e3f5c24d642f4380 --- Ringtoets/Common/src/Ringtoets.Common.Forms/GuiServices/HydraulicBoundaryLocationCalculationGuiService.cs (.../HydraulicBoundaryLocationCalculationGuiService.cs) (revision eebbc3b7f6370ec49ab77281034fab75b676c66f) +++ Ringtoets/Common/src/Ringtoets.Common.Forms/GuiServices/HydraulicBoundaryLocationCalculationGuiService.cs (.../HydraulicBoundaryLocationCalculationGuiService.cs) (revision 171d7076759cc5d094c73342e3f5c24d642f4380) @@ -29,6 +29,7 @@ using Ringtoets.Common.Forms.Helpers; using Ringtoets.Common.Forms.Properties; using Ringtoets.Common.IO.HydraRing; +using Ringtoets.Common.Service; using Ringtoets.Common.Service.MessageProviders; namespace Ringtoets.Common.Forms.GuiServices @@ -74,6 +75,7 @@ RunActivities(hydraulicBoundaryDatabaseFilePath, preprocessorDirectory, + norm, HydraulicBoundaryLocationCalculationActivityFactory.CreateDesignWaterLevelCalculationActivities(hydraulicBoundaryDatabaseFilePath, preprocessorDirectory, calculations, @@ -99,6 +101,7 @@ RunActivities(hydraulicBoundaryDatabaseFilePath, preprocessorDirectory, + norm, HydraulicBoundaryLocationCalculationActivityFactory.CreateWaveHeightCalculationActivities(hydraulicBoundaryDatabaseFilePath, preprocessorDirectory, calculations, @@ -108,19 +111,26 @@ private void RunActivities(string hydraulicBoundaryDatabaseFilePath, string preprocessorDirectory, + double norm, IEnumerable activities) where TActivity : Activity { string validationProblem = HydraulicBoundaryDatabaseHelper.ValidateFilesForCalculation(hydraulicBoundaryDatabaseFilePath, preprocessorDirectory); if (string.IsNullOrEmpty(validationProblem)) { - ActivityProgressDialogRunner.Run(viewParent, activities); - return; + TargetProbabilityCalculationServiceHelper.ValidateTargetProbability(norm, logMessage => validationProblem = logMessage); } - log.ErrorFormat(Resources.CalculateHydraulicBoundaryLocation_Start_calculation_failed_0_, - validationProblem); + if (string.IsNullOrEmpty(validationProblem)) + { + ActivityProgressDialogRunner.Run(viewParent, activities); + } + else + { + log.ErrorFormat(Resources.CalculateHydraulicBoundaryLocation_Start_calculation_failed_0_, + validationProblem); + } } } } \ No newline at end of file Index: Ringtoets/Common/test/Ringtoets.Common.Forms.Test/GuiServices/HydraulicBoundaryLocationCalculationGuiServiceTest.cs =================================================================== diff -u -rf108a2a408f5959c890a13e036993e73cea239f3 -r171d7076759cc5d094c73342e3f5c24d642f4380 --- Ringtoets/Common/test/Ringtoets.Common.Forms.Test/GuiServices/HydraulicBoundaryLocationCalculationGuiServiceTest.cs (.../HydraulicBoundaryLocationCalculationGuiServiceTest.cs) (revision f108a2a408f5959c890a13e036993e73cea239f3) +++ Ringtoets/Common/test/Ringtoets.Common.Forms.Test/GuiServices/HydraulicBoundaryLocationCalculationGuiServiceTest.cs (.../HydraulicBoundaryLocationCalculationGuiServiceTest.cs) (revision 171d7076759cc5d094c73342e3f5c24d642f4380) @@ -161,6 +161,38 @@ } [Test] + public void CalculateDesignWaterLevels_InvalidNorm_LogsError() + { + // Setup + var calculatorFactory = mockRepository.StrictMock(); + var calculationMessageProvider = mockRepository.StrictMock(); + mockRepository.ReplayAll(); + + using (var viewParent = new Form()) + using (new HydraRingCalculatorFactoryConfig(calculatorFactory)) + { + var guiService = new HydraulicBoundaryLocationCalculationGuiService(viewParent); + + // Call + Action call = () => guiService.CalculateDesignWaterLevels(validFilePath, + validPreprocessorDirectory, + Enumerable.Empty(), + 1.0, + calculationMessageProvider); + + // Assert + TestHelper.AssertLogMessages(call, messages => + { + string[] msgs = messages.ToArray(); + Assert.AreEqual(1, msgs.Length); + Assert.AreEqual("Berekeningen konden niet worden gestart. Doelkans is te groot om een berekening uit te kunnen voeren.", msgs.First()); + }); + } + + mockRepository.VerifyAll(); + } + + [Test] public void CalculateDesignWaterLevels_ValidPathEmptyList_NoLog() { // Setup @@ -336,6 +368,38 @@ } [Test] + public void CalculateWaveHeights_InvalidNorm_LogsError() + { + // Setup + var calculatorFactory = mockRepository.StrictMock(); + var calculationMessageProvider = mockRepository.StrictMock(); + mockRepository.ReplayAll(); + + using (var viewParent = new Form()) + using (new HydraRingCalculatorFactoryConfig(calculatorFactory)) + { + var guiService = new HydraulicBoundaryLocationCalculationGuiService(viewParent); + + // Call + Action call = () => guiService.CalculateWaveHeights(validFilePath, + validPreprocessorDirectory, + Enumerable.Empty(), + 1.0, + calculationMessageProvider); + + // Assert + TestHelper.AssertLogMessages(call, messages => + { + string[] msgs = messages.ToArray(); + Assert.AreEqual(1, msgs.Length); + Assert.AreEqual("Berekeningen konden niet worden gestart. Doelkans is te groot om een berekening uit te kunnen voeren.", msgs.First()); + }); + } + + mockRepository.VerifyAll(); + } + + [Test] public void CalculateWaveHeights_ValidPathEmptyList_NoLog() { // Setup