Index: Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/RingtoetsProjectTestHelper.cs =================================================================== diff -u -rb4e3629ea2130359117dd403af8db3c8ae0c680b -r714ecb29352663cc4b18f7d00d09ed73b863c53f --- Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/RingtoetsProjectTestHelper.cs (.../RingtoetsProjectTestHelper.cs) (revision b4e3629ea2130359117dd403af8db3c8ae0c680b) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/RingtoetsProjectTestHelper.cs (.../RingtoetsProjectTestHelper.cs) (revision 714ecb29352663cc4b18f7d00d09ed73b863c53f) @@ -959,8 +959,8 @@ }, Output = new GrassCoverErosionOutwardsWaveConditionsOutput(new[] { - new WaveConditionsOutput(1, 2, 3, 4), - new WaveConditionsOutput(2, 3, 4, 5) + new WaveConditionsOutput(1, 2, 3, 4, 5, 0.6, 0.7, 0.8, 0.9), + new WaveConditionsOutput(0, 1, 2, 3, 4, 0.5, 0.6, 0.7, 0.8) }) }); } @@ -1048,12 +1048,12 @@ }, Output = new StabilityStoneCoverWaveConditionsOutput(new[] { - new WaveConditionsOutput(5, 6, 7, 8), - new WaveConditionsOutput(4, 4, 2, 2) + new WaveConditionsOutput(1, 2, 3, 4, 5, 0.6, 0.7, 0.8, 0.9), + new WaveConditionsOutput(0, 1, 2, 3, 4, 0.5, 0.6, 0.7, 0.8) }, new[] { - new WaveConditionsOutput(7, 4, 1, 2), - new WaveConditionsOutput(8, 3, 2, 1) + new WaveConditionsOutput(10, 9, 8, 7, 6, 0.5, 0.4, 0.3, 0.2), + new WaveConditionsOutput(9, 8, 7, 6, 5, 0.4, 0.3, 0.2, 0.1) }) }); } @@ -1141,8 +1141,8 @@ }, Output = new WaveImpactAsphaltCoverWaveConditionsOutput(new[] { - new WaveConditionsOutput(5, 6, 7, 8), - new WaveConditionsOutput(4, 4, 2, 2) + new WaveConditionsOutput(1, 2, 3, 4, 5, 0.6, 0.7, 0.8, 0.9), + new WaveConditionsOutput(0, 1, 2, 3, 4, 0.5, 0.6, 0.7, 0.8) }) }); } Index: Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/PropertyInfos/GrassCoverErosionOutwardsWaveConditionsOutputPropertiesTest.cs =================================================================== diff -u -r215e7512a8046a8f6ba71276c85d5880328d5ba1 -r714ecb29352663cc4b18f7d00d09ed73b863c53f --- Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/PropertyInfos/GrassCoverErosionOutwardsWaveConditionsOutputPropertiesTest.cs (.../GrassCoverErosionOutwardsWaveConditionsOutputPropertiesTest.cs) (revision 215e7512a8046a8f6ba71276c85d5880328d5ba1) +++ Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/PropertyInfos/GrassCoverErosionOutwardsWaveConditionsOutputPropertiesTest.cs (.../GrassCoverErosionOutwardsWaveConditionsOutputPropertiesTest.cs) (revision 714ecb29352663cc4b18f7d00d09ed73b863c53f) @@ -23,7 +23,6 @@ using System.ComponentModel; using Core.Common.Gui.Converters; using Core.Common.Gui.PropertyBag; -using Core.Common.Utils; using NUnit.Framework; using Ringtoets.Common.Data.TestUtil; using Ringtoets.Common.Forms.Helpers; @@ -76,17 +75,11 @@ Assert.AreEqual(firstOutput.WavePeakPeriod, firstOutputProperties.WavePeakPeriod); Assert.AreEqual(firstOutput.WaveAngle, firstOutputProperties.WaveAngle); Assert.AreEqual(firstOutput.WaveDirection, firstOutputProperties.WaveDirection); - - double expectedTargetReliability = firstOutput.TargetReliability; - double expectedTargetProbability = StatisticsConverter.ReliabilityToProbability(expectedTargetReliability); - Assert.AreEqual(ProbabilityFormattingHelper.Format(expectedTargetProbability), firstOutputProperties.TargetProbability); - Assert.AreEqual(expectedTargetReliability, firstOutputProperties.TargetReliability, + Assert.AreEqual(ProbabilityFormattingHelper.Format(firstOutput.TargetProbability), firstOutputProperties.TargetProbability); + Assert.AreEqual(firstOutput.TargetReliability, firstOutputProperties.TargetReliability, firstOutputProperties.TargetReliability.GetAccuracy()); - - double expectedCalculatedReliability = firstOutput.TargetReliability; - double expectedCalculatedProbability = StatisticsConverter.ReliabilityToProbability(expectedCalculatedReliability); - Assert.AreEqual(ProbabilityFormattingHelper.Format(expectedCalculatedProbability), firstOutputProperties.TargetProbability); - Assert.AreEqual(expectedTargetReliability, firstOutputProperties.TargetReliability, + Assert.AreEqual(ProbabilityFormattingHelper.Format(firstOutput.CalculatedProbability), firstOutputProperties.CalculatedProbability); + Assert.AreEqual(firstOutput.TargetReliability, firstOutputProperties.TargetReliability, firstOutputProperties.TargetReliability.GetAccuracy()); Assert.AreEqual(string.Empty, firstOutputProperties.Convergence); } Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/ExportInfos/StabilityStoneCoverWaveConditionsCalculationContextExportInfoTest.cs =================================================================== diff -u -rd42451749e8feec1c96555eb81b1cd7d67e30146 -r714ecb29352663cc4b18f7d00d09ed73b863c53f --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/ExportInfos/StabilityStoneCoverWaveConditionsCalculationContextExportInfoTest.cs (.../StabilityStoneCoverWaveConditionsCalculationContextExportInfoTest.cs) (revision d42451749e8feec1c96555eb81b1cd7d67e30146) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/ExportInfos/StabilityStoneCoverWaveConditionsCalculationContextExportInfoTest.cs (.../StabilityStoneCoverWaveConditionsCalculationContextExportInfoTest.cs) (revision 714ecb29352663cc4b18f7d00d09ed73b863c53f) @@ -25,8 +25,8 @@ using NUnit.Framework; using Rhino.Mocks; using Ringtoets.Common.Data.AssessmentSection; -using Ringtoets.Revetment.Data; using Ringtoets.Revetment.IO; +using Ringtoets.Revetment.TestUtil; using Ringtoets.StabilityStoneCover.Data; using Ringtoets.StabilityStoneCover.Forms.PresentationObjects; using Ringtoets.StabilityStoneCover.Plugin; @@ -113,14 +113,14 @@ var failureMechanism = new StabilityStoneCoverFailureMechanism(); var columnsOutput = new[] { - new WaveConditionsOutput(1, 0, 3, 5), - new WaveConditionsOutput(8, 2, 6, 1) + new TestWaveConditionsOutput(1, 0, 3, 5), + new TestWaveConditionsOutput(8, 2, 6, 1) }; var blocksOutput = new[] { - new WaveConditionsOutput(6, 2, 9, 4), - new WaveConditionsOutput(4, 1, 7, 3) + new TestWaveConditionsOutput(6, 2, 9, 4), + new TestWaveConditionsOutput(4, 1, 7, 3) }; var context = new StabilityStoneCoverWaveConditionsCalculationContext( Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/ExportInfos/StabilityStoneCoverWaveConditionsCalculationGroupContextExportInfoTest.cs =================================================================== diff -u -rd42451749e8feec1c96555eb81b1cd7d67e30146 -r714ecb29352663cc4b18f7d00d09ed73b863c53f --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/ExportInfos/StabilityStoneCoverWaveConditionsCalculationGroupContextExportInfoTest.cs (.../StabilityStoneCoverWaveConditionsCalculationGroupContextExportInfoTest.cs) (revision d42451749e8feec1c96555eb81b1cd7d67e30146) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/ExportInfos/StabilityStoneCoverWaveConditionsCalculationGroupContextExportInfoTest.cs (.../StabilityStoneCoverWaveConditionsCalculationGroupContextExportInfoTest.cs) (revision 714ecb29352663cc4b18f7d00d09ed73b863c53f) @@ -26,8 +26,8 @@ using Rhino.Mocks; using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Calculation; -using Ringtoets.Revetment.Data; using Ringtoets.Revetment.IO; +using Ringtoets.Revetment.TestUtil; using Ringtoets.StabilityStoneCover.Data; using Ringtoets.StabilityStoneCover.Forms.PresentationObjects; using Ringtoets.StabilityStoneCover.Plugin; @@ -141,14 +141,14 @@ var calculationGroup = new CalculationGroup(); var columnsOutput = new[] { - new WaveConditionsOutput(1, 0, 3, 5), - new WaveConditionsOutput(8, 2, 6, 1) + new TestWaveConditionsOutput(1, 0, 3, 5), + new TestWaveConditionsOutput(8, 2, 6, 1) }; var blocksOutput = new[] { - new WaveConditionsOutput(6, 2, 9, 4), - new WaveConditionsOutput(4, 1, 7, 3) + new TestWaveConditionsOutput(6, 2, 9, 4), + new TestWaveConditionsOutput(4, 1, 7, 3) }; calculationGroup.Children.Add(new StabilityStoneCoverWaveConditionsCalculation { @@ -181,21 +181,22 @@ var failureMechanism = new StabilityStoneCoverFailureMechanism(); var calculationGroup = new CalculationGroup(); - var columnsOutput = new[] - { - new WaveConditionsOutput(1, 0, 3, 5), - new WaveConditionsOutput(8, 2, 6, 1) - }; - var blocksOutput = new[] - { - new WaveConditionsOutput(6, 2, 9, 4), - new WaveConditionsOutput(4, 1, 7, 3) - }; - StabilityStoneCoverWaveConditionsOutput stabilityStoneCoverWaveConditionsOutput = null; if (hasOutput) { + var columnsOutput = new[] + { + new TestWaveConditionsOutput(1, 0, 3, 5), + new TestWaveConditionsOutput(8, 2, 6, 1) + }; + + var blocksOutput = new[] + { + new TestWaveConditionsOutput(6, 2, 9, 4), + new TestWaveConditionsOutput(4, 1, 7, 3) + }; + stabilityStoneCoverWaveConditionsOutput = new StabilityStoneCoverWaveConditionsOutput(columnsOutput, blocksOutput); } calculationGroup.Children.Add( Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/ExportInfos/WaveImpactAsphaltCoverWaveConditionsCalculationContextExportInfoTest.cs =================================================================== diff -u -rd42451749e8feec1c96555eb81b1cd7d67e30146 -r714ecb29352663cc4b18f7d00d09ed73b863c53f --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/ExportInfos/WaveImpactAsphaltCoverWaveConditionsCalculationContextExportInfoTest.cs (.../WaveImpactAsphaltCoverWaveConditionsCalculationContextExportInfoTest.cs) (revision d42451749e8feec1c96555eb81b1cd7d67e30146) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/ExportInfos/WaveImpactAsphaltCoverWaveConditionsCalculationContextExportInfoTest.cs (.../WaveImpactAsphaltCoverWaveConditionsCalculationContextExportInfoTest.cs) (revision 714ecb29352663cc4b18f7d00d09ed73b863c53f) @@ -25,8 +25,8 @@ using NUnit.Framework; using Rhino.Mocks; using Ringtoets.Common.Data.AssessmentSection; -using Ringtoets.Revetment.Data; using Ringtoets.Revetment.IO; +using Ringtoets.Revetment.TestUtil; using Ringtoets.WaveImpactAsphaltCover.Data; using Ringtoets.WaveImpactAsphaltCover.Forms.PresentationObjects; using Ringtoets.WaveImpactAsphaltCover.Plugin; @@ -113,8 +113,8 @@ var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); var output = new[] { - new WaveConditionsOutput(1, 0, 3, 5), - new WaveConditionsOutput(8, 2, 6, 1) + new TestWaveConditionsOutput(1, 0, 3, 5), + new TestWaveConditionsOutput(8, 2, 6, 1) }; var context = new WaveImpactAsphaltCoverWaveConditionsCalculationContext( Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/ExportInfos/WaveImpactAsphaltCoverWaveConditionsCalculationGroupContextExportInfoTest.cs =================================================================== diff -u -rd42451749e8feec1c96555eb81b1cd7d67e30146 -r714ecb29352663cc4b18f7d00d09ed73b863c53f --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/ExportInfos/WaveImpactAsphaltCoverWaveConditionsCalculationGroupContextExportInfoTest.cs (.../WaveImpactAsphaltCoverWaveConditionsCalculationGroupContextExportInfoTest.cs) (revision d42451749e8feec1c96555eb81b1cd7d67e30146) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/ExportInfos/WaveImpactAsphaltCoverWaveConditionsCalculationGroupContextExportInfoTest.cs (.../WaveImpactAsphaltCoverWaveConditionsCalculationGroupContextExportInfoTest.cs) (revision 714ecb29352663cc4b18f7d00d09ed73b863c53f) @@ -26,8 +26,8 @@ using Rhino.Mocks; using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Calculation; -using Ringtoets.Revetment.Data; using Ringtoets.Revetment.IO; +using Ringtoets.Revetment.TestUtil; using Ringtoets.WaveImpactAsphaltCover.Data; using Ringtoets.WaveImpactAsphaltCover.Forms.PresentationObjects; using Ringtoets.WaveImpactAsphaltCover.Plugin; @@ -141,8 +141,8 @@ var calculationGroup = new CalculationGroup(); var output = new[] { - new WaveConditionsOutput(1, 0, 3, 5), - new WaveConditionsOutput(8, 2, 6, 1) + new TestWaveConditionsOutput(1, 0, 3, 5), + new TestWaveConditionsOutput(8, 2, 6, 1) }; calculationGroup.Children.Add(new WaveImpactAsphaltCoverWaveConditionsCalculation @@ -176,15 +176,15 @@ var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); var calculationGroup = new CalculationGroup(); - var output = new[] - { - new WaveConditionsOutput(1, 0, 3, 5), - new WaveConditionsOutput(8, 2, 6, 1) - }; WaveImpactAsphaltCoverWaveConditionsOutput waveImpactAsphaltCoverWaveConditionsOutput = null; if (hasOutput) { + var output = new[] + { + new TestWaveConditionsOutput(1, 0, 3, 5), + new TestWaveConditionsOutput(8, 2, 6, 1) + }; waveImpactAsphaltCoverWaveConditionsOutput = new WaveImpactAsphaltCoverWaveConditionsOutput(output); } calculationGroup.Children.Add( Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Ringtoets.Integration.Forms.Test.csproj =================================================================== diff -u -re38a7c2baca2872af6319d535c6468133ea31fbc -r714ecb29352663cc4b18f7d00d09ed73b863c53f --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Ringtoets.Integration.Forms.Test.csproj (.../Ringtoets.Integration.Forms.Test.csproj) (revision e38a7c2baca2872af6319d535c6468133ea31fbc) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Ringtoets.Integration.Forms.Test.csproj (.../Ringtoets.Integration.Forms.Test.csproj) (revision 714ecb29352663cc4b18f7d00d09ed73b863c53f) @@ -213,6 +213,10 @@ {E3347B16-BB18-41C1-8D34-FBCBF20DB695} Ringtoets.Revetment.IO + + {3706200E-48C6-4B86-B48C-4E45C69ABE95} + Ringtoets.Revetment.Data.TestUtil + {3D4B9740-8348-4434-8D77-B611FC6EE57F} Ringtoets.StabilityPointStructures.Data Index: Ringtoets/Revetment/src/Ringtoets.Revetment.Data/WaveConditionsOutput.cs =================================================================== diff -u -r5cb1e84934857c8ac82e41690e7b6fc510d01927 -r714ecb29352663cc4b18f7d00d09ed73b863c53f --- Ringtoets/Revetment/src/Ringtoets.Revetment.Data/WaveConditionsOutput.cs (.../WaveConditionsOutput.cs) (revision 5cb1e84934857c8ac82e41690e7b6fc510d01927) +++ Ringtoets/Revetment/src/Ringtoets.Revetment.Data/WaveConditionsOutput.cs (.../WaveConditionsOutput.cs) (revision 714ecb29352663cc4b18f7d00d09ed73b863c53f) @@ -23,9 +23,9 @@ using System.ComponentModel; using Core.Common.Base; using Core.Common.Base.Data; -using Core.Common.Utils; using Ringtoets.Common.Data.Calculation; using Ringtoets.HydraRing.Data; +using RingtoetsCommonDataResources = Ringtoets.Common.Data.Properties.Resources; namespace Ringtoets.Revetment.Data { @@ -35,6 +35,8 @@ public class WaveConditionsOutput : Observable, ICalculationOutput { private CalculationConvergence calculationConvergence; + private double targetProbability; + private double calculatedProbability; /// /// Creates a new instance of . @@ -44,21 +46,26 @@ /// The calculated wave peak period. /// The calculated wave angle with respect to the dike normal. /// The calculated wave direction with respect to North. - /// The return period. - /// The calculated beta. - /// All provided output values will be rounded to 2 decimals, except for - /// and . + /// The target probability. + /// The target beta (reliability). + /// The calculated probability. + /// The calculated beta (reliability). public WaveConditionsOutput(double waterLevel, double waveHeight, double wavePeakPeriod, double waveAngle, - double waveDirection = double.NaN, double returnPeriod = double.NaN, double calculatedReliability = double.NaN) + double waveDirection = double.NaN, + double targetProbability = double.NaN, double targetReliability = double.NaN, + double calculatedProbability = double.NaN, double calculatedReliability = double.NaN) { WaterLevel = new RoundedDouble(2, waterLevel); WaveHeight = new RoundedDouble(2, waveHeight); WavePeakPeriod = new RoundedDouble(2, wavePeakPeriod); WaveAngle = new RoundedDouble(2, waveAngle); WaveDirection = new RoundedDouble(2, waveDirection); - TargetReliability = StatisticsConverter.ReturnPeriodToReliability(returnPeriod); - CalculatedReliability = calculatedReliability; + TargetProbability = targetProbability; + TargetReliability = new RoundedDouble(6, targetReliability); + + CalculatedProbability = calculatedProbability; + CalculatedReliability = new RoundedDouble(6, calculatedReliability); } /// @@ -95,15 +102,67 @@ /// Gets the target beta. /// [-] /// - public double TargetReliability { get; private set; } + public RoundedDouble TargetReliability { get; private set; } /// + /// Gets the target probability. + /// + /// [-] + /// Thrown when setting a value that falls + /// outside the [0.0, 1.0] range and isn't . + public double TargetProbability + { + get + { + return targetProbability; + } + private set + { + if (double.IsNaN(value) || (0.0 <= value && value <= 1.0)) + { + targetProbability = value; + } + else + { + throw new ArgumentOutOfRangeException("value", + RingtoetsCommonDataResources.Probability_Must_be_in_range_zero_to_one); + } + } + } + + /// /// Gets the calculated beta. /// [-] /// - public double CalculatedReliability { get; private set; } + public RoundedDouble CalculatedReliability { get; private set; } /// + /// Gets the target probability. + /// + /// [-] + /// Thrown when setting a value that falls + /// outside the [0.0, 1.0] range and isn't . + public double CalculatedProbability + { + get + { + return calculatedProbability; + } + private set + { + if (double.IsNaN(value) || (0.0 <= value && value <= 1.0)) + { + calculatedProbability = value; + } + else + { + throw new ArgumentOutOfRangeException("value", + RingtoetsCommonDataResources.Probability_Must_be_in_range_zero_to_one); + } + } + } + + /// /// Gets or sets the convergence status of the calculation. /// /// Thrown when attempting to set invalid enum value Index: Ringtoets/Revetment/src/Ringtoets.Revetment.Forms/PropertyClasses/WaveConditionsOutputProperties.cs =================================================================== diff -u -r5cb1e84934857c8ac82e41690e7b6fc510d01927 -r714ecb29352663cc4b18f7d00d09ed73b863c53f --- Ringtoets/Revetment/src/Ringtoets.Revetment.Forms/PropertyClasses/WaveConditionsOutputProperties.cs (.../WaveConditionsOutputProperties.cs) (revision 5cb1e84934857c8ac82e41690e7b6fc510d01927) +++ Ringtoets/Revetment/src/Ringtoets.Revetment.Forms/PropertyClasses/WaveConditionsOutputProperties.cs (.../WaveConditionsOutputProperties.cs) (revision 714ecb29352663cc4b18f7d00d09ed73b863c53f) @@ -106,8 +106,7 @@ { get { - double probability = StatisticsConverter.ReliabilityToProbability(data.TargetReliability); - return ProbabilityFormattingHelper.Format(probability); + return ProbabilityFormattingHelper.Format(data.TargetProbability); } } @@ -118,7 +117,7 @@ { get { - return new RoundedDouble(3, data.TargetReliability); + return data.TargetReliability; } } @@ -129,8 +128,7 @@ { get { - double probability = StatisticsConverter.ReliabilityToProbability(data.CalculatedReliability); - return ProbabilityFormattingHelper.Format(probability); + return ProbabilityFormattingHelper.Format(data.CalculatedProbability); } } @@ -141,7 +139,7 @@ { get { - return new RoundedDouble(3, data.CalculatedReliability); + return data.CalculatedReliability; } } Index: Ringtoets/Revetment/src/Ringtoets.Revetment.Service/Ringtoets.Revetment.Service.csproj =================================================================== diff -u -rbc4c4000ca4a850b49a88156ca2b919ea690494b -r714ecb29352663cc4b18f7d00d09ed73b863c53f --- Ringtoets/Revetment/src/Ringtoets.Revetment.Service/Ringtoets.Revetment.Service.csproj (.../Ringtoets.Revetment.Service.csproj) (revision bc4c4000ca4a850b49a88156ca2b919ea690494b) +++ Ringtoets/Revetment/src/Ringtoets.Revetment.Service/Ringtoets.Revetment.Service.csproj (.../Ringtoets.Revetment.Service.csproj) (revision 714ecb29352663cc4b18f7d00d09ed73b863c53f) @@ -50,6 +50,7 @@ Resources.resx + @@ -63,6 +64,10 @@ Core.Common.Base False + + {f49bd8b2-332a-4c91-a196-8cce0a2c7d98} + Core.Common.Utils + {d4200f43-3f72-4f42-af0a-8ced416a38ec} Ringtoets.Common.Data Index: Ringtoets/Revetment/src/Ringtoets.Revetment.Service/WaveConditionsCalculationServiceBase.cs =================================================================== diff -u -r5cb1e84934857c8ac82e41690e7b6fc510d01927 -r714ecb29352663cc4b18f7d00d09ed73b863c53f --- Ringtoets/Revetment/src/Ringtoets.Revetment.Service/WaveConditionsCalculationServiceBase.cs (.../WaveConditionsCalculationServiceBase.cs) (revision 5cb1e84934857c8ac82e41690e7b6fc510d01927) +++ Ringtoets/Revetment/src/Ringtoets.Revetment.Service/WaveConditionsCalculationServiceBase.cs (.../WaveConditionsCalculationServiceBase.cs) (revision 714ecb29352663cc4b18f7d00d09ed73b863c53f) @@ -228,14 +228,13 @@ { calculator.Calculate(calculationInput); - var output = new WaveConditionsOutput(waterLevel, - calculator.WaveHeight, - calculator.WavePeakPeriod, - calculator.WaveAngle, - calculator.WaveDirection, - returnPeriod, - calculator.ReliabilityIndex); - output.CalculationConvergence = RingtoetsCommonDataCalculationService.CalculationConverged(calculator.ReliabilityIndex, returnPeriod); + WaveConditionsOutput output = WaveConditionsService.Calculate(waterLevel, + calculator.WaveHeight, + calculator.WavePeakPeriod, + calculator.WaveAngle, + calculator.WaveDirection, + returnPeriod, + calculator.ReliabilityIndex); return output; } catch (HydraRingFileParserException) Index: Ringtoets/Revetment/src/Ringtoets.Revetment.Service/WaveConditionsService.cs =================================================================== diff -u --- Ringtoets/Revetment/src/Ringtoets.Revetment.Service/WaveConditionsService.cs (revision 0) +++ Ringtoets/Revetment/src/Ringtoets.Revetment.Service/WaveConditionsService.cs (revision 714ecb29352663cc4b18f7d00d09ed73b863c53f) @@ -0,0 +1,60 @@ +// Copyright (C) Stichting Deltares 2016. All rights reserved. +// +// This file is part of Ringtoets. +// +// Ringtoets is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using Core.Common.Utils; +using Ringtoets.Common.Service; +using Ringtoets.Revetment.Data; + +namespace Ringtoets.Revetment.Service +{ + /// + /// Class for calculating the . + /// + public static class WaveConditionsService + { + /// + /// Calculates the based on the provided parameters. + /// + /// The calculated water level. + /// The calculated wave height. + /// The calculated wave peak period. + /// The calculated wave angle w.r.t the dike normal. + /// The calculated wave direction w.r.t. North. + /// The target return period to calculate for. + /// The calculated reliability. + /// The calculated . + public static WaveConditionsOutput Calculate(double waterLevel, double waveHeight, double wavePeakPeriod, + double waveAngle, double waveDirection, + double returnPeriod, double calculatedReliability) + { + double targetReliability = StatisticsConverter.ReturnPeriodToReliability(returnPeriod); + double targetProbability = StatisticsConverter.ReliabilityToProbability(targetReliability); + + double calculatedProbability = StatisticsConverter.ReliabilityToProbability(calculatedReliability); + + return new WaveConditionsOutput(waterLevel, waveHeight, wavePeakPeriod, waveAngle, waveDirection, targetProbability, + targetReliability, calculatedProbability, calculatedReliability) + { + CalculationConvergence = RingtoetsCommonDataCalculationService.CalculationConverged(calculatedReliability, returnPeriod) + }; + } + } +} \ No newline at end of file Index: Ringtoets/Revetment/test/Ringtoets.Revetment.Data.Test/WaveConditionsOutputTest.cs =================================================================== diff -u -r5cb1e84934857c8ac82e41690e7b6fc510d01927 -r714ecb29352663cc4b18f7d00d09ed73b863c53f --- Ringtoets/Revetment/test/Ringtoets.Revetment.Data.Test/WaveConditionsOutputTest.cs (.../WaveConditionsOutputTest.cs) (revision 5cb1e84934857c8ac82e41690e7b6fc510d01927) +++ Ringtoets/Revetment/test/Ringtoets.Revetment.Data.Test/WaveConditionsOutputTest.cs (.../WaveConditionsOutputTest.cs) (revision 714ecb29352663cc4b18f7d00d09ed73b863c53f) @@ -23,7 +23,6 @@ using System.ComponentModel; using Core.Common.Base; using Core.Common.TestUtil; -using Core.Common.Utils; using NUnit.Framework; using Ringtoets.Common.Data.Calculation; using Ringtoets.Common.Data.TestUtil; @@ -43,14 +42,14 @@ const double wavePeakPeriod = 0.19435; const double waveAngle = 180.62353; const double waveDirection = 230.67893; - const double returnPeriod = 6000000; + const double targetProbability = 0.5; + const double targetReliability = 3000; + const double calculatedProbability = 0.7; + const double calculatedReliability = 4000; - var random = new Random(21); - double calculatedBeta = random.NextDouble(); - // Call - var output = new WaveConditionsOutput(waterLevel, waveHeight, wavePeakPeriod, waveAngle, waveDirection, returnPeriod, - calculatedBeta); + var output = new WaveConditionsOutput(waterLevel, waveHeight, wavePeakPeriod, waveAngle, waveDirection, targetProbability, + targetReliability, calculatedProbability, calculatedReliability); // Assert Assert.IsInstanceOf(output); @@ -61,31 +60,92 @@ Assert.AreEqual(waveAngle, output.WaveAngle, output.WaveAngle.GetAccuracy()); Assert.AreEqual(waveDirection, output.WaveDirection, output.WaveDirection.GetAccuracy()); - Assert.AreEqual(StatisticsConverter.ReturnPeriodToReliability(returnPeriod), output.TargetReliability); - Assert.AreEqual(calculatedBeta, output.CalculatedReliability); + Assert.AreEqual(targetProbability, output.TargetProbability); + Assert.AreEqual(6, output.TargetReliability.NumberOfDecimalPlaces); + Assert.AreEqual(targetReliability, output.TargetReliability, output.TargetReliability.GetAccuracy()); + Assert.AreEqual(calculatedProbability, output.CalculatedProbability); + Assert.AreEqual(6, output.CalculatedReliability.NumberOfDecimalPlaces); + Assert.AreEqual(calculatedReliability, output.CalculatedReliability, output.CalculatedReliability.GetAccuracy()); Assert.AreEqual(CalculationConvergence.NotCalculated, output.CalculationConvergence); } [Test] + [TestCase(0.0)] + [TestCase(1.0)] + [TestCase(0.5)] + [TestCase(double.NaN)] + public void TargetProbability_ValidValues_ReturnsExpectedValue(double targetProbability) + { + // Call + var output = new WaveConditionsOutput(double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, targetProbability, + double.NaN, double.NaN, double.NaN); + + // Assert + Assert.AreEqual(targetProbability, output.TargetProbability); + } + + [Test] + [TestCase(-1e-6)] + [TestCase(1 + 1e-6)] + [TestCase(-100)] + [TestCase(100)] + [TestCase(double.NegativeInfinity)] + [TestCase(double.PositiveInfinity)] + public void TargetProbability_InvalidValues_ThrowsArgumentOutOfRangeException(double targetProbability) + { + // Call + TestDelegate call = () => new WaveConditionsOutput(double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, targetProbability, + double.NaN, double.NaN, double.NaN); + + // Assert + const string expectedMessage = "Kans moet in het bereik [0, 1] liggen."; + TestHelper.AssertThrowsArgumentExceptionAndTestMessage(call, expectedMessage); + } + + + [Test] + [TestCase(0.0)] + [TestCase(1.0)] + [TestCase(0.5)] + [TestCase(double.NaN)] + public void CalculatedProbability_ValidValues_ReturnsExpectedValue(double calculatedProbability) + { + // Call + var output = new WaveConditionsOutput(double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, + double.NaN, calculatedProbability, double.NaN); + + // Assert + Assert.AreEqual(calculatedProbability, output.CalculatedProbability); + } + + [Test] + [TestCase(-1e-6)] + [TestCase(1 + 1e-6)] + [TestCase(-100)] + [TestCase(100)] + [TestCase(double.NegativeInfinity)] + [TestCase(double.PositiveInfinity)] + public void CalculatedProbability_InvalidValues_ThrowsArgumentOutOfRangeException(double calculatedProbability) + { + // Call + TestDelegate call = () => new WaveConditionsOutput(double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, + double.NaN, calculatedProbability, double.NaN); + + // Assert + const string expectedMessage = "Kans moet in het bereik [0, 1] liggen."; + TestHelper.AssertThrowsArgumentExceptionAndTestMessage(call, expectedMessage); + } + + [Test] [TestCase(CalculationConvergence.NotCalculated)] [TestCase(CalculationConvergence.CalculatedConverged)] [TestCase(CalculationConvergence.CalculatedNotConverged)] public void CalculationConvergence_ValidValues_SetsCalculationConvergence(CalculationConvergence convergence) { // Setup - const double waterLevel = 3.09378; - const double waveHeight = 4.29884; - const double wavePeakPeriod = 0.19435; - const double waveAngle = 180.62353; - const double waveDirection = 230.67893; + var output = new WaveConditionsOutput(double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, + double.NaN, double.NaN, double.NaN); - var random = new Random(21); - double returnPeriod = random.NextDouble(); - double calculatedBeta = random.NextDouble(); - - var output = new WaveConditionsOutput(waterLevel, waveHeight, wavePeakPeriod, waveAngle, waveDirection, returnPeriod, - calculatedBeta); - // Call output.CalculationConvergence = convergence; @@ -97,19 +157,9 @@ public void CalculationConvergence_Invalidvalue_ThrowsInvalidEnumArgumentException() { // Setup - const double waterLevel = 3.09378; - const double waveHeight = 4.29884; - const double wavePeakPeriod = 0.19435; - const double waveAngle = 180.62353; - const double waveDirection = 230.67893; - const double returnPeriod = 6000000; + var output = new WaveConditionsOutput(double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, + double.NaN, double.NaN, double.NaN); - var random = new Random(21); - double calculatedBeta = random.NextDouble(); - - var output = new WaveConditionsOutput(waterLevel, waveHeight, wavePeakPeriod, waveAngle, waveDirection, returnPeriod, - calculatedBeta); - // Call TestDelegate call = () => output.CalculationConvergence = (CalculationConvergence) 9001; Index: Ringtoets/Revetment/test/Ringtoets.Revetment.Data.TestUtil.Test/TestWaveConditionsOutputTest.cs =================================================================== diff -u -r215e7512a8046a8f6ba71276c85d5880328d5ba1 -r714ecb29352663cc4b18f7d00d09ed73b863c53f --- Ringtoets/Revetment/test/Ringtoets.Revetment.Data.TestUtil.Test/TestWaveConditionsOutputTest.cs (.../TestWaveConditionsOutputTest.cs) (revision 215e7512a8046a8f6ba71276c85d5880328d5ba1) +++ Ringtoets/Revetment/test/Ringtoets.Revetment.Data.TestUtil.Test/TestWaveConditionsOutputTest.cs (.../TestWaveConditionsOutputTest.cs) (revision 714ecb29352663cc4b18f7d00d09ed73b863c53f) @@ -20,7 +20,6 @@ // All rights reserved. using System; -using Core.Common.Utils; using NUnit.Framework; using Ringtoets.Common.Data.TestUtil; using Ringtoets.HydraRing.Data; @@ -44,17 +43,18 @@ Assert.AreEqual(4.4, output.WaveAngle, output.WaveAngle.GetAccuracy()); Assert.AreEqual(5.5, output.WaveDirection, output.WaveDirection.GetAccuracy()); - double expectedTargetReliability = StatisticsConverter.ReturnPeriodToReliability(3000); - Assert.AreEqual(expectedTargetReliability, output.TargetReliability); - Assert.AreEqual(12.3, output.CalculatedReliability); + Assert.AreEqual(0.1, output.TargetProbability); + Assert.AreEqual(1.282, output.TargetReliability, output.TargetReliability.GetAccuracy()); + Assert.AreEqual(0.4, output.CalculatedProbability); + Assert.AreEqual(0.253, output.CalculatedReliability, output.TargetReliability.GetAccuracy()); Assert.AreEqual(CalculationConvergence.NotCalculated, output.CalculationConvergence); } [Test] [TestCase(CalculationConvergence.NotCalculated)] [TestCase(CalculationConvergence.CalculatedConverged)] [TestCase(CalculationConvergence.CalculatedNotConverged)] - public void Constructor_WithParameters_ReturnsWithExpectedCalculationConvergence(CalculationConvergence convergence) + public void Constructor_WithParameters_ReturnsWithExpectedValues(CalculationConvergence convergence) { // Setup var random = new Random(21); @@ -73,9 +73,10 @@ Assert.AreEqual(waveAngle, output.WaveAngle, output.WaveAngle.GetAccuracy()); Assert.AreEqual(5.5, output.WaveDirection, output.WaveDirection.GetAccuracy()); - double expectedTargetReliability = StatisticsConverter.ReturnPeriodToReliability(3000); - Assert.AreEqual(expectedTargetReliability, output.TargetReliability); - Assert.AreEqual(12.3, output.CalculatedReliability); + Assert.AreEqual(0.1, output.TargetProbability); + Assert.AreEqual(1.282, output.TargetReliability, output.TargetReliability.GetAccuracy()); + Assert.AreEqual(0.4, output.CalculatedProbability); + Assert.AreEqual(0.253, output.CalculatedReliability, output.TargetReliability.GetAccuracy()); Assert.AreEqual(convergence, output.CalculationConvergence); } } Index: Ringtoets/Revetment/test/Ringtoets.Revetment.Data.TestUtil/TestWaveConditionsOutput.cs =================================================================== diff -u -r215e7512a8046a8f6ba71276c85d5880328d5ba1 -r714ecb29352663cc4b18f7d00d09ed73b863c53f --- Ringtoets/Revetment/test/Ringtoets.Revetment.Data.TestUtil/TestWaveConditionsOutput.cs (.../TestWaveConditionsOutput.cs) (revision 215e7512a8046a8f6ba71276c85d5880328d5ba1) +++ Ringtoets/Revetment/test/Ringtoets.Revetment.Data.TestUtil/TestWaveConditionsOutput.cs (.../TestWaveConditionsOutput.cs) (revision 714ecb29352663cc4b18f7d00d09ed73b863c53f) @@ -44,7 +44,7 @@ /// The calculated wave peak period public TestWaveConditionsOutput(double waterLevel, double waveHeight, double wavePeakPeriod, double waveAngle, CalculationConvergence convergence = CalculationConvergence.NotCalculated) : - base(waterLevel, waveHeight, wavePeakPeriod, waveAngle, 5.5, 3000, 12.3) + base(waterLevel, waveHeight, wavePeakPeriod, waveAngle, 5.5, 0.1, 1.282, 0.4, 0.253) { CalculationConvergence = convergence; } Index: Ringtoets/Revetment/test/Ringtoets.Revetment.Forms.Test/PropertyClasses/WaveConditionsOutputPropertiesTest.cs =================================================================== diff -u -r5cb1e84934857c8ac82e41690e7b6fc510d01927 -r714ecb29352663cc4b18f7d00d09ed73b863c53f --- Ringtoets/Revetment/test/Ringtoets.Revetment.Forms.Test/PropertyClasses/WaveConditionsOutputPropertiesTest.cs (.../WaveConditionsOutputPropertiesTest.cs) (revision 5cb1e84934857c8ac82e41690e7b6fc510d01927) +++ Ringtoets/Revetment/test/Ringtoets.Revetment.Forms.Test/PropertyClasses/WaveConditionsOutputPropertiesTest.cs (.../WaveConditionsOutputPropertiesTest.cs) (revision 714ecb29352663cc4b18f7d00d09ed73b863c53f) @@ -23,7 +23,6 @@ using System.ComponentModel; using Core.Common.Gui.PropertyBag; using Core.Common.TestUtil; -using Core.Common.Utils; using NUnit.Framework; using Ringtoets.Common.Data.TestUtil; using Ringtoets.Common.Forms.Helpers; @@ -55,14 +54,16 @@ const double wavePeakPeriod = 0.19435; const double waveAngle = 180.62353; const double waveDirection = 230.5326; - const double returnPeriod = 3000; - const double calculatedBeta = 67.856; + const double targetProbability = 0.5; + const double targetReliability = 3000; + const double calculatedProbability = 0.4; + const double calculatedReliability = 6000; // Call var properties = new WaveConditionsOutputProperties { - Data = new WaveConditionsOutput(waterLevel, waveHeight, wavePeakPeriod, waveAngle, waveDirection, returnPeriod, - calculatedBeta) + Data = new WaveConditionsOutput(waterLevel, waveHeight, wavePeakPeriod, waveAngle, waveDirection, targetProbability, + targetReliability, calculatedProbability, calculatedReliability) }; // Assert @@ -72,16 +73,13 @@ Assert.AreEqual(waveAngle, properties.WaveAngle, properties.WaveAngle.GetAccuracy()); Assert.AreEqual(waveDirection, properties.WaveDirection, properties.WaveDirection.GetAccuracy()); - const double accuracy = 1e-3; - double expectedTargetReliability = StatisticsConverter.ReturnPeriodToReliability(returnPeriod); - double targetProbability = StatisticsConverter.ReliabilityToProbability(expectedTargetReliability); - Assert.AreEqual(ProbabilityFormattingHelper.Format(targetProbability), properties.TargetProbability); - Assert.AreEqual(expectedTargetReliability, properties.TargetReliability, accuracy); + Assert.AreEqual(6, properties.TargetReliability.NumberOfDecimalPlaces); + Assert.AreEqual(targetReliability, properties.TargetReliability, properties.TargetReliability.GetAccuracy()); - double expectedCalculatedProbability = StatisticsConverter.ReliabilityToProbability(calculatedBeta); - Assert.AreEqual(ProbabilityFormattingHelper.Format(expectedCalculatedProbability), properties.CalculatedProbability); - Assert.AreEqual(calculatedBeta, properties.CalculatedReliability, accuracy); + Assert.AreEqual(ProbabilityFormattingHelper.Format(calculatedProbability), properties.CalculatedProbability); + Assert.AreEqual(6, properties.CalculatedReliability.NumberOfDecimalPlaces); + Assert.AreEqual(calculatedReliability, properties.CalculatedReliability, properties.CalculatedReliability.GetAccuracy()); Assert.AreEqual(string.Empty, properties.Convergence); } @@ -95,14 +93,16 @@ const double wavePeakPeriod = 0.19435; const double waveAngle = 180.62353; const double waveDirection = 230.5326; - const double returnPeriod = 3000; - const double calculatedBeta = 67.856; + const double targetProbability = 0.5; + const double targetReliability = 3000; + const double calculatedProbability = 0.4; + const double calculatedReliability = 6000; // Call var properties = new WaveConditionsOutputProperties { - Data = new WaveConditionsOutput(waterLevel, waveHeight, wavePeakPeriod, waveAngle, waveDirection, returnPeriod, - calculatedBeta) + Data = new WaveConditionsOutput(waterLevel, waveHeight, wavePeakPeriod, waveAngle, waveDirection, targetProbability, + targetReliability, calculatedProbability, calculatedReliability) }; // Assert @@ -172,7 +172,7 @@ "Betrouwbaarheidsindex van de ingevoerde kans waarvoor het resultaat moet worden berekend.", true); - PropertyDescriptor calculatedProbabilityProperty= dynamicProperties[requiredCalculatedProbabilityPropertyIndex]; + PropertyDescriptor calculatedProbabilityProperty = dynamicProperties[requiredCalculatedProbabilityPropertyIndex]; Assert.IsNotNull(calculatedProbabilityProperty); PropertiesTestHelper.AssertRequiredPropertyDescriptorProperties(calculatedProbabilityProperty, "Algemeen", Index: Ringtoets/Revetment/test/Ringtoets.Revetment.Service.Test/Ringtoets.Revetment.Service.Test.csproj =================================================================== diff -u -r2d5e2d09b0cb1a7f48e1b0a067d332347c89d4a8 -r714ecb29352663cc4b18f7d00d09ed73b863c53f --- Ringtoets/Revetment/test/Ringtoets.Revetment.Service.Test/Ringtoets.Revetment.Service.Test.csproj (.../Ringtoets.Revetment.Service.Test.csproj) (revision 2d5e2d09b0cb1a7f48e1b0a067d332347c89d4a8) +++ Ringtoets/Revetment/test/Ringtoets.Revetment.Service.Test/Ringtoets.Revetment.Service.Test.csproj (.../Ringtoets.Revetment.Service.Test.csproj) (revision 714ecb29352663cc4b18f7d00d09ed73b863c53f) @@ -55,6 +55,7 @@ + @@ -71,6 +72,10 @@ {3bbfd65b-b277-4e50-ae6d-bd24c3434609} Core.Common.Base + + {f49bd8b2-332a-4c91-a196-8cce0a2c7d98} + Core.Common.Utils + {D749EE4C-CE50-4C17-BF01-9A953028C126} Core.Common.TestUtil Index: Ringtoets/Revetment/test/Ringtoets.Revetment.Service.Test/WaveConditionsServiceTest.cs =================================================================== diff -u --- Ringtoets/Revetment/test/Ringtoets.Revetment.Service.Test/WaveConditionsServiceTest.cs (revision 0) +++ Ringtoets/Revetment/test/Ringtoets.Revetment.Service.Test/WaveConditionsServiceTest.cs (revision 714ecb29352663cc4b18f7d00d09ed73b863c53f) @@ -0,0 +1,148 @@ +// Copyright (C) Stichting Deltares 2016. All rights reserved. +// +// This file is part of Ringtoets. +// +// Ringtoets is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using Core.Common.Utils; +using NUnit.Framework; +using Ringtoets.Common.Data.TestUtil; +using Ringtoets.HydraRing.Data; +using Ringtoets.Revetment.Data; + +namespace Ringtoets.Revetment.Service.Test +{ + [TestFixture] + public class WaveConditionsServiceTest + { + [Test] + public void Calculate_NonProbabilisticInput_ReturnsExpectedNonProbabilisticValues() + { + // Setup + const double waterLevel = 1.1; + const double waveHeight = 2.2; + const double wavePeakPeriod = 3.3; + const double waveAngle = 4.4; + const double waveDirection = 5.5; + + // Call + WaveConditionsOutput output = WaveConditionsService.Calculate(waterLevel, waveHeight, wavePeakPeriod, + waveAngle, waveDirection, double.MinValue, double.NaN); + + // 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()); + } + + [Test] + public void CalculationConverged_WithConvergedResults_CalculationConvergedTrue() + { + // Setup + double returnPeriod = 1.0e3; + double calculatedReliability = StatisticsConverter.ReturnPeriodToReliability(returnPeriod); + + // Call + WaveConditionsOutput output = WaveConditionsService.Calculate(double.NaN, double.NaN, double.NaN, double.NaN, + double.NaN, returnPeriod, calculatedReliability); + + // Assert + Assert.AreEqual(CalculationConvergence.CalculatedConverged, 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)] + [TestCase(30000, 3.987878936606940)] + [TestCase(600000, 4.649132934007460)] + [TestCase(1000000, 4.75342430881709)] + [TestCase(6000000, 5.103554002888150)] + public void TargetReliability_DifferentReturnPeriods_ReturnsExpectedValues(double returnPeriod, double expectedReliability) + { + // Call + WaveConditionsOutput output = WaveConditionsService.Calculate(double.NaN, double.NaN, double.NaN, double.NaN, + double.NaN, returnPeriod, double.NaN); + + // Assert + Assert.AreEqual(expectedReliability, output.TargetReliability, output.TargetReliability.GetAccuracy()); + } + + [Test] + [TestCase(1.1, 9.090909E-01)] + [TestCase(3000, 3.333333E-04)] + [TestCase(20000, 5.000000E-05)] + [TestCase(30000, 3.333333E-05)] + [TestCase(600000, 1.666667E-06)] + [TestCase(1000000, 1.000000E-06)] + [TestCase(6000000, 1.666667E-07)] + public void TargetProbability_DifferentReturnPeriods_ReturnsExpectedValues(double returnPeriod, double expectedProbability) + { + // Call + WaveConditionsOutput output = WaveConditionsService.Calculate(double.NaN, double.NaN, double.NaN, double.NaN, + double.NaN, returnPeriod, double.NaN); + + // Assert + Assert.AreEqual(expectedProbability, output.TargetProbability, 1e-6); + } + + [Test] + [TestCase(-1.335177736118940, -1.335177736118940)] + [TestCase(3.402932835385330, 3.402932835385330)] + public void CalculatedReliability_DifferentReliabilities_ReturnsExpectedValues(double reliability, double expectedReliability) + { + // Call + WaveConditionsOutput output = WaveConditionsService.Calculate(double.NaN, double.NaN, double.NaN, double.NaN, + double.NaN, double.MinValue, reliability); + + // Assert + Assert.AreEqual(expectedReliability, output.CalculatedReliability, output.CalculatedReliability.GetAccuracy()); + } + + [Test] + [TestCase(-1.335177736118940, 9.090909E-01)] + [TestCase(3.402932835385330, 3.333333E-04)] + [TestCase(3.890591886413120, 5.000000E-05)] + [TestCase(3.987878936606940, 3.333333E-05)] + [TestCase(4.649132934007460, 1.666667E-06)] + [TestCase(4.753424308817090, 1.000000E-06)] + [TestCase(5.103554002888150, 1.666667E-07)] + public void CalculatedProbability_DifferentReliabilities_ReturnsExpectedValues(double reliability, double expectedProbability) + { + // Call + WaveConditionsOutput output = WaveConditionsService.Calculate(double.NaN, double.NaN, double.NaN, double.NaN, + double.NaN, double.MinValue, reliability); + + // Assert + Assert.AreEqual(expectedProbability, output.CalculatedProbability, 1e-6); + } + } +} \ No newline at end of file Index: Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Forms.Test/PropertyClasses/StabilityStoneCoverWaveConditionsOutputPropertiesTest.cs =================================================================== diff -u -r215e7512a8046a8f6ba71276c85d5880328d5ba1 -r714ecb29352663cc4b18f7d00d09ed73b863c53f --- Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Forms.Test/PropertyClasses/StabilityStoneCoverWaveConditionsOutputPropertiesTest.cs (.../StabilityStoneCoverWaveConditionsOutputPropertiesTest.cs) (revision 215e7512a8046a8f6ba71276c85d5880328d5ba1) +++ Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Forms.Test/PropertyClasses/StabilityStoneCoverWaveConditionsOutputPropertiesTest.cs (.../StabilityStoneCoverWaveConditionsOutputPropertiesTest.cs) (revision 714ecb29352663cc4b18f7d00d09ed73b863c53f) @@ -84,21 +84,16 @@ Assert.AreEqual(firstBlocksOutput.WavePeakPeriod, firstBlocksProperties.WavePeakPeriod); Assert.AreEqual(firstBlocksOutput.WaveAngle, firstBlocksProperties.WaveAngle); Assert.AreEqual(firstBlocksOutput.WaveDirection, firstBlocksProperties.WaveDirection); - - double expectedBlocksTargerReliability = firstBlocksOutput.TargetReliability; - double expectedBlocksTargetProbability = StatisticsConverter.ReliabilityToProbability(expectedBlocksTargerReliability); - Assert.AreEqual(ProbabilityFormattingHelper.Format(expectedBlocksTargetProbability), firstBlocksProperties.TargetProbability); - Assert.AreEqual(expectedBlocksTargerReliability, firstBlocksProperties.TargetReliability, + Assert.AreEqual(ProbabilityFormattingHelper.Format(firstBlocksOutput.TargetProbability), + firstBlocksProperties.TargetProbability); + Assert.AreEqual(firstBlocksOutput.TargetReliability, firstBlocksProperties.TargetReliability, firstBlocksProperties.TargetReliability.GetAccuracy()); - - double expectedBlocksCalculatedReliability = firstBlocksOutput.TargetReliability; - double expectedBlocksCalculatedProbability = StatisticsConverter.ReliabilityToProbability(expectedBlocksCalculatedReliability); - Assert.AreEqual(ProbabilityFormattingHelper.Format(expectedBlocksCalculatedProbability), firstBlocksProperties.TargetProbability); - Assert.AreEqual(expectedBlocksTargerReliability, firstBlocksProperties.TargetReliability, + Assert.AreEqual(ProbabilityFormattingHelper.Format(firstBlocksOutput.CalculatedProbability), + firstBlocksProperties.CalculatedProbability); + Assert.AreEqual(firstBlocksOutput.TargetReliability, firstBlocksProperties.TargetReliability, firstBlocksProperties.TargetReliability.GetAccuracy()); - Assert.AreEqual(string.Empty, firstBlocksProperties.Convergence); - + CollectionAssert.AllItemsAreInstancesOfType(properties.Columns, typeof(WaveConditionsOutputProperties)); Assert.AreEqual(columnsOutput.Length, properties.Columns.Length); @@ -109,21 +104,15 @@ Assert.AreEqual(firstColumnsOutput.WavePeakPeriod, firstColumnsProperties.WavePeakPeriod); Assert.AreEqual(firstColumnsOutput.WaveAngle, firstColumnsProperties.WaveAngle); Assert.AreEqual(firstColumnsOutput.WaveDirection, firstColumnsProperties.WaveDirection); - - double expectedColumnsTargerReliability = firstBlocksOutput.TargetReliability; - double expectedColumnsTargetProbability = StatisticsConverter.ReliabilityToProbability(expectedColumnsTargerReliability); - Assert.AreEqual(ProbabilityFormattingHelper.Format(expectedColumnsTargetProbability), firstBlocksProperties.TargetProbability); - Assert.AreEqual(expectedColumnsTargerReliability, firstBlocksProperties.TargetReliability, - firstBlocksProperties.TargetReliability.GetAccuracy()); - - double expectedColumnsCalculatedReliability = firstBlocksOutput.TargetReliability; - double expectedColumnsCalculatedProbability = StatisticsConverter.ReliabilityToProbability(expectedColumnsCalculatedReliability); - Assert.AreEqual(ProbabilityFormattingHelper.Format(expectedColumnsCalculatedProbability), firstBlocksProperties.TargetProbability); - Assert.AreEqual(expectedColumnsTargerReliability, firstBlocksProperties.TargetReliability, - firstBlocksProperties.TargetReliability.GetAccuracy()); - + Assert.AreEqual(ProbabilityFormattingHelper.Format(firstColumnsOutput.TargetProbability), + firstColumnsProperties.TargetProbability); + Assert.AreEqual(firstColumnsOutput.TargetReliability, firstColumnsProperties.TargetReliability, + firstColumnsProperties.TargetReliability.GetAccuracy()); + Assert.AreEqual(ProbabilityFormattingHelper.Format(firstBlocksOutput.CalculatedProbability), + firstColumnsProperties.CalculatedProbability); + Assert.AreEqual(firstColumnsOutput.TargetReliability, firstColumnsProperties.TargetReliability, + firstColumnsProperties.TargetReliability.GetAccuracy()); Assert.AreEqual(string.Empty, firstBlocksProperties.Convergence); - } [Test] Index: Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Forms.Test/PropertyClasses/WaveImpactAsphaltCoverWaveConditionsOutputPropertiesTest.cs =================================================================== diff -u -r215e7512a8046a8f6ba71276c85d5880328d5ba1 -r714ecb29352663cc4b18f7d00d09ed73b863c53f --- Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Forms.Test/PropertyClasses/WaveImpactAsphaltCoverWaveConditionsOutputPropertiesTest.cs (.../WaveImpactAsphaltCoverWaveConditionsOutputPropertiesTest.cs) (revision 215e7512a8046a8f6ba71276c85d5880328d5ba1) +++ Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Forms.Test/PropertyClasses/WaveImpactAsphaltCoverWaveConditionsOutputPropertiesTest.cs (.../WaveImpactAsphaltCoverWaveConditionsOutputPropertiesTest.cs) (revision 714ecb29352663cc4b18f7d00d09ed73b863c53f) @@ -23,7 +23,6 @@ using System.ComponentModel; using Core.Common.Gui.Converters; using Core.Common.Gui.PropertyBag; -using Core.Common.Utils; using NUnit.Framework; using Ringtoets.Common.Data.TestUtil; using Ringtoets.Common.Forms.Helpers; @@ -77,17 +76,13 @@ Assert.AreEqual(expectedOutputProperty.WavePeakPeriod, firstOutputProperties.WavePeakPeriod); Assert.AreEqual(expectedOutputProperty.WaveAngle, firstOutputProperties.WaveAngle); Assert.AreEqual(expectedOutputProperty.WaveDirection, firstOutputProperties.WaveDirection); - - double expectedTargetReliability = expectedOutputProperty.TargetReliability; - double expectedTargetProbability = StatisticsConverter.ReliabilityToProbability(expectedTargetReliability); - Assert.AreEqual(ProbabilityFormattingHelper.Format(expectedTargetProbability), firstOutputProperties.TargetProbability); - Assert.AreEqual(expectedTargetReliability, firstOutputProperties.TargetReliability, + Assert.AreEqual(ProbabilityFormattingHelper.Format(expectedOutputProperty.TargetProbability), + firstOutputProperties.TargetProbability); + Assert.AreEqual(expectedOutputProperty.TargetReliability, firstOutputProperties.TargetReliability, firstOutputProperties.TargetReliability.GetAccuracy()); - - double expectedCalculatedReliability = expectedOutputProperty.TargetReliability; - double expectedCalculatedProbability = StatisticsConverter.ReliabilityToProbability(expectedCalculatedReliability); - Assert.AreEqual(ProbabilityFormattingHelper.Format(expectedCalculatedProbability), firstOutputProperties.TargetProbability); - Assert.AreEqual(expectedTargetReliability, firstOutputProperties.TargetReliability, + Assert.AreEqual(ProbabilityFormattingHelper.Format(expectedOutputProperty.TargetProbability), + firstOutputProperties.TargetProbability); + Assert.AreEqual(expectedOutputProperty.TargetReliability, firstOutputProperties.TargetReliability, firstOutputProperties.TargetReliability.GetAccuracy()); Assert.AreEqual(string.Empty, firstOutputProperties.Convergence); }