Index: Demo/Ringtoets/src/Demo.Ringtoets/Commands/AddNewDemoAssessmentSectionCommand.cs =================================================================== diff -u -r74b0bdbaaaf07d590ea85486e34bc639d14fe4e4 -ra053684de9667dfb70aa8cf669e22843c2bd39ed --- Demo/Ringtoets/src/Demo.Ringtoets/Commands/AddNewDemoAssessmentSectionCommand.cs (.../AddNewDemoAssessmentSectionCommand.cs) (revision 74b0bdbaaaf07d590ea85486e34bc639d14fe4e4) +++ Demo/Ringtoets/src/Demo.Ringtoets/Commands/AddNewDemoAssessmentSectionCommand.cs (.../AddNewDemoAssessmentSectionCommand.cs) (revision a053684de9667dfb70aa8cf669e22843c2bd39ed) @@ -68,8 +68,6 @@ return demoAssessmentSection; } - - private void InitializeDemoReferenceLine(AssessmentSection demoAssessmentSection) { using (var embeddedResourceFileWriter = new EmbeddedResourceFileWriter(GetType().Assembly, true, "traject_6-3.shp", "traject_6-3.dbf", "traject_6-3.prj", "traject_6-3.shx")) @@ -148,7 +146,7 @@ { GrassCoverErosionInwardsFailureMechanism failureMechanism = demoAssessmentSection.GrassCoverErosionInwards; - var calculation = new GrassCoverErosionInwardsCalculation(failureMechanism.GeneralInput); + var calculation = new GrassCoverErosionInwardsCalculation(failureMechanism.GeneralInput, failureMechanism.NormProbabilityInput); failureMechanism.CalculationsGroup.Children.Add(calculation); calculation.InputParameters.HydraulicBoundaryLocation = demoAssessmentSection.HydraulicBoundaryDatabase.Locations.First(hl => hl.Id == 1300001); calculation.InputParameters.NotifyObservers(); Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsCalculation.cs =================================================================== diff -u -r7f45f1f08a4e6849984063d43bfecfd949b3c3fb -ra053684de9667dfb70aa8cf669e22843c2bd39ed --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsCalculation.cs (.../GrassCoverErosionInwardsCalculation.cs) (revision 7f45f1f08a4e6849984063d43bfecfd949b3c3fb) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsCalculation.cs (.../GrassCoverErosionInwardsCalculation.cs) (revision a053684de9667dfb70aa8cf669e22843c2bd39ed) @@ -37,16 +37,28 @@ /// /// Creates a new instance of . /// - /// General grass cover erosion inwards calculation input parameters that apply to each calculation. - /// When is null. - public GrassCoverErosionInwardsCalculation(GeneralGrassCoverErosionInwardsInput generalInputParameters) + /// General grass cover erosion inwards calculation input parameters + /// that apply to each calculation. + /// General norm probabilistic parameters that apply to each + /// calculation. + /// Thrown when + /// is null. + /// is null. + /// + public GrassCoverErosionInwardsCalculation(GeneralGrassCoverErosionInwardsInput generalInputParameters, + NormProbabilityGrassCoverErosionInwardsInput normProbabilityInput) { if (generalInputParameters == null) { throw new ArgumentNullException("generalInputParameters"); } + if (normProbabilityInput == null) + { + throw new ArgumentNullException("normProbabilityInput"); + } Name = Resources.GrassCoverErosionInwardsCalculation_DefaultName; InputParameters = new GrassCoverErosionInwardsInput(generalInputParameters); + NormProbabilityInput = normProbabilityInput; AddDemoInput(); } @@ -56,6 +68,11 @@ public GrassCoverErosionInwardsInput InputParameters { get; private set; } /// + /// Gets the length-effect parameters. + /// + public NormProbabilityGrassCoverErosionInwardsInput NormProbabilityInput { get; private set; } + + /// /// Gets or sets , which contains the results of a grass cover erosion inwards calculation. /// public GrassCoverErosionInwardsOutput Output { get; set; } @@ -105,8 +122,8 @@ // CriticalFlowRate InputParameters.CriticalFlowRate = new LognormalDistribution(4) { - Mean = new RoundedDouble(4,0.004), - StandardDeviation = new RoundedDouble(4,0.0006) + Mean = new RoundedDouble(4, 0.004), + StandardDeviation = new RoundedDouble(4, 0.0006) }; // Dike and Foreshore Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsGuiPlugin.cs =================================================================== diff -u -ra84ad0dc60c583bc68f6c95c57f3499e16a5f3d1 -ra053684de9667dfb70aa8cf669e22843c2bd39ed --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsGuiPlugin.cs (.../GrassCoverErosionInwardsGuiPlugin.cs) (revision a84ad0dc60c583bc68f6c95c57f3499e16a5f3d1) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsGuiPlugin.cs (.../GrassCoverErosionInwardsGuiPlugin.cs) (revision a053684de9667dfb70aa8cf669e22843c2bd39ed) @@ -26,7 +26,6 @@ using System.IO; using System.Linq; using System.Windows.Forms; -using Core.Common.Base.Data; using Core.Common.Controls.TreeView; using Core.Common.Gui.Forms.ProgressDialog; using Core.Common.Gui.Plugin; @@ -42,6 +41,7 @@ using Ringtoets.GrassCoverErosionInwards.Forms.PropertyClasses; using Ringtoets.GrassCoverErosionInwards.Forms.Views; using Ringtoets.GrassCoverErosionInwards.Plugin.Properties; +using Ringtoets.GrassCoverErosionInwards.Service; using Ringtoets.HydraRing.Calculation.Activities; using Ringtoets.HydraRing.Calculation.Data; using Ringtoets.HydraRing.Calculation.Data.Input.Overtopping; @@ -70,10 +70,10 @@ public override IEnumerable GetViewInfos() { yield return new ViewInfo< - FailureMechanismSectionResultContext, - IEnumerable, + FailureMechanismSectionResultContext, + IEnumerable, GrassCoverErosionInwardsFailureMechanismResultView - > + > { GetViewName = (v, o) => RingtoetsCommonDataResources.FailureMechanism_AssessmentResult_DisplayName, Image = RingtoetsCommonFormsResources.FailureMechanismSectionResultIcon, @@ -138,7 +138,8 @@ private static ExceedanceProbabilityCalculationActivity CreateHydraRingTargetProbabilityCalculationActivity(FailureMechanismSection failureMechanismSection, string hlcdDirectory, - GrassCoverErosionInwardsCalculation calculation) + GrassCoverErosionInwardsCalculation calculation, + double norm) { var hydraulicBoundaryLocationId = (int) calculation.InputParameters.HydraulicBoundaryLocation.Id; var sectionLength = failureMechanismSection.GetSectionLength(); @@ -165,7 +166,7 @@ ParseBreakWater(inwardsInput) ), calculation.ClearOutput, - output => { ParseHydraRingOutput(calculation, output); }); + output => { ParseHydraRingOutput(calculation, norm, output); }); } private static HydraRingBreakWater ParseBreakWater(GrassCoverErosionInwardsInput input) @@ -206,26 +207,27 @@ } } - private static void ParseHydraRingOutput(GrassCoverErosionInwardsCalculation calculation, ExceedanceProbabilityCalculationOutput output) + private static void ParseHydraRingOutput(GrassCoverErosionInwardsCalculation calculation, double contribution, ExceedanceProbabilityCalculationOutput output) { if (output != null) { - calculation.Output = new GrassCoverErosionInwardsOutput(double.NaN, double.NaN, (RoundedDouble) output.Beta, double.NaN, double.NaN); + GrassCoverErosionInwardsOutputCalculationService.Calculate(calculation, contribution, output.Beta); } else { throw new InvalidOperationException(Resources.GrassCoverErosionInwardsGuiPlugin_Error_during_overtopping_calculation); } } - private void CalculateAll(IFailureMechanism failureMechanism, IEnumerable calculations, IAssessmentSection assessmentSection) + private void CalculateAll(GrassCoverErosionInwardsFailureMechanism failureMechanism, IEnumerable calculations, IAssessmentSection assessmentSection) { // TODO: Remove "Where" filter when validation is implemented ActivityProgressDialogRunner.Run(Gui.MainWindow, calculations.Where(calc => calc.InputParameters.HydraulicBoundaryLocation != null) .Select(calc => CreateHydraRingTargetProbabilityCalculationActivity( failureMechanism.Sections.First(), // TODO: Pass dike section based on cross section of calculation with reference line Path.GetDirectoryName(assessmentSection.HydraulicBoundaryDatabase.FilePath), - calc)).ToList()); + calc, + assessmentSection.FailureMechanismContribution.Norm)).ToList()); } private static string AllDataAvailable(IAssessmentSection assessmentSection, GrassCoverErosionInwardsFailureMechanism failureMechanism) @@ -251,6 +253,29 @@ return null; } + #region GrassCoverErosionInwardsFailureMechanismResultView ViewInfo + + private static bool CloseFailureMechanismResultViewForData(GrassCoverErosionInwardsFailureMechanismResultView view, object o) + { + var assessmentSection = o as IAssessmentSection; + var failureMechanism = o as IFailureMechanism; + var failureMechanismContext = o as IFailureMechanismContext; + if (assessmentSection != null) + { + return assessmentSection + .GetFailureMechanisms() + .OfType() + .Any(fm => ReferenceEquals(view.Data, fm.SectionResults)); + } + if (failureMechanismContext != null) + { + failureMechanism = failureMechanismContext.WrappedData; + } + return failureMechanism != null && ReferenceEquals(view.Data, ((FailureMechanismBase) failureMechanism).SectionResults); + } + + #endregion + #region GrassCoverErosionInwards TreeNodeInfo private object[] FailureMechanismEnabledChildNodeObjects(GrassCoverErosionInwardsFailureMechanismContext grassCoverErosionInwardsFailureMechanismContext) @@ -333,7 +358,7 @@ private static void AddCalculation(GrassCoverErosionInwardsCalculationGroupContext context) { - var calculation = new GrassCoverErosionInwardsCalculation(context.FailureMechanism.GeneralInput) + var calculation = new GrassCoverErosionInwardsCalculation(context.FailureMechanism.GeneralInput, context.FailureMechanism.NormProbabilityInput) { Name = NamingHelper.GetUniqueName(context.WrappedData.Children, GrassCoverErosionInwardsDataResources.GrassCoverErosionInwardsCalculation_DefaultName, c => c.Name) }; @@ -348,29 +373,6 @@ #endregion - #region GrassCoverErosionInwardsFailureMechanismResultView ViewInfo - - private static bool CloseFailureMechanismResultViewForData(GrassCoverErosionInwardsFailureMechanismResultView view, object o) - { - var assessmentSection = o as IAssessmentSection; - var failureMechanism = o as IFailureMechanism; - var failureMechanismContext = o as IFailureMechanismContext; - if (assessmentSection != null) - { - return assessmentSection - .GetFailureMechanisms() - .OfType() - .Any(fm => ReferenceEquals(view.Data, fm.SectionResults)); - } - if (failureMechanismContext != null) - { - failureMechanism = failureMechanismContext.WrappedData; - } - return failureMechanism != null && ReferenceEquals(view.Data, ((FailureMechanismBase)failureMechanism).SectionResults); - } - - #endregion - #region CalculationGroupContext TreeNodeInfo private static object[] CalculationGroupContextChildNodeObjects(GrassCoverErosionInwardsCalculationGroupContext nodeData) @@ -517,7 +519,8 @@ var activity = CreateHydraRingTargetProbabilityCalculationActivity( context.FailureMechanism.Sections.First(), // TODO: Pass dike section based on cross section of calculation with reference line Path.GetDirectoryName(context.AssessmentSection.HydraulicBoundaryDatabase.FilePath), - calculation); + calculation, + context.AssessmentSection.FailureMechanismContribution.Norm); ActivityProgressDialogRunner.Run(Gui.MainWindow, activity); } Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Plugin/Ringtoets.GrassCoverErosionInwards.Plugin.csproj =================================================================== diff -u -rb5dda9752bc1d895c6c88427ef75c1771b671808 -ra053684de9667dfb70aa8cf669e22843c2bd39ed --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Plugin/Ringtoets.GrassCoverErosionInwards.Plugin.csproj (.../Ringtoets.GrassCoverErosionInwards.Plugin.csproj) (revision b5dda9752bc1d895c6c88427ef75c1771b671808) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Plugin/Ringtoets.GrassCoverErosionInwards.Plugin.csproj (.../Ringtoets.GrassCoverErosionInwards.Plugin.csproj) (revision a053684de9667dfb70aa8cf669e22843c2bd39ed) @@ -119,6 +119,11 @@ Ringtoets.GrassCoverErosionInwards.Forms False + + {2852E99B-AADB-4CBA-B6D2-6882D6113AA3} + Ringtoets.GrassCoverErosionInwards.Service + False + Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/GrassCoverErosionInwardsOutputCalculationService.cs =================================================================== diff -u --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/GrassCoverErosionInwardsOutputCalculationService.cs (revision 0) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/GrassCoverErosionInwardsOutputCalculationService.cs (revision a053684de9667dfb70aa8cf669e22843c2bd39ed) @@ -0,0 +1,127 @@ +// 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 MathNet.Numerics.Distributions; +using Ringtoets.GrassCoverErosionInwards.Data; + +namespace Ringtoets.GrassCoverErosionInwards.Service +{ + /// + /// This class is responsible for calculating the parameters required for . + /// + public class GrassCoverErosionInwardsOutputCalculationService + { + // Inputs + private readonly double norm; + private readonly int lengthEffectN; + private readonly double probability; + + // Results + private double betaTrajectNorm; + private double pTCrossAllowed; + private double pTCrossGEKB; + private double requiredReliability; + private double reliability; + private double factorOfSafety; + + private GrassCoverErosionInwardsOutputCalculationService(double norm, int lengthEffectN, double probability) + { + this.norm = norm; + this.lengthEffectN = lengthEffectN; + this.probability = probability; + } + + /// + /// Calculates + /// + /// + /// + /// + public static void Calculate(GrassCoverErosionInwardsCalculation calculation, double norm, double probability) + { + var calculator = new GrassCoverErosionInwardsOutputCalculationService(norm, calculation.NormProbabilityInput.N, probability); + + calculator.Calculate(); + + calculation.Output = new GrassCoverErosionInwardsOutput(calculator.betaTrajectNorm, + calculator.requiredReliability, + calculator.probability, + calculator.reliability, + calculator.factorOfSafety); + } + + private void Calculate() + { + CalculateReliability(); + + CalculateRequiredReliability(); + + factorOfSafety = FactorOfSafety(reliability, requiredReliability); + } + + private void CalculateReliability() + { + betaTrajectNorm = BetaTrajectNorm(norm); + pTCrossAllowed = PTCrossAllowed(probability, norm, lengthEffectN); + pTCrossGEKB = PTCrossGEKB(); + } + + private void CalculateRequiredReliability() + { + requiredReliability = BetaCrossAllowed(pTCrossAllowed); + reliability = BetaCrossGEKB(pTCrossGEKB); + } + + #region Sub calculations + + private static double BetaTrajectNorm(double contribution) + { + return new Normal().InverseCumulativeDistribution(1 - 1.0/contribution); + } + + private static double PTCrossAllowed(double probability, double contribution, double n) + { + return probability*(1.0/contribution)/n; + } + + private static double PTCrossGEKB() + { + return 1.0/50000; + } + + private static double BetaCrossAllowed(double pTCrossAllowed) + { + return new Normal().InverseCumulativeDistribution(1 - pTCrossAllowed); + } + + private static double BetaCrossGEKB(double pTCrossGEKB) + { + return new Normal().InverseCumulativeDistribution(1 - pTCrossGEKB); + } + + private static double FactorOfSafety(double betaCrossGekb, double betaCrossAllowed) + { + return betaCrossGekb/betaCrossAllowed; + } + + #endregion + } +} \ No newline at end of file Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/Ringtoets.GrassCoverErosionInwards.Service.csproj =================================================================== diff -u -r1a6060cc0ba5e1ff43abf596b4b956942e76a978 -ra053684de9667dfb70aa8cf669e22843c2bd39ed --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/Ringtoets.GrassCoverErosionInwards.Service.csproj (.../Ringtoets.GrassCoverErosionInwards.Service.csproj) (revision 1a6060cc0ba5e1ff43abf596b4b956942e76a978) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Service/Ringtoets.GrassCoverErosionInwards.Service.csproj (.../Ringtoets.GrassCoverErosionInwards.Service.csproj) (revision a053684de9667dfb70aa8cf669e22843c2bd39ed) @@ -32,8 +32,13 @@ AllRules.ruleset + + ..\..\..\..\packages\MathNet.Numerics.3.8.0\lib\net40\MathNet.Numerics.dll + True + + @@ -44,18 +49,35 @@ Properties\GlobalAssembly.cs + Copying.licenseheader + + + {3bbfd65b-b277-4e50-ae6d-bd24c3434609} + Core.Common.Base + False + {c90b77da-e421-43cc-b82e-529651bc21ac} Core.Common.Version + + {d4200f43-3f72-4f42-af0a-8ced416a38ec} + Ringtoets.Common.Data + False + + + {90DE728E-48EF-4665-AB38-3D88E41D9F4D} + Ringtoets.GrassCoverErosionInwards.Data + False + + + + \ No newline at end of file Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Data.Test/GrassCoverErosionInwardsCalculationTest.cs =================================================================== diff -u -r4539b4546747c257739b1695b9ebc9c29e393ffe -ra053684de9667dfb70aa8cf669e22843c2bd39ed --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Data.Test/GrassCoverErosionInwardsCalculationTest.cs (.../GrassCoverErosionInwardsCalculationTest.cs) (revision 4539b4546747c257739b1695b9ebc9c29e393ffe) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Data.Test/GrassCoverErosionInwardsCalculationTest.cs (.../GrassCoverErosionInwardsCalculationTest.cs) (revision a053684de9667dfb70aa8cf669e22843c2bd39ed) @@ -35,21 +35,40 @@ [Test] public void Constructor_NullGeneralInput_ThrowsArgumentNullException() { - // Setup & Call - TestDelegate test = () => new GrassCoverErosionInwardsCalculation(null); + // Setup + var normProbabilityInput = new NormProbabilityGrassCoverErosionInwardsInput(); + // Call + TestDelegate test = () => new GrassCoverErosionInwardsCalculation(null, normProbabilityInput); + // Assert - Assert.Throws(test); + var exception = Assert.Throws(test); + Assert.AreEqual("generalInputParameters", exception.ParamName); } [Test] + public void Constructor_NullNormProbabilityGrassCoverErosionInwardsInput_ThrowsArgumentNullException() + { + // Setup + var generalInput = new GeneralGrassCoverErosionInwardsInput(); + + // Call + TestDelegate test = () => new GrassCoverErosionInwardsCalculation(generalInput, null); + + // Assert + var exception = Assert.Throws(test); + Assert.AreEqual("normProbabilityInput", exception.ParamName); + } + + [Test] public void Constructor_DefaultPropertyValuesAreSet() { // Setup var generalInput = new GeneralGrassCoverErosionInwardsInput(); + var normProbabilityInput = new NormProbabilityGrassCoverErosionInwardsInput(); // Call - var calculation = new GrassCoverErosionInwardsCalculation(generalInput); + var calculation = new GrassCoverErosionInwardsCalculation(generalInput, normProbabilityInput); // Assert Assert.IsInstanceOf(calculation); @@ -60,6 +79,7 @@ Assert.IsNull(calculation.Comments); Assert.IsNull(calculation.Output); Assert.IsInstanceOf(calculation); + Assert.AreEqual(normProbabilityInput, calculation.NormProbabilityInput); AssertDemoInput(calculation.InputParameters); } @@ -71,7 +91,8 @@ { // Setup var generalInput = new GeneralGrassCoverErosionInwardsInput(); - var calculation = new GrassCoverErosionInwardsCalculation(generalInput); + var normProbabilityInput = new NormProbabilityGrassCoverErosionInwardsInput(); + var calculation = new GrassCoverErosionInwardsCalculation(generalInput, normProbabilityInput); // Call calculation.Name = name; @@ -88,7 +109,8 @@ { // Setup var generalInput = new GeneralGrassCoverErosionInwardsInput(); - var calculation = new GrassCoverErosionInwardsCalculation(generalInput); + var normProbabilityInput = new NormProbabilityGrassCoverErosionInwardsInput(); + var calculation = new GrassCoverErosionInwardsCalculation(generalInput, normProbabilityInput); // Call calculation.Comments = comments; @@ -102,7 +124,8 @@ { // Setup var generalInput = new GeneralGrassCoverErosionInwardsInput(); - var calculation = new GrassCoverErosionInwardsCalculation(generalInput) + var normProbabilityInput = new NormProbabilityGrassCoverErosionInwardsInput(); + var calculation = new GrassCoverErosionInwardsCalculation(generalInput, normProbabilityInput) { Output = new TestGrassCoverErosionInwardsOutput() }; @@ -119,7 +142,8 @@ { // Setup var generalInput = new GeneralGrassCoverErosionInwardsInput(); - var calculation = new GrassCoverErosionInwardsCalculation(generalInput) + var normProbabilityInput = new NormProbabilityGrassCoverErosionInwardsInput(); + var calculation = new GrassCoverErosionInwardsCalculation(generalInput, normProbabilityInput) { Output = null }; @@ -133,7 +157,8 @@ { // Setup var generalInput = new GeneralGrassCoverErosionInwardsInput(); - var calculation = new GrassCoverErosionInwardsCalculation(generalInput) + var normProbabilityInput = new NormProbabilityGrassCoverErosionInwardsInput(); + var calculation = new GrassCoverErosionInwardsCalculation(generalInput, normProbabilityInput) { Output = new TestGrassCoverErosionInwardsOutput() }; @@ -147,7 +172,8 @@ { // Setup var generalInput = new GeneralGrassCoverErosionInwardsInput(); - var calculation = new GrassCoverErosionInwardsCalculation(generalInput); + var normProbabilityInput = new NormProbabilityGrassCoverErosionInwardsInput(); + var calculation = new GrassCoverErosionInwardsCalculation(generalInput, normProbabilityInput); var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, "test", 1.0, 2.0); calculation.InputParameters.HydraulicBoundaryLocation = hydraulicBoundaryLocation; @@ -166,7 +192,8 @@ { // Setup var generalInput = new GeneralGrassCoverErosionInwardsInput(); - var calculation = new GrassCoverErosionInwardsCalculation(generalInput); + var normProbabilityInput = new NormProbabilityGrassCoverErosionInwardsInput(); + var calculation = new GrassCoverErosionInwardsCalculation(generalInput, normProbabilityInput); var inputParameters = calculation.InputParameters; // Call @@ -181,7 +208,9 @@ { // Setup var output = new GrassCoverErosionInwardsOutput(2.0, 3.0, 1.4, 50.3, 16.3); - var calculation = new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput()) + var generalInput = new GeneralGrassCoverErosionInwardsInput(); + var normProbabilityInput = new NormProbabilityGrassCoverErosionInwardsInput(); + var calculation = new GrassCoverErosionInwardsCalculation(generalInput, normProbabilityInput) { Output = output }; Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Data.TestUtil.Test/GrassCoverErosionInwardsCalculationFactoryTest.cs =================================================================== diff -u -r4539b4546747c257739b1695b9ebc9c29e393ffe -ra053684de9667dfb70aa8cf669e22843c2bd39ed --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Data.TestUtil.Test/GrassCoverErosionInwardsCalculationFactoryTest.cs (.../GrassCoverErosionInwardsCalculationFactoryTest.cs) (revision 4539b4546747c257739b1695b9ebc9c29e393ffe) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Data.TestUtil.Test/GrassCoverErosionInwardsCalculationFactoryTest.cs (.../GrassCoverErosionInwardsCalculationFactoryTest.cs) (revision a053684de9667dfb70aa8cf669e22843c2bd39ed) @@ -38,7 +38,8 @@ var calculation = GrassCoverErosionInwardsCalculationFactory.CreateCalculationWithInvalidData(); // Assert - var emptyCalculation = new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput()); + var emptyCalculation = new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), + new NormProbabilityGrassCoverErosionInwardsInput()); AssertGrassCoverErosionInwardsCalculationAreEqual(emptyCalculation, calculation); } @@ -54,7 +55,8 @@ DesignWaterLevel = (RoundedDouble) 1.0 }; - var validCalculation = new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput()) + var validCalculation = new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), + new NormProbabilityGrassCoverErosionInwardsInput()) { InputParameters = { Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Data.TestUtil/GrassCoverErosionInwardsCalculationFactory.cs =================================================================== diff -u -r4435a35be229b12da5859395985ad38c9c5d4729 -ra053684de9667dfb70aa8cf669e22843c2bd39ed --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Data.TestUtil/GrassCoverErosionInwardsCalculationFactory.cs (.../GrassCoverErosionInwardsCalculationFactory.cs) (revision 4435a35be229b12da5859395985ad38c9c5d4729) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Data.TestUtil/GrassCoverErosionInwardsCalculationFactory.cs (.../GrassCoverErosionInwardsCalculationFactory.cs) (revision a053684de9667dfb70aa8cf669e22843c2bd39ed) @@ -36,7 +36,8 @@ /// A new instance of without data. public static GrassCoverErosionInwardsCalculation CreateCalculationWithInvalidData() { - return new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput()); + return new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), + new NormProbabilityGrassCoverErosionInwardsInput()); } /// @@ -50,7 +51,8 @@ DesignWaterLevel = (RoundedDouble) 1.0 }; - return new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput()) + return new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), + new NormProbabilityGrassCoverErosionInwardsInput()) { InputParameters = { Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/PropertyClasses/GrassCoverErosionInwardsCalculationContextPropertiesTest.cs =================================================================== diff -u -reaa8b3e276e1a0a6a4d0a2f96016879d8d12d394 -ra053684de9667dfb70aa8cf669e22843c2bd39ed --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/PropertyClasses/GrassCoverErosionInwardsCalculationContextPropertiesTest.cs (.../GrassCoverErosionInwardsCalculationContextPropertiesTest.cs) (revision eaa8b3e276e1a0a6a4d0a2f96016879d8d12d394) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/PropertyClasses/GrassCoverErosionInwardsCalculationContextPropertiesTest.cs (.../GrassCoverErosionInwardsCalculationContextPropertiesTest.cs) (revision a053684de9667dfb70aa8cf669e22843c2bd39ed) @@ -81,9 +81,10 @@ var assessmentSectionMock = mockRepository.StrictMock(); var failureMechanismMock = mockRepository.StrictMock(); var generalInput = new GeneralGrassCoverErosionInwardsInput(); + var normProbabilityInput = new NormProbabilityGrassCoverErosionInwardsInput(); mockRepository.ReplayAll(); - var calculation = new GrassCoverErosionInwardsCalculation(generalInput); + var calculation = new GrassCoverErosionInwardsCalculation(generalInput, normProbabilityInput); calculation.Attach(observerMock); var properties = new GrassCoverErosionInwardsCalculationContextProperties { Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationContextTreeNodeInfoTest.cs =================================================================== diff -u -rde6ffafc792b3f154436127cca3ccd922776df09 -ra053684de9667dfb70aa8cf669e22843c2bd39ed --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationContextTreeNodeInfoTest.cs (.../GrassCoverErosionInwardsCalculationContextTreeNodeInfoTest.cs) (revision de6ffafc792b3f154436127cca3ccd922776df09) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationContextTreeNodeInfoTest.cs (.../GrassCoverErosionInwardsCalculationContextTreeNodeInfoTest.cs) (revision a053684de9667dfb70aa8cf669e22843c2bd39ed) @@ -96,7 +96,7 @@ var assessmentSectionMock = mocks.StrictMock(); mocks.ReplayAll(); - var calculation = new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput()); + var calculation = new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), new NormProbabilityGrassCoverErosionInwardsInput()); var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); var calculationContext = new GrassCoverErosionInwardsCalculationContext(calculation, failureMechanism, assessmentSectionMock); @@ -142,7 +142,8 @@ var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); var assessmentSectionMock = mocks.StrictMock(); - var calculation = new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput()); + var calculation = new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), + new NormProbabilityGrassCoverErosionInwardsInput()); var nodeData = new GrassCoverErosionInwardsCalculationContext(calculation, failureMechanism, assessmentSectionMock); @@ -166,7 +167,8 @@ var treeViewControlMock = mocks.StrictMock(); var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); var assessmentSectionMock = mocks.StrictMock(); - var calculation = new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput()); + var calculation = new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), + new NormProbabilityGrassCoverErosionInwardsInput()); var nodeData = new GrassCoverErosionInwardsCalculationContext(calculation, failureMechanism, assessmentSectionMock); var gui = mocks.StrictMock(); @@ -205,7 +207,8 @@ var assessmentSectionMock = mocks.StrictMock(); assessmentSectionMock.Expect(asm => asm.HydraulicBoundaryDatabase).Return(null); - var calculation = new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput()); + var calculation = new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), + new NormProbabilityGrassCoverErosionInwardsInput()); var nodeData = new GrassCoverErosionInwardsCalculationContext(calculation, failureMechanism, assessmentSectionMock); @@ -244,7 +247,8 @@ var assessmentSectionMock = mocks.StrictMock(); assessmentSectionMock.Stub(asm => asm.HydraulicBoundaryDatabase).Return(new HydraulicBoundaryDatabase()); - var calculation = new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput()); + var calculation = new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), + new NormProbabilityGrassCoverErosionInwardsInput()); var nodeData = new GrassCoverErosionInwardsCalculationContext(calculation, failureMechanism, assessmentSectionMock); @@ -292,7 +296,8 @@ var assessmentSectionMock = mocks.StrictMock(); assessmentSectionMock.Stub(asm => asm.HydraulicBoundaryDatabase).Return(hydraulicBoundaryDatabase); - var calculation = new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput()); + var calculation = new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), + new NormProbabilityGrassCoverErosionInwardsInput()); var nodeData = new GrassCoverErosionInwardsCalculationContext(calculation, failureMechanism, assessmentSectionMock); @@ -345,7 +350,8 @@ var assessmentSectionMock = mocks.StrictMock(); assessmentSectionMock.Stub(asm => asm.HydraulicBoundaryDatabase).Return(hydraulicBoundaryDatabase); - var calculation = new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput()) + var calculation = new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), + new NormProbabilityGrassCoverErosionInwardsInput()) { Output = new GrassCoverErosionInwardsOutput(double.NaN, double.NaN, double.NaN, double.NaN, double.NaN), InputParameters = @@ -397,11 +403,13 @@ var observer = mocks.StrictMock(); observer.Expect(o => o.UpdateObserver()); - var elementToBeRemoved = new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput()); + var elementToBeRemoved = new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), + new NormProbabilityGrassCoverErosionInwardsInput()); var group = new CalculationGroup("", groupNameEditable); group.Children.Add(elementToBeRemoved); - group.Children.Add(new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput())); + group.Children.Add(new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), + new NormProbabilityGrassCoverErosionInwardsInput())); group.Attach(observer); var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs =================================================================== diff -u -rba695b5898e5496e3641f5e676a7717993b04358 -ra053684de9667dfb70aa8cf669e22843c2bd39ed --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs (.../GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs) (revision ba695b5898e5496e3641f5e676a7717993b04358) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs (.../GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs) (revision a053684de9667dfb70aa8cf669e22843c2bd39ed) @@ -112,7 +112,7 @@ var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); var group = new CalculationGroup(); var childGroup = new CalculationGroup(); - var childCalculation = new GrassCoverErosionInwardsCalculation(failureMechanism.GeneralInput); + var childCalculation = new GrassCoverErosionInwardsCalculation(failureMechanism.GeneralInput, failureMechanism.NormProbabilityInput); group.Children.Add(childGroup); group.Children.Add(calculationItem); @@ -253,7 +253,7 @@ { Children = { - new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput()) + new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), new NormProbabilityGrassCoverErosionInwardsInput()) } }; @@ -294,7 +294,7 @@ { Children = { - new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput()) + new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), new NormProbabilityGrassCoverErosionInwardsInput()) } }; @@ -304,7 +304,7 @@ new Point2D(0, 0) })); failureMechanism.CalculationsGroup.Children.Add( - new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput())); + new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), new NormProbabilityGrassCoverErosionInwardsInput())); var assessmentSectionMock = mocks.StrictMock(); assessmentSectionMock.Stub(asm => asm.HydraulicBoundaryDatabase).Return(null); @@ -347,7 +347,7 @@ { Children = { - new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput()) + new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), new NormProbabilityGrassCoverErosionInwardsInput()) } }; @@ -357,7 +357,7 @@ new Point2D(0, 0) })); failureMechanism.CalculationsGroup.Children.Add( - new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput())); + new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), new NormProbabilityGrassCoverErosionInwardsInput())); var assessmentSectionMock = mocks.StrictMock(); assessmentSectionMock.Stub(asm => asm.HydraulicBoundaryDatabase).Return(new HydraulicBoundaryDatabase()); @@ -401,7 +401,7 @@ { Children = { - new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput()) + new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), new NormProbabilityGrassCoverErosionInwardsInput()) } }; @@ -419,7 +419,7 @@ new Point2D(0, 0) })); failureMechanism.CalculationsGroup.Children.Add( - new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput())); + new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), new NormProbabilityGrassCoverErosionInwardsInput())); var assessmentSectionMock = mocks.StrictMock(); assessmentSectionMock.Stub(asm => asm.HydraulicBoundaryDatabase).Return(hydraulicBoundaryDatabase); @@ -673,7 +673,7 @@ failureMechanism, assessmentSectionMock); - var calculationItem = new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput()) + var calculationItem = new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), new NormProbabilityGrassCoverErosionInwardsInput()) { Name = "Nieuwe berekening" }; @@ -751,7 +751,7 @@ var group = new CalculationGroup(); var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); - var calculation = new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput()); + var calculation = new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), new NormProbabilityGrassCoverErosionInwardsInput()); group.Children.Add(calculation); Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/TreeNodeInfos/GrassCoverErosionInwardsFailureMechanismContextTreeNodeInfoTest.cs =================================================================== diff -u -rde6ffafc792b3f154436127cca3ccd922776df09 -ra053684de9667dfb70aa8cf669e22843c2bd39ed --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/TreeNodeInfos/GrassCoverErosionInwardsFailureMechanismContextTreeNodeInfoTest.cs (.../GrassCoverErosionInwardsFailureMechanismContextTreeNodeInfoTest.cs) (revision de6ffafc792b3f154436127cca3ccd922776df09) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/TreeNodeInfos/GrassCoverErosionInwardsFailureMechanismContextTreeNodeInfoTest.cs (.../GrassCoverErosionInwardsFailureMechanismContextTreeNodeInfoTest.cs) (revision a053684de9667dfb70aa8cf669e22843c2bd39ed) @@ -427,7 +427,8 @@ // Setup var gui = mocksRepository.StrictMock(); var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); - failureMechanism.CalculationsGroup.Children.Add(new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput())); + failureMechanism.CalculationsGroup.Children.Add(new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), + new NormProbabilityGrassCoverErosionInwardsInput())); var assessmentSectionMock = mocksRepository.StrictMock(); var nodeData = new GrassCoverErosionInwardsFailureMechanismContext(failureMechanism, assessmentSectionMock); @@ -465,7 +466,8 @@ var gui = mocksRepository.StrictMock(); var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); failureMechanism.AddSection(new FailureMechanismSection("test", new[] { new Point2D(0, 0) })); - failureMechanism.CalculationsGroup.Children.Add(new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput())); + failureMechanism.CalculationsGroup.Children.Add(new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), + new NormProbabilityGrassCoverErosionInwardsInput())); var assessmentSectionMock = mocksRepository.StrictMock(); assessmentSectionMock.Expect(asm => asm.HydraulicBoundaryDatabase).Return(null); @@ -506,7 +508,8 @@ var gui = mocksRepository.StrictMock(); var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); failureMechanism.AddSection(new FailureMechanismSection("test", new[] { new Point2D(0, 0) })); - failureMechanism.CalculationsGroup.Children.Add(new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput())); + failureMechanism.CalculationsGroup.Children.Add(new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), + new NormProbabilityGrassCoverErosionInwardsInput())); var assessmentSectionMock = mocksRepository.StrictMock(); assessmentSectionMock.Stub(asm => asm.HydraulicBoundaryDatabase).Return(new HydraulicBoundaryDatabase()); @@ -548,7 +551,8 @@ var gui = mocksRepository.StrictMock(); var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); failureMechanism.AddSection(new FailureMechanismSection("test", new[] { new Point2D(0, 0) })); - failureMechanism.CalculationsGroup.Children.Add(new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput())); + failureMechanism.CalculationsGroup.Children.Add(new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), + new NormProbabilityGrassCoverErosionInwardsInput())); string validFilePath = Path.Combine(testDataPath, "complete.sqlite"); Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Service.Test/GrassCoverErosionInwardsOutputCalculationServiceTest.cs =================================================================== diff -u --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Service.Test/GrassCoverErosionInwardsOutputCalculationServiceTest.cs (revision 0) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Service.Test/GrassCoverErosionInwardsOutputCalculationServiceTest.cs (revision a053684de9667dfb70aa8cf669e22843c2bd39ed) @@ -0,0 +1,48 @@ +// 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.Base.Data; +using NUnit.Framework; +using Ringtoets.GrassCoverErosionInwards.Data; + +namespace Ringtoets.GrassCoverErosionInwards.Service.Test +{ + [TestFixture] + public class GrassCoverErosionInwardsOutputCalculationServiceTest + { + [Test] + public void Calculate_CompleteInput_ReturnsGrassCoverErosionInwardsOutputWithValues() + { + // Setup + var norm = 30000; + var probability = 0.24; + var calculation = new GrassCoverErosionInwardsCalculation(new GeneralGrassCoverErosionInwardsInput(), + new NormProbabilityGrassCoverErosionInwardsInput()); + + // Call + GrassCoverErosionInwardsOutputCalculationService.Calculate(calculation, norm, probability); + + // Assert + RoundedDouble result = calculation.Output.FactorOfSafety; + Assert.AreEqual(0.919890363, result, 1e-2); + } + } +} \ No newline at end of file Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Service.Test/Ringtoets.GrassCoverErosionInwards.Service.Test.csproj =================================================================== diff -u -r07efb7c80815d1747386437cf8dcd6db25b9160a -ra053684de9667dfb70aa8cf669e22843c2bd39ed --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Service.Test/Ringtoets.GrassCoverErosionInwards.Service.Test.csproj (.../Ringtoets.GrassCoverErosionInwards.Service.Test.csproj) (revision 07efb7c80815d1747386437cf8dcd6db25b9160a) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Service.Test/Ringtoets.GrassCoverErosionInwards.Service.Test.csproj (.../Ringtoets.GrassCoverErosionInwards.Service.Test.csproj) (revision a053684de9667dfb70aa8cf669e22843c2bd39ed) @@ -54,6 +54,7 @@ + @@ -62,6 +63,24 @@ + + + {3bbfd65b-b277-4e50-ae6d-bd24c3434609} + Core.Common.Base + + + {d4200f43-3f72-4f42-af0a-8ced416a38ec} + Ringtoets.Common.Data + + + {90DE728E-48EF-4665-AB38-3D88E41D9F4D} + Ringtoets.GrassCoverErosionInwards.Data + + + {2852E99B-AADB-4CBA-B6D2-6882D6113AA3} + Ringtoets.GrassCoverErosionInwards.Service + +