Index: Ringtoets/Common/src/Ringtoets.Common.Service/DesignWaterLevelCalculationService.cs =================================================================== diff -u -r8905298103eb01ce13dd5c1a2f267f879d4fda3e -ra19c5c366cdc06eb5872ee9a78c4db1fd72564a1 --- Ringtoets/Common/src/Ringtoets.Common.Service/DesignWaterLevelCalculationService.cs (.../DesignWaterLevelCalculationService.cs) (revision 8905298103eb01ce13dd5c1a2f267f879d4fda3e) +++ Ringtoets/Common/src/Ringtoets.Common.Service/DesignWaterLevelCalculationService.cs (.../DesignWaterLevelCalculationService.cs) (revision a19c5c366cdc06eb5872ee9a78c4db1fd72564a1) @@ -101,7 +101,7 @@ if (string.IsNullOrEmpty(calculator.LastErrorFileContent)) { hydraulicBoundaryLocation.DesignWaterLevelOutput = CreateHydraulicBoundaryLocationOutput( - messageProvider, hydraulicBoundaryLocation.Name, calculationInput.Beta, norm); + messageProvider, hydraulicBoundaryLocation.Name, calculationInput.Beta, norm, calculator.Converged); } } catch (HydraRingFileParserException) @@ -148,17 +148,18 @@ } } - private HydraulicBoundaryLocationOutput CreateHydraulicBoundaryLocationOutput(ICalculationMessageProvider messageProvider, - string hydraulicBoundaryLocationName, - double targetReliability, - double targetProbability) + private HydraulicBoundaryLocationOutput CreateHydraulicBoundaryLocationOutput( + ICalculationMessageProvider messageProvider, + string hydraulicBoundaryLocationName, + double targetReliability, + double targetProbability, + bool? calculatorConverged) { var designWaterLevel = calculator.DesignWaterLevel; var reliability = calculator.ReliabilityIndex; var probability = StatisticsConverter.ReliabilityToProbability(reliability); - CalculationConvergence converged = RingtoetsCommonDataCalculationService.CalculationConverged( - calculator.ReliabilityIndex, targetProbability); + CalculationConvergence converged = RingtoetsCommonDataCalculationService.CalculationConverged(calculatorConverged); if (converged != CalculationConvergence.CalculatedConverged) { Index: Ringtoets/Common/src/Ringtoets.Common.Service/RingtoetsCommonDataCalculationService.cs =================================================================== diff -u -r1233bb8bd98ffff10b7bd790b1488d978e5fb027 -ra19c5c366cdc06eb5872ee9a78c4db1fd72564a1 --- Ringtoets/Common/src/Ringtoets.Common.Service/RingtoetsCommonDataCalculationService.cs (.../RingtoetsCommonDataCalculationService.cs) (revision 1233bb8bd98ffff10b7bd790b1488d978e5fb027) +++ Ringtoets/Common/src/Ringtoets.Common.Service/RingtoetsCommonDataCalculationService.cs (.../RingtoetsCommonDataCalculationService.cs) (revision a19c5c366cdc06eb5872ee9a78c4db1fd72564a1) @@ -20,7 +20,6 @@ // All rights reserved. using System; -using Core.Common.Utils; using Ringtoets.Common.Data.Hydraulics; using Ringtoets.Common.Service.Properties; @@ -32,20 +31,6 @@ public static class RingtoetsCommonDataCalculationService { /// - /// Determines whether the calculated output is converged, - /// based on the and the . - /// - /// The resultant reliability index after a calculation. - /// The norm used during the calculation. - /// True if the solution converged, false if otherwise. - public static CalculationConvergence CalculationConverged(double reliabilityIndex, double norm) - { - return Math.Abs(reliabilityIndex - StatisticsConverter.ProbabilityToReliability(norm)) <= 1.0e-3 ? - CalculationConvergence.CalculatedConverged : - CalculationConvergence.CalculatedNotConverged; - } - - /// /// Determines whether the calculated output is converged. /// /// The value indicating whether convergence has been reached. @@ -74,7 +59,7 @@ { if (!(failureMechanismContribution > 0)) { - throw new ArgumentOutOfRangeException("failureMechanismContribution", failureMechanismContribution, + throw new ArgumentOutOfRangeException(nameof(failureMechanismContribution), failureMechanismContribution, Resources.RingtoetsCommonDataCalculationService_ProfileSpecificRequiredProbability_Contribution_is_zero_or_negative); } if (n == 0) Index: Ringtoets/Common/src/Ringtoets.Common.Service/WaveHeightCalculationService.cs =================================================================== diff -u -r3d6119b921ede5e5eea3de083a17a26f12ffa447 -ra19c5c366cdc06eb5872ee9a78c4db1fd72564a1 --- Ringtoets/Common/src/Ringtoets.Common.Service/WaveHeightCalculationService.cs (.../WaveHeightCalculationService.cs) (revision 3d6119b921ede5e5eea3de083a17a26f12ffa447) +++ Ringtoets/Common/src/Ringtoets.Common.Service/WaveHeightCalculationService.cs (.../WaveHeightCalculationService.cs) (revision a19c5c366cdc06eb5872ee9a78c4db1fd72564a1) @@ -102,7 +102,7 @@ if (string.IsNullOrEmpty(calculator.LastErrorFileContent)) { hydraulicBoundaryLocation.WaveHeightOutput = CreateHydraulicBoundaryLocationOutput( - messageProvider, hydraulicBoundaryLocation.Name, calculationInput.Beta, norm); + messageProvider, hydraulicBoundaryLocation.Name, calculationInput.Beta, norm, calculator.Converged); } } catch (HydraRingFileParserException) @@ -149,17 +149,18 @@ } } - private HydraulicBoundaryLocationOutput CreateHydraulicBoundaryLocationOutput(ICalculationMessageProvider messageProvider, - string hydraulicBoundaryLocationName, - double targetReliability, - double targetProbability) + private HydraulicBoundaryLocationOutput CreateHydraulicBoundaryLocationOutput( + ICalculationMessageProvider messageProvider, + string hydraulicBoundaryLocationName, + double targetReliability, + double targetProbability, + bool? calculatorConverged) { double waveHeight = calculator.WaveHeight; double reliability = calculator.ReliabilityIndex; double probability = StatisticsConverter.ReliabilityToProbability(reliability); - CalculationConvergence converged = RingtoetsCommonDataCalculationService.CalculationConverged( - reliability, targetProbability); + CalculationConvergence converged = RingtoetsCommonDataCalculationService.CalculationConverged(calculatorConverged); if (converged != CalculationConvergence.CalculatedConverged) { Index: Ringtoets/Common/test/Ringtoets.Common.Service.Test/DesignWaterLevelCalculationActivityTest.cs =================================================================== diff -u -re1d4d3fe987bfa6504703952ea0dbd8a18f5a698 -ra19c5c366cdc06eb5872ee9a78c4db1fd72564a1 --- Ringtoets/Common/test/Ringtoets.Common.Service.Test/DesignWaterLevelCalculationActivityTest.cs (.../DesignWaterLevelCalculationActivityTest.cs) (revision e1d4d3fe987bfa6504703952ea0dbd8a18f5a698) +++ Ringtoets/Common/test/Ringtoets.Common.Service.Test/DesignWaterLevelCalculationActivityTest.cs (.../DesignWaterLevelCalculationActivityTest.cs) (revision a19c5c366cdc06eb5872ee9a78c4db1fd72564a1) @@ -150,9 +150,9 @@ { var msgs = messages.ToArray(); Assert.AreEqual(3, msgs.Length); - StringAssert.StartsWith(string.Format("Validatie van '{0}' gestart om: ", calculationName), msgs[0]); + StringAssert.StartsWith($"Validatie van '{calculationName}' gestart om: ", msgs[0]); StringAssert.StartsWith("Herstellen van de verbinding met de hydraulische randvoorwaardendatabase is mislukt. Fout bij het lezen van bestand", msgs[1]); - StringAssert.StartsWith(string.Format("Validatie van '{0}' beëindigd om: ", calculationName), msgs[2]); + StringAssert.StartsWith($"Validatie van '{calculationName}' beëindigd om: ", msgs[2]); }); Assert.AreEqual(ActivityState.Failed, activity.State); mockRepository.VerifyAll(); @@ -185,7 +185,7 @@ using (new HydraRingCalculatorFactoryConfig()) { var testDesignWaterLevelCalculator = ((TestHydraRingCalculatorFactory) HydraRingCalculatorFactory.Instance).DesignWaterLevelCalculator; - testDesignWaterLevelCalculator.ReliabilityIndex = StatisticsConverter.ProbabilityToReliability(norm); + testDesignWaterLevelCalculator.Converged = true; // Call Action call = () => activity.Run(); @@ -195,11 +195,11 @@ { var messages = m.ToArray(); Assert.AreEqual(5, messages.Length); - StringAssert.StartsWith(string.Format("Validatie van '{0}' gestart om: ", calculationName), messages[0]); - StringAssert.StartsWith(string.Format("Validatie van '{0}' beëindigd om: ", calculationName), messages[1]); - StringAssert.StartsWith(string.Format("Berekening van '{0}' gestart om: ", calculationName), messages[2]); + StringAssert.StartsWith($"Validatie van '{calculationName}' gestart om: ", messages[0]); + StringAssert.StartsWith($"Validatie van '{calculationName}' beëindigd om: ", messages[1]); + StringAssert.StartsWith($"Berekening van '{calculationName}' gestart om: ", messages[2]); StringAssert.StartsWith("Toetspeil berekening is uitgevoerd op de tijdelijke locatie", messages[3]); - StringAssert.StartsWith(string.Format("Berekening van '{0}' beëindigd om: ", calculationName), messages[4]); + StringAssert.StartsWith($"Berekening van '{calculationName}' beëindigd om: ", messages[4]); }); var designWaterLevelCalculationInput = testDesignWaterLevelCalculator.ReceivedInputs.First(); @@ -276,7 +276,7 @@ { var testDesignWaterLevelCalculator = ((TestHydraRingCalculatorFactory) HydraRingCalculatorFactory.Instance).DesignWaterLevelCalculator; testDesignWaterLevelCalculator.DesignWaterLevel = expectedDesignWaterLevel; - testDesignWaterLevelCalculator.ReliabilityIndex = StatisticsConverter.ProbabilityToReliability(norm); + testDesignWaterLevelCalculator.Converged = true; // Call activity.Run(); @@ -364,7 +364,7 @@ using (new HydraRingCalculatorFactoryConfig()) { var calculator = ((TestHydraRingCalculatorFactory) HydraRingCalculatorFactory.Instance).DesignWaterLevelCalculator; - calculator.ReliabilityIndex = 3; + calculator.Converged = false; Action call = () => activity.Run(); Index: Ringtoets/Common/test/Ringtoets.Common.Service.Test/RingtoetsCommonDataCalculationServiceTest.cs =================================================================== diff -u -rdd5aa48365b805d37f8ecce133832e5b920f5064 -ra19c5c366cdc06eb5872ee9a78c4db1fd72564a1 --- Ringtoets/Common/test/Ringtoets.Common.Service.Test/RingtoetsCommonDataCalculationServiceTest.cs (.../RingtoetsCommonDataCalculationServiceTest.cs) (revision dd5aa48365b805d37f8ecce133832e5b920f5064) +++ Ringtoets/Common/test/Ringtoets.Common.Service.Test/RingtoetsCommonDataCalculationServiceTest.cs (.../RingtoetsCommonDataCalculationServiceTest.cs) (revision a19c5c366cdc06eb5872ee9a78c4db1fd72564a1) @@ -31,34 +31,19 @@ public class RingtoetsCommonDataCalculationServiceTest { [Test] - public void CalculationConverged_WithConvergedResults_CalculationConvergedTrue() + [TestCase(true, CalculationConvergence.CalculatedConverged)] + [TestCase(false, CalculationConvergence.CalculatedNotConverged)] + [TestCase(null, CalculationConvergence.NotCalculated)] + public void CalculationConverged_WithDifferentValues_ReturnsExpectedConvergence(bool? value, CalculationConvergence expectedConvergence) { - // Setup - const double norm = 0.05; - double reliabilityIndex = StatisticsConverter.ProbabilityToReliability(norm); - // Call - CalculationConvergence calculationConverged = RingtoetsCommonDataCalculationService.CalculationConverged(reliabilityIndex, norm); + CalculationConvergence calculationConverged = RingtoetsCommonDataCalculationService.CalculationConverged(value); // Assert - Assert.AreEqual(CalculationConvergence.CalculatedConverged, calculationConverged); + Assert.AreEqual(expectedConvergence, calculationConverged); } [Test] - public void CalculationConverged_WithoutConvergedResults_CalculationConvergedFalse() - { - // Setup - var output = new ReliabilityIndexCalculationOutput(5.0e-3, 5.0e-3); - const double norm = 1; - - // Call - CalculationConvergence calculationConverged = RingtoetsCommonDataCalculationService.CalculationConverged(output.CalculatedReliabilityIndex, norm); - - // Assert - Assert.AreEqual(CalculationConvergence.CalculatedNotConverged, calculationConverged); - } - - [Test] public void ProfileSpecificRequiredProbability_WithValidParameters_ReturnSpecificProbability() { // Setup Index: Ringtoets/Common/test/Ringtoets.Common.Service.Test/WaveHeightCalculationActivityTest.cs =================================================================== diff -u -re1d4d3fe987bfa6504703952ea0dbd8a18f5a698 -ra19c5c366cdc06eb5872ee9a78c4db1fd72564a1 --- Ringtoets/Common/test/Ringtoets.Common.Service.Test/WaveHeightCalculationActivityTest.cs (.../WaveHeightCalculationActivityTest.cs) (revision e1d4d3fe987bfa6504703952ea0dbd8a18f5a698) +++ Ringtoets/Common/test/Ringtoets.Common.Service.Test/WaveHeightCalculationActivityTest.cs (.../WaveHeightCalculationActivityTest.cs) (revision a19c5c366cdc06eb5872ee9a78c4db1fd72564a1) @@ -134,9 +134,9 @@ { var msgs = messages.ToArray(); Assert.AreEqual(3, msgs.Length); - StringAssert.StartsWith(string.Format("Validatie van '{0}' gestart om: ", calculationName), msgs[0]); + StringAssert.StartsWith($"Validatie van '{calculationName}' gestart om: ", msgs[0]); StringAssert.StartsWith("Herstellen van de verbinding met de hydraulische randvoorwaardendatabase is mislukt. Fout bij het lezen van bestand", msgs[1]); - StringAssert.StartsWith(string.Format("Validatie van '{0}' beëindigd om: ", calculationName), msgs[2]); + StringAssert.StartsWith($"Validatie van '{calculationName}' beëindigd om: ", msgs[2]); }); Assert.AreEqual(ActivityState.Failed, activity.State); } @@ -167,7 +167,7 @@ using (new HydraRingCalculatorFactoryConfig()) { var testWaveHeightCalculator = ((TestHydraRingCalculatorFactory) HydraRingCalculatorFactory.Instance).WaveHeightCalculator; - testWaveHeightCalculator.ReliabilityIndex = StatisticsConverter.ProbabilityToReliability(norm); + testWaveHeightCalculator.Converged = true; // Call Action call = () => activity.Run(); @@ -177,11 +177,11 @@ { var messages = m.ToArray(); Assert.AreEqual(5, messages.Length); - StringAssert.StartsWith(string.Format("Validatie van '{0}' gestart om: ", calculationName), messages[0]); - StringAssert.StartsWith(string.Format("Validatie van '{0}' beëindigd om: ", calculationName), messages[1]); - StringAssert.StartsWith(string.Format("Berekening van '{0}' gestart om: ", calculationName), messages[2]); + StringAssert.StartsWith($"Validatie van '{calculationName}' gestart om: ", messages[0]); + StringAssert.StartsWith($"Validatie van '{calculationName}' beëindigd om: ", messages[1]); + StringAssert.StartsWith($"Berekening van '{calculationName}' gestart om: ", messages[2]); StringAssert.StartsWith("Golfhoogte berekening is uitgevoerd op de tijdelijke locatie", messages[3]); - StringAssert.StartsWith(string.Format("Berekening van '{0}' beëindigd om: ", calculationName), messages[4]); + StringAssert.StartsWith($"Berekening van '{calculationName}' beëindigd om: ", messages[4]); }); var waveHeightCalculationInput = testWaveHeightCalculator.ReceivedInputs.First(); @@ -258,7 +258,7 @@ { var testWaveHeightCalculator = ((TestHydraRingCalculatorFactory) HydraRingCalculatorFactory.Instance).WaveHeightCalculator; testWaveHeightCalculator.WaveHeight = expectedWaveHeight; - testWaveHeightCalculator.ReliabilityIndex = StatisticsConverter.ProbabilityToReliability(norm); + testWaveHeightCalculator.Converged = true; // Call activity.Run(); @@ -346,7 +346,7 @@ using (new HydraRingCalculatorFactoryConfig()) { var calculator = ((TestHydraRingCalculatorFactory) HydraRingCalculatorFactory.Instance).WaveHeightCalculator; - calculator.ReliabilityIndex = 3; + calculator.Converged = false; // Call Action call = () => activity.Run(); Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/GrassCoverErosionInwardsCalculationService.cs =================================================================== diff -u -r4f62ac1a7379ebe7de146b9cd3e4bbe485a1949f -ra19c5c366cdc06eb5872ee9a78c4db1fd72564a1 --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/GrassCoverErosionInwardsCalculationService.cs (.../GrassCoverErosionInwardsCalculationService.cs) (revision 4f62ac1a7379ebe7de146b9cd3e4bbe485a1949f) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/GrassCoverErosionInwardsCalculationService.cs (.../GrassCoverErosionInwardsCalculationService.cs) (revision a19c5c366cdc06eb5872ee9a78c4db1fd72564a1) @@ -178,8 +178,7 @@ var reliability = dikeHeightCalculator.ReliabilityIndex; var probability = StatisticsConverter.ReliabilityToProbability(reliability); - CalculationConvergence converged = RingtoetsCommonDataCalculationService.CalculationConverged( - reliability, targetProbability); + CalculationConvergence converged = RingtoetsCommonDataCalculationService.CalculationConverged(dikeHeightCalculator.Converged); if (converged != CalculationConvergence.CalculatedConverged) { Index: Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/TreeNodeInfos/GrassCoverErosionOutwardsDesignWaterLevelLocationsContextTreeNodeInfoTest.cs =================================================================== diff -u -r0981b22c56801334d3f71343f1a861070a404e3e -ra19c5c366cdc06eb5872ee9a78c4db1fd72564a1 --- Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/TreeNodeInfos/GrassCoverErosionOutwardsDesignWaterLevelLocationsContextTreeNodeInfoTest.cs (.../GrassCoverErosionOutwardsDesignWaterLevelLocationsContextTreeNodeInfoTest.cs) (revision 0981b22c56801334d3f71343f1a861070a404e3e) +++ Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/TreeNodeInfos/GrassCoverErosionOutwardsDesignWaterLevelLocationsContextTreeNodeInfoTest.cs (.../GrassCoverErosionOutwardsDesignWaterLevelLocationsContextTreeNodeInfoTest.cs) (revision a19c5c366cdc06eb5872ee9a78c4db1fd72564a1) @@ -433,8 +433,7 @@ Action action = () => contextMenuAdapter.Items[contextMenuRunDesignWaterLevelCalculationsIndex].PerformClick(); // Then - string message = string.Format("Berekeningen konden niet worden gestart. Fout bij het lezen van bestand '{0}': het bestand bestaat niet.", - filePath); + string message = $"Berekeningen konden niet worden gestart. Fout bij het lezen van bestand '{filePath}': het bestand bestaat niet."; TestHelper.AssertLogMessageWithLevelIsGenerated(action, new Tuple(message, LogLevelConstant.Error)); Assert.IsNaN(grassCoverErosionOutwardsHydraulicBoundaryLocation1.DesignWaterLevel); // No result set @@ -482,6 +481,9 @@ using (ContextMenuStrip contextMenuAdapter = info.ContextMenuStrip(context, null, treeViewControl)) using (new HydraRingCalculatorFactoryConfig()) { + var testDesignWaterLevelCalculator = ((TestHydraRingCalculatorFactory)HydraRingCalculatorFactory.Instance).DesignWaterLevelCalculator; + testDesignWaterLevelCalculator.Converged = false; + // When Action call = () => contextMenuAdapter.Items[contextMenuRunDesignWaterLevelCalculationsIndex].PerformClick(); @@ -490,20 +492,14 @@ { var msgs = messages.ToArray(); Assert.AreEqual(7, msgs.Length); - StringAssert.StartsWith(string.Format("Validatie van 'Waterstand bij doorsnede-eis voor locatie '{0}'' gestart om: ", - hydraulicBoundaryLocation.Name), msgs[0]); - StringAssert.StartsWith(string.Format("Validatie van 'Waterstand bij doorsnede-eis voor locatie '{0}'' beëindigd om: ", - hydraulicBoundaryLocation.Name), msgs[1]); - StringAssert.StartsWith(string.Format("Berekening van 'Waterstand bij doorsnede-eis voor locatie '{0}'' gestart om: ", - hydraulicBoundaryLocation.Name), msgs[2]); - Assert.AreEqual(string.Format("Waterstand bij doorsnede-eis berekening voor locatie '{0}' is niet geconvergeerd.", - hydraulicBoundaryLocation.Name), msgs[3]); + StringAssert.StartsWith($"Validatie van 'Waterstand bij doorsnede-eis voor locatie '{hydraulicBoundaryLocation.Name}'' gestart om: ", msgs[0]); + StringAssert.StartsWith($"Validatie van 'Waterstand bij doorsnede-eis voor locatie '{hydraulicBoundaryLocation.Name}'' beëindigd om: ", msgs[1]); + StringAssert.StartsWith($"Berekening van 'Waterstand bij doorsnede-eis voor locatie '{hydraulicBoundaryLocation.Name}'' gestart om: ", msgs[2]); + Assert.AreEqual($"Waterstand bij doorsnede-eis berekening voor locatie '{hydraulicBoundaryLocation.Name}' is niet geconvergeerd.", msgs[3]); StringAssert.StartsWith("Toetspeil berekening is uitgevoerd op de tijdelijke locatie", msgs[4]); - StringAssert.StartsWith(string.Format("Berekening van 'Waterstand bij doorsnede-eis voor locatie '{0}'' beëindigd om: ", - hydraulicBoundaryLocation.Name), msgs[5]); - StringAssert.AreNotEqualIgnoringCase(string.Format("Uitvoeren van '{0}' is gelukt.", - hydraulicBoundaryLocation.Name), msgs[6]); + StringAssert.StartsWith($"Berekening van 'Waterstand bij doorsnede-eis voor locatie '{hydraulicBoundaryLocation.Name}'' beëindigd om: ", msgs[5]); + StringAssert.AreNotEqualIgnoringCase($"Uitvoeren van '{hydraulicBoundaryLocation.Name}' is gelukt.", msgs[6]); }); Assert.AreEqual(0, hydraulicBoundaryLocation.DesignWaterLevel, hydraulicBoundaryLocation.DesignWaterLevel.GetAccuracy()); Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/HydraRing/RingComputation.exe =================================================================== diff -u -r335f22bf291368f3339c22ca40d295d3aea726de -ra19c5c366cdc06eb5872ee9a78c4db1fd72564a1 Binary files differ Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/HydraRing/hydraring_computation.dll =================================================================== diff -u -r335f22bf291368f3339c22ca40d295d3aea726de -ra19c5c366cdc06eb5872ee9a78c4db1fd72564a1 Binary files differ Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Ringtoets.Integration.Forms.Test.csproj =================================================================== diff -u -r6fa1bd13de71a612bbb0abcee6df366e7a318943 -ra19c5c366cdc06eb5872ee9a78c4db1fd72564a1 --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Ringtoets.Integration.Forms.Test.csproj (.../Ringtoets.Integration.Forms.Test.csproj) (revision 6fa1bd13de71a612bbb0abcee6df366e7a318943) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Ringtoets.Integration.Forms.Test.csproj (.../Ringtoets.Integration.Forms.Test.csproj) (revision a19c5c366cdc06eb5872ee9a78c4db1fd72564a1) @@ -203,6 +203,10 @@ {BF753DB5-973B-4ADF-B0F6-9437325C3466} Ringtoets.GrassCoverErosionInwards.Data.TestUtil + + {888D4097-8BC2-4703-9FB1-8744C94D525E} + Ringtoets.HydraRing.Calculation + {74CBA865-9338-447F-BAD9-28312446AE84} Ringtoets.HydraRing.Calculation.TestUtil Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/TreeNodeInfos/DesignWaterLevelLocationsContextTreeNodeInfoTest.cs =================================================================== diff -u -r19db52c6c2776ade0a18342b78f1d64f809ce9d7 -ra19c5c366cdc06eb5872ee9a78c4db1fd72564a1 --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/TreeNodeInfos/DesignWaterLevelLocationsContextTreeNodeInfoTest.cs (.../DesignWaterLevelLocationsContextTreeNodeInfoTest.cs) (revision 19db52c6c2776ade0a18342b78f1d64f809ce9d7) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/TreeNodeInfos/DesignWaterLevelLocationsContextTreeNodeInfoTest.cs (.../DesignWaterLevelLocationsContextTreeNodeInfoTest.cs) (revision a19c5c366cdc06eb5872ee9a78c4db1fd72564a1) @@ -38,6 +38,7 @@ using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Hydraulics; using Ringtoets.Common.Data.TestUtil; +using Ringtoets.HydraRing.Calculation.Calculator.Factory; using Ringtoets.HydraRing.Calculation.TestUtil.Calculator; using Ringtoets.Integration.Data; using Ringtoets.Integration.Forms.PresentationObjects; @@ -290,8 +291,7 @@ Action action = () => contextMenuAdapter.Items[contextMenuRunAssessmentLevelCalculationsIndex].PerformClick(); // Then - string message = string.Format("Berekeningen konden niet worden gestart. Fout bij het lezen van bestand '{0}': het bestand bestaat niet.", - hydraulicBoundaryDatabase.FilePath); + string message = $"Berekeningen konden niet worden gestart. Fout bij het lezen van bestand '{hydraulicBoundaryDatabase.FilePath}': het bestand bestaat niet."; TestHelper.AssertLogMessageWithLevelIsGenerated(action, new Tuple(message, LogLevelConstant.Error)); Assert.IsNaN(hydraulicBoundaryLocation1.DesignWaterLevel); // No result set @@ -347,6 +347,9 @@ using (ContextMenuStrip contextMenuAdapter = info.ContextMenuStrip(context, null, treeViewControl)) using (new HydraRingCalculatorFactoryConfig()) { + var testDesignWaterLevelCalculator = ((TestHydraRingCalculatorFactory)HydraRingCalculatorFactory.Instance).DesignWaterLevelCalculator; + testDesignWaterLevelCalculator.Converged = false; + // When Action call = () => contextMenuAdapter.Items[contextMenuRunAssessmentLevelCalculationsIndex].PerformClick(); @@ -355,13 +358,13 @@ { var msgs = messages.ToArray(); Assert.AreEqual(7, msgs.Length); - StringAssert.StartsWith(string.Format("Validatie van 'Toetspeil berekenen voor locatie '{0}'' gestart om:", location.Name), msgs[0]); - StringAssert.StartsWith(string.Format("Validatie van 'Toetspeil berekenen voor locatie '{0}'' beëindigd om:", location.Name), msgs[1]); - StringAssert.StartsWith(string.Format("Berekening van 'Toetspeil berekenen voor locatie '{0}'' gestart om:", location.Name), msgs[2]); - StringAssert.StartsWith(string.Format("Toetspeil berekening voor locatie {0} is niet geconvergeerd.", location.Name), msgs[3]); + StringAssert.StartsWith($"Validatie van 'Toetspeil berekenen voor locatie '{location.Name}'' gestart om:", msgs[0]); + StringAssert.StartsWith($"Validatie van 'Toetspeil berekenen voor locatie '{location.Name}'' beëindigd om:", msgs[1]); + StringAssert.StartsWith($"Berekening van 'Toetspeil berekenen voor locatie '{location.Name}'' gestart om:", msgs[2]); + StringAssert.StartsWith($"Toetspeil berekening voor locatie {location.Name} is niet geconvergeerd.", msgs[3]); StringAssert.StartsWith("Toetspeil berekening is uitgevoerd op de tijdelijke locatie", msgs[4]); - StringAssert.StartsWith(string.Format("Berekening van 'Toetspeil berekenen voor locatie '{0}'' beëindigd om:", location.Name), msgs[5]); - StringAssert.StartsWith(string.Format("Uitvoeren van 'Toetspeil berekenen voor locatie '{0}'' is gelukt.", location.Name), msgs[6]); + StringAssert.StartsWith($"Berekening van 'Toetspeil berekenen voor locatie '{location.Name}'' beëindigd om:", msgs[5]); + StringAssert.StartsWith($"Uitvoeren van 'Toetspeil berekenen voor locatie '{location.Name}'' is gelukt.", msgs[6]); }); Assert.AreEqual(0, location.DesignWaterLevel, location.DesignWaterLevel.GetAccuracy()); Assert.AreEqual(CalculationConvergence.CalculatedNotConverged, location.DesignWaterLevelCalculationConvergence); Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/TreeNodeInfos/WaveHeightLocationsContextTreeNodeInfoTest.cs =================================================================== diff -u -r533cfb6b8d9c3e198204d1c6ee022b79049e6d43 -ra19c5c366cdc06eb5872ee9a78c4db1fd72564a1 --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/TreeNodeInfos/WaveHeightLocationsContextTreeNodeInfoTest.cs (.../WaveHeightLocationsContextTreeNodeInfoTest.cs) (revision 533cfb6b8d9c3e198204d1c6ee022b79049e6d43) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/TreeNodeInfos/WaveHeightLocationsContextTreeNodeInfoTest.cs (.../WaveHeightLocationsContextTreeNodeInfoTest.cs) (revision a19c5c366cdc06eb5872ee9a78c4db1fd72564a1) @@ -38,6 +38,7 @@ using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Hydraulics; using Ringtoets.Common.Data.TestUtil; +using Ringtoets.HydraRing.Calculation.Calculator.Factory; using Ringtoets.HydraRing.Calculation.TestUtil.Calculator; using Ringtoets.Integration.Data; using Ringtoets.Integration.Forms.PresentationObjects; @@ -336,8 +337,7 @@ Action action = () => contextMenuAdapter.Items[contextMenuRunWaveHeightCalculationsIndex].PerformClick(); // Then - string message = string.Format("Berekeningen konden niet worden gestart. Fout bij het lezen van bestand '{0}': het bestand bestaat niet.", - hydraulicBoundaryDatabase.FilePath); + string message = $"Berekeningen konden niet worden gestart. Fout bij het lezen van bestand '{hydraulicBoundaryDatabase.FilePath}': het bestand bestaat niet."; TestHelper.AssertLogMessageWithLevelIsGenerated(action, new Tuple(message, LogLevelConstant.Error)); Assert.IsNaN(hydraulicBoundaryLocation1.WaveHeight); // No result set @@ -395,6 +395,9 @@ using (ContextMenuStrip contextMenuAdapter = info.ContextMenuStrip(context, null, treeViewControl)) using (new HydraRingCalculatorFactoryConfig()) { + var testWaveHeightCalculator = ((TestHydraRingCalculatorFactory)HydraRingCalculatorFactory.Instance).WaveHeightCalculator; + testWaveHeightCalculator.Converged = false; + // When Action action = () => contextMenuAdapter.Items[contextMenuRunWaveHeightCalculationsIndex].PerformClick(); @@ -403,13 +406,13 @@ { var msgs = messages.ToArray(); Assert.AreEqual(7, msgs.Length); - StringAssert.StartsWith(string.Format("Validatie van 'Golfhoogte berekenen voor locatie '{0}'' gestart om:", locationName), msgs[0]); - StringAssert.StartsWith(string.Format("Validatie van 'Golfhoogte berekenen voor locatie '{0}'' beëindigd om:", locationName), msgs[1]); - StringAssert.StartsWith(string.Format("Berekening van 'Golfhoogte berekenen voor locatie '{0}'' gestart om:", locationName), msgs[2]); - StringAssert.StartsWith(string.Format("Golfhoogte berekening voor locatie {0} is niet geconvergeerd.", locationName), msgs[3]); + StringAssert.StartsWith($"Validatie van 'Golfhoogte berekenen voor locatie '{locationName}'' gestart om:", msgs[0]); + StringAssert.StartsWith($"Validatie van 'Golfhoogte berekenen voor locatie '{locationName}'' beëindigd om:", msgs[1]); + StringAssert.StartsWith($"Berekening van 'Golfhoogte berekenen voor locatie '{locationName}'' gestart om:", msgs[2]); + StringAssert.StartsWith($"Golfhoogte berekening voor locatie {locationName} is niet geconvergeerd.", msgs[3]); StringAssert.StartsWith("Golfhoogte berekening is uitgevoerd op de tijdelijke locatie", msgs[4]); - StringAssert.StartsWith(string.Format("Berekening van 'Golfhoogte berekenen voor locatie '{0}'' beëindigd om:", locationName), msgs[5]); - StringAssert.StartsWith(string.Format("Uitvoeren van 'Golfhoogte berekenen voor locatie '{0}'' is gelukt.", locationName), msgs[6]); + StringAssert.StartsWith($"Berekening van 'Golfhoogte berekenen voor locatie '{locationName}'' beëindigd om:", msgs[5]); + StringAssert.StartsWith($"Uitvoeren van 'Golfhoogte berekenen voor locatie '{locationName}'' is gelukt.", msgs[6]); }); Assert.AreEqual(CalculationConvergence.CalculatedNotConverged, location.WaveHeightCalculationConvergence); } Index: Ringtoets/Revetment/src/Ringtoets.Revetment.Service/WaveConditionsCalculationServiceBase.cs =================================================================== diff -u -r9063c3c60f936760953c52185b72f0cb2dce9bf8 -ra19c5c366cdc06eb5872ee9a78c4db1fd72564a1 --- Ringtoets/Revetment/src/Ringtoets.Revetment.Service/WaveConditionsCalculationServiceBase.cs (.../WaveConditionsCalculationServiceBase.cs) (revision 9063c3c60f936760953c52185b72f0cb2dce9bf8) +++ Ringtoets/Revetment/src/Ringtoets.Revetment.Service/WaveConditionsCalculationServiceBase.cs (.../WaveConditionsCalculationServiceBase.cs) (revision a19c5c366cdc06eb5872ee9a78c4db1fd72564a1) @@ -234,7 +234,8 @@ calculator.WaveAngle, calculator.WaveDirection, norm, - calculator.ReliabilityIndex); + calculator.ReliabilityIndex, + calculator.Converged); return output; } catch (HydraRingFileParserException) Index: Ringtoets/Revetment/src/Ringtoets.Revetment.Service/WaveConditionsService.cs =================================================================== diff -u -re182f6f394aa75e739467a77e7bcacd9a8b25429 -ra19c5c366cdc06eb5872ee9a78c4db1fd72564a1 --- Ringtoets/Revetment/src/Ringtoets.Revetment.Service/WaveConditionsService.cs (.../WaveConditionsService.cs) (revision e182f6f394aa75e739467a77e7bcacd9a8b25429) +++ Ringtoets/Revetment/src/Ringtoets.Revetment.Service/WaveConditionsService.cs (.../WaveConditionsService.cs) (revision a19c5c366cdc06eb5872ee9a78c4db1fd72564a1) @@ -41,17 +41,16 @@ /// The calculated wave direction w.r.t. North. /// The target norm to calculate for. /// The calculated reliability. + /// The calculated convergence value. /// The calculated . - public static WaveConditionsOutput Calculate(double waterLevel, double waveHeight, double wavePeakPeriod, - double waveAngle, double waveDirection, - double norm, double calculatedReliability) + public static WaveConditionsOutput Calculate(double waterLevel, double waveHeight, double wavePeakPeriod, double waveAngle, double waveDirection, double norm, double calculatedReliability, bool? calculatedConvergence) { double targetReliability = StatisticsConverter.ProbabilityToReliability(norm); double targetProbability = StatisticsConverter.ReliabilityToProbability(targetReliability); double calculatedProbability = StatisticsConverter.ReliabilityToProbability(calculatedReliability); - CalculationConvergence convergence = RingtoetsCommonDataCalculationService.CalculationConverged(calculatedReliability, norm); + CalculationConvergence convergence = RingtoetsCommonDataCalculationService.CalculationConverged(calculatedConvergence); return new WaveConditionsOutput(waterLevel, waveHeight, wavePeakPeriod, waveAngle, waveDirection, targetProbability, targetReliability, calculatedProbability, calculatedReliability, convergence); Index: Ringtoets/Revetment/test/Ringtoets.Revetment.Service.Test/WaveConditionsServiceTest.cs =================================================================== diff -u -re182f6f394aa75e739467a77e7bcacd9a8b25429 -ra19c5c366cdc06eb5872ee9a78c4db1fd72564a1 --- Ringtoets/Revetment/test/Ringtoets.Revetment.Service.Test/WaveConditionsServiceTest.cs (.../WaveConditionsServiceTest.cs) (revision e182f6f394aa75e739467a77e7bcacd9a8b25429) +++ Ringtoets/Revetment/test/Ringtoets.Revetment.Service.Test/WaveConditionsServiceTest.cs (.../WaveConditionsServiceTest.cs) (revision a19c5c366cdc06eb5872ee9a78c4db1fd72564a1) @@ -42,43 +42,32 @@ // Call WaveConditionsOutput output = WaveConditionsService.Calculate(waterLevel, waveHeight, wavePeakPeriod, - waveAngle, waveDirection, double.MinValue, double.NaN); + waveAngle, waveDirection, double.MinValue, double.NaN, null); // Assert Assert.AreEqual(waterLevel, output.WaterLevel, output.WaterLevel.GetAccuracy()); Assert.AreEqual(waveHeight, output.WaveHeight, output.WaveHeight.GetAccuracy()); Assert.AreEqual(wavePeakPeriod, output.WavePeakPeriod, output.WavePeakPeriod.GetAccuracy()); Assert.AreEqual(waveAngle, output.WaveAngle, output.WaveAngle.GetAccuracy()); Assert.AreEqual(waveDirection, output.WaveDirection, output.WaveDirection.GetAccuracy()); + Assert.AreEqual(CalculationConvergence.NotCalculated, output.CalculationConvergence); } [Test] - public void CalculationConverged_WithConvergedResults_CalculationConvergedTrue() + [TestCase(true, CalculationConvergence.CalculatedConverged)] + [TestCase(false, CalculationConvergence.CalculatedNotConverged)] + [TestCase(null, CalculationConvergence.NotCalculated)] + public void CalculationConverged_WithConvergedResults_CalculationConvergedTrue(bool? convergence, CalculationConvergence expectedConvergence) { - // Setup - const double norm = 0.001; - double calculatedReliability = StatisticsConverter.ProbabilityToReliability(norm); - // Call WaveConditionsOutput output = WaveConditionsService.Calculate(double.NaN, double.NaN, double.NaN, double.NaN, - double.NaN, norm, calculatedReliability); + double.NaN, double.NaN, double.NaN, convergence); // Assert - Assert.AreEqual(CalculationConvergence.CalculatedConverged, output.CalculationConvergence); + Assert.AreEqual(expectedConvergence, output.CalculationConvergence); } [Test] - public void CalculationConverged_WithoutConvergedResults_CalculationConvergedFalse() - { - // Call - WaveConditionsOutput output = WaveConditionsService.Calculate(double.NaN, double.NaN, double.NaN, double.NaN, - double.NaN, 1, 5.0e-3); - - // Assert - Assert.AreEqual(CalculationConvergence.CalculatedNotConverged, output.CalculationConvergence); - } - - [Test] [TestCase(1.1, -1.335177736118940)] [TestCase(3000, 3.402932835385330)] [TestCase(20000, 3.890591886413120)] @@ -93,7 +82,7 @@ // Call WaveConditionsOutput output = WaveConditionsService.Calculate(double.NaN, double.NaN, double.NaN, double.NaN, - double.NaN, norm, double.NaN); + double.NaN, norm, double.NaN, null); // Assert Assert.AreEqual(expectedReliability, output.TargetReliability, output.TargetReliability.GetAccuracy()); @@ -114,7 +103,7 @@ // Call WaveConditionsOutput output = WaveConditionsService.Calculate(double.NaN, double.NaN, double.NaN, double.NaN, - double.NaN, norm, double.NaN); + double.NaN, norm, double.NaN, null); // Assert Assert.AreEqual(expectedProbability, output.TargetProbability, 1e-6); @@ -127,7 +116,7 @@ { // Call WaveConditionsOutput output = WaveConditionsService.Calculate(double.NaN, double.NaN, double.NaN, double.NaN, - double.NaN, double.MinValue, reliability); + double.NaN, double.MinValue, reliability, null); // Assert Assert.AreEqual(expectedReliability, output.CalculatedReliability, output.CalculatedReliability.GetAccuracy()); @@ -145,7 +134,7 @@ { // Call WaveConditionsOutput output = WaveConditionsService.Calculate(double.NaN, double.NaN, double.NaN, double.NaN, - double.NaN, double.MinValue, reliability); + double.NaN, double.MinValue, reliability, null); // Assert Assert.AreEqual(expectedProbability, output.CalculatedProbability, 1e-6);