Index: Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsCalculation.cs =================================================================== diff -u -ra4e3b2745a48598260107bb5bfca7485205cdcc2 -r4cb44d36bec6a6f1b4c1c2ff2db086b9996a2b42 --- Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsCalculation.cs (.../GrassCoverErosionInwardsCalculation.cs) (revision a4e3b2745a48598260107bb5bfca7485205cdcc2) +++ Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsCalculation.cs (.../GrassCoverErosionInwardsCalculation.cs) (revision 4cb44d36bec6a6f1b4c1c2ff2db086b9996a2b42) @@ -34,10 +34,11 @@ /// /// Creates a new instance of . /// - public GrassCoverErosionInwardsCalculation() + /// The norm to use in the calculation input. + public GrassCoverErosionInwardsCalculation(double norm) { Name = RiskeerCommonDataResources.Calculation_DefaultName; - InputParameters = new GrassCoverErosionInwardsInput(); + InputParameters = new GrassCoverErosionInwardsInput(norm); Comments = new Comment(); } Index: Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsCalculationScenario.cs =================================================================== diff -u -ra4e3b2745a48598260107bb5bfca7485205cdcc2 -r4cb44d36bec6a6f1b4c1c2ff2db086b9996a2b42 --- Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsCalculationScenario.cs (.../GrassCoverErosionInwardsCalculationScenario.cs) (revision a4e3b2745a48598260107bb5bfca7485205cdcc2) +++ Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsCalculationScenario.cs (.../GrassCoverErosionInwardsCalculationScenario.cs) (revision 4cb44d36bec6a6f1b4c1c2ff2db086b9996a2b42) @@ -35,7 +35,9 @@ /// /// Creates a new instance of . /// - public GrassCoverErosionInwardsCalculationScenario() + /// The norm to use in the calculation input. + public GrassCoverErosionInwardsCalculationScenario(double norm) + : base(norm) { IsRelevant = true; contribution = new RoundedDouble(CalculationScenarioHelper.ContributionNumberOfDecimalPlaces, 1); Index: Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsInput.cs =================================================================== diff -u -r0fb4d7721a6fd350aeee563c018c429cb0eb23ee -r4cb44d36bec6a6f1b4c1c2ff2db086b9996a2b42 --- Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsInput.cs (.../GrassCoverErosionInwardsInput.cs) (revision 0fb4d7721a6fd350aeee563c018c429cb0eb23ee) +++ Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Data/GrassCoverErosionInwardsInput.cs (.../GrassCoverErosionInwardsInput.cs) (revision 4cb44d36bec6a6f1b4c1c2ff2db086b9996a2b42) @@ -51,7 +51,8 @@ /// /// Creates a new instance of . /// - public GrassCoverErosionInwardsInput() + /// The norm to use. + public GrassCoverErosionInwardsInput(double norm) { orientation = new RoundedDouble(orientationNumberOfDecimals); dikeHeight = new RoundedDouble(2); @@ -65,6 +66,9 @@ }; DikeHeightCalculationType = DikeHeightCalculationType.NoCalculation; OvertoppingRateCalculationType = OvertoppingRateCalculationType.NoCalculation; + + DikeHeightReliabilityIndex = norm; + OvertoppingRateReliabilityIndex = norm; } /// Index: Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsPlugin.cs =================================================================== diff -u -r2503894f449e6a2d24fe0cf15ff1d8a6cd831a3c -r4cb44d36bec6a6f1b4c1c2ff2db086b9996a2b42 --- Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsPlugin.cs (.../GrassCoverErosionInwardsPlugin.cs) (revision 2503894f449e6a2d24fe0cf15ff1d8a6cd831a3c) +++ Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsPlugin.cs (.../GrassCoverErosionInwardsPlugin.cs) (revision 4cb44d36bec6a6f1b4c1c2ff2db086b9996a2b42) @@ -817,7 +817,7 @@ private static void AddCalculation(GrassCoverErosionInwardsCalculationGroupContext context) { - var calculation = new GrassCoverErosionInwardsCalculationScenario + var calculation = new GrassCoverErosionInwardsCalculationScenario(context.AssessmentSection.FailureMechanismContribution.Norm) { Name = NamingHelper.GetUniqueName(context.WrappedData.Children, RiskeerCommonDataResources.Calculation_DefaultName, c => c.Name) }; Index: Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Data.Test/GrassCoverErosionInwardsCalculationScenarioTest.cs =================================================================== diff -u -ra4e3b2745a48598260107bb5bfca7485205cdcc2 -r4cb44d36bec6a6f1b4c1c2ff2db086b9996a2b42 --- Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Data.Test/GrassCoverErosionInwardsCalculationScenarioTest.cs (.../GrassCoverErosionInwardsCalculationScenarioTest.cs) (revision a4e3b2745a48598260107bb5bfca7485205cdcc2) +++ Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Data.Test/GrassCoverErosionInwardsCalculationScenarioTest.cs (.../GrassCoverErosionInwardsCalculationScenarioTest.cs) (revision 4cb44d36bec6a6f1b4c1c2ff2db086b9996a2b42) @@ -37,7 +37,7 @@ public void Constructor_ExpectedValues() { // Call - var scenario = new GrassCoverErosionInwardsCalculationScenario(); + var scenario = new GrassCoverErosionInwardsCalculationScenario(double.NaN); // Assert Assert.IsInstanceOf(scenario); @@ -53,7 +53,7 @@ public void Contribution_SetInvalidValue_ThrowArgumentException(double newValue) { // Setup - var calculationScenario = new GrassCoverErosionInwardsCalculationScenario(); + var calculationScenario = new GrassCoverErosionInwardsCalculationScenario(double.NaN); // Call void Call() => calculationScenario.Contribution = (RoundedDouble) newValue; @@ -68,7 +68,7 @@ public void Contribution_SetValidValue_ValueSet(double newValue) { // Setup - var calculationScenario = new GrassCoverErosionInwardsCalculationScenario(); + var calculationScenario = new GrassCoverErosionInwardsCalculationScenario(double.NaN); // Call calculationScenario.Contribution = (RoundedDouble) newValue; @@ -109,7 +109,7 @@ { var random = new Random(21); - var calculation = new GrassCoverErosionInwardsCalculationScenario + var calculation = new GrassCoverErosionInwardsCalculationScenario(double.NaN) { Name = "A Name", Comments = Index: Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Data.Test/GrassCoverErosionInwardsCalculationTest.cs =================================================================== diff -u -ra4e3b2745a48598260107bb5bfca7485205cdcc2 -r4cb44d36bec6a6f1b4c1c2ff2db086b9996a2b42 --- Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Data.Test/GrassCoverErosionInwardsCalculationTest.cs (.../GrassCoverErosionInwardsCalculationTest.cs) (revision a4e3b2745a48598260107bb5bfca7485205cdcc2) +++ Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Data.Test/GrassCoverErosionInwardsCalculationTest.cs (.../GrassCoverErosionInwardsCalculationTest.cs) (revision 4cb44d36bec6a6f1b4c1c2ff2db086b9996a2b42) @@ -19,6 +19,7 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; using System.Collections.Generic; using Core.Common.Base; using Core.Common.Data.TestUtil; @@ -33,10 +34,13 @@ public class GrassCoverErosionInwardsCalculationTest { [Test] - public void Constructor_DefaultPropertyValuesAreSet() + public void Constructor_ExpectedValues() { + // Setup + double norm = new Random(21).NextDouble(); + // Call - var calculation = new GrassCoverErosionInwardsCalculation(); + var calculation = new GrassCoverErosionInwardsCalculation(norm); // Assert Assert.IsInstanceOf>(calculation); @@ -47,6 +51,8 @@ Assert.IsNull(calculation.Comments.Body); Assert.IsNull(calculation.Output); Assert.IsNull(calculation.InputParameters.DikeProfile); + Assert.AreEqual(norm, calculation.InputParameters.DikeHeightReliabilityIndex); + Assert.AreEqual(norm, calculation.InputParameters.OvertoppingRateReliabilityIndex); } [Test] @@ -56,7 +62,7 @@ public void Properties_Name_ReturnsExpectedValues(string name) { // Setup - var calculation = new GrassCoverErosionInwardsCalculation(); + var calculation = new GrassCoverErosionInwardsCalculation(double.NaN); // Call calculation.Name = name; @@ -72,7 +78,7 @@ public void Property_Comments_ReturnsExpectedValues(string comments) { // Setup - var calculation = new GrassCoverErosionInwardsCalculation(); + var calculation = new GrassCoverErosionInwardsCalculation(double.NaN); // Call calculation.Comments.Body = comments; @@ -85,7 +91,7 @@ public void ClearOutput_Always_SetsOutputToNull() { // Setup - var calculation = new GrassCoverErosionInwardsCalculation + var calculation = new GrassCoverErosionInwardsCalculation(double.NaN) { Output = new TestGrassCoverErosionInwardsOutput() }; @@ -101,7 +107,7 @@ public void HasOutput_OutputNull_ReturnsFalse() { // Setup - var calculation = new GrassCoverErosionInwardsCalculation + var calculation = new GrassCoverErosionInwardsCalculation(double.NaN) { Output = null }; @@ -117,7 +123,7 @@ public void HasOutput_OutputSet_ReturnsTrue() { // Setup - var calculation = new GrassCoverErosionInwardsCalculation + var calculation = new GrassCoverErosionInwardsCalculation(double.NaN) { Output = new TestGrassCoverErosionInwardsOutput() }; @@ -177,7 +183,7 @@ new TestDikeHeightOutput(new TestGeneralResultFaultTreeIllustrationPoint()), new TestOvertoppingRateOutput(new TestGeneralResultFaultTreeIllustrationPoint())); - var calculation = new GrassCoverErosionInwardsCalculation + var calculation = new GrassCoverErosionInwardsCalculation(double.NaN) { Output = originalOutput }; @@ -196,18 +202,18 @@ public void ClearIllustrationPoints_CalculationWithoutOutput_DoesNotThrow() { // Setup - var calculation = new GrassCoverErosionInwardsCalculation(); + var calculation = new GrassCoverErosionInwardsCalculation(double.NaN); // Call - TestDelegate call = () => calculation.ClearIllustrationPoints(); + void Call() => calculation.ClearIllustrationPoints(); // Assert - Assert.DoesNotThrow(call); + Assert.DoesNotThrow(Call); } private static GrassCoverErosionInwardsCalculation CreateRandomCalculationWithoutOutput() { - var calculation = new GrassCoverErosionInwardsCalculation + var calculation = new GrassCoverErosionInwardsCalculation(double.NaN) { Comments = { @@ -235,7 +241,7 @@ var overtoppingRateOutputWithoutGeneralResult = new TestOvertoppingRateOutput(1.0); var overtoppingRateOutputWithGeneralResult = new TestOvertoppingRateOutput(new TestGeneralResultFaultTreeIllustrationPoint()); - yield return new TestCaseData(new GrassCoverErosionInwardsCalculation + yield return new TestCaseData(new GrassCoverErosionInwardsCalculation(double.NaN) { InputParameters = { @@ -251,7 +257,7 @@ }, false) .SetName("OutputSufficientScenario1"); - yield return new TestCaseData(new GrassCoverErosionInwardsCalculation + yield return new TestCaseData(new GrassCoverErosionInwardsCalculation(double.NaN) { InputParameters = { @@ -264,18 +270,18 @@ }, false) .SetName("OutputSufficientScenario2"); - yield return new TestCaseData(new GrassCoverErosionInwardsCalculation + yield return new TestCaseData(new GrassCoverErosionInwardsCalculation(double.NaN) { Output = new GrassCoverErosionInwardsOutput(overtoppingOutputWithoutGeneralResult, null, null) }, false) .SetName("OutputSufficientScenario3"); - yield return new TestCaseData(new GrassCoverErosionInwardsCalculation(), true) + yield return new TestCaseData(new GrassCoverErosionInwardsCalculation(double.NaN), true) .SetName("NoOutputScenario1"); - yield return new TestCaseData(new GrassCoverErosionInwardsCalculation + yield return new TestCaseData(new GrassCoverErosionInwardsCalculation(double.NaN) { InputParameters = { @@ -285,7 +291,7 @@ }, true) .SetName("NoOutputScenario2"); - yield return new TestCaseData(new GrassCoverErosionInwardsCalculation + yield return new TestCaseData(new GrassCoverErosionInwardsCalculation(double.NaN) { InputParameters = { @@ -298,15 +304,15 @@ }, true) .SetName("NoOutputScenario3"); - yield return new TestCaseData(new GrassCoverErosionInwardsCalculation + yield return new TestCaseData(new GrassCoverErosionInwardsCalculation(double.NaN) { Output = new GrassCoverErosionInwardsOutput(overtoppingOutputWithGeneralResult, null, null) }, true) .SetName("OvertoppingOutputWithRedundantGeneralResult"); - yield return new TestCaseData(new GrassCoverErosionInwardsCalculation + yield return new TestCaseData(new GrassCoverErosionInwardsCalculation(double.NaN) { InputParameters = { @@ -318,7 +324,7 @@ }, true) .SetName("OvertoppingOutputWithMissingGeneralResult"); - yield return new TestCaseData(new GrassCoverErosionInwardsCalculation + yield return new TestCaseData(new GrassCoverErosionInwardsCalculation(double.NaN) { InputParameters = { @@ -330,7 +336,7 @@ }, true) .SetName("DikeHeightOutputWithRedundantGeneralResult"); - yield return new TestCaseData(new GrassCoverErosionInwardsCalculation + yield return new TestCaseData(new GrassCoverErosionInwardsCalculation(double.NaN) { InputParameters = { @@ -343,7 +349,7 @@ }, true) .SetName("DikeHeightOutputWithMissingGeneralResult"); - yield return new TestCaseData(new GrassCoverErosionInwardsCalculation + yield return new TestCaseData(new GrassCoverErosionInwardsCalculation(double.NaN) { InputParameters = { @@ -355,7 +361,7 @@ }, true) .SetName("OvertoppingRateOutputWithRedundantGeneralResult"); - yield return new TestCaseData(new GrassCoverErosionInwardsCalculation + yield return new TestCaseData(new GrassCoverErosionInwardsCalculation(double.NaN) { InputParameters = { Index: Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Data.Test/GrassCoverErosionInwardsInputTest.cs =================================================================== diff -u -r0fb4d7721a6fd350aeee563c018c429cb0eb23ee -r4cb44d36bec6a6f1b4c1c2ff2db086b9996a2b42 --- Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Data.Test/GrassCoverErosionInwardsInputTest.cs (.../GrassCoverErosionInwardsInputTest.cs) (revision 0fb4d7721a6fd350aeee563c018c429cb0eb23ee) +++ Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Data.Test/GrassCoverErosionInwardsInputTest.cs (.../GrassCoverErosionInwardsInputTest.cs) (revision 4cb44d36bec6a6f1b4c1c2ff2db086b9996a2b42) @@ -132,8 +132,10 @@ StandardDeviation = (RoundedDouble) 0.0006 }; + double norm = new Random(21).NextDouble(); + // Call - var input = new GrassCoverErosionInwardsInput(); + var input = new GrassCoverErosionInwardsInput(norm); // Assert Assert.IsInstanceOf(input); @@ -149,6 +151,10 @@ Assert.IsFalse(input.ShouldDikeHeightBeCalculated); Assert.IsFalse(input.ShouldOvertoppingRateBeCalculated); + + Assert.AreEqual(norm, input.DikeHeightReliabilityIndex); + Assert.AreEqual(norm, input.OvertoppingRateReliabilityIndex); + Assert.AreEqual(DikeHeightCalculationType.NoCalculation, input.DikeHeightCalculationType); Assert.AreEqual(OvertoppingRateCalculationType.NoCalculation, input.OvertoppingRateCalculationType); @@ -161,7 +167,7 @@ // Setup DikeProfile dikeProfile = CreateTestDikeProfile(); - var input = new GrassCoverErosionInwardsInput + var input = new GrassCoverErosionInwardsInput(double.NaN) { DikeProfile = dikeProfile }; @@ -178,7 +184,7 @@ public void DikeProfile_SetNewValue_InputSyncedAccordingly(DikeProfile newDikeProfile) { // Setup - var input = new GrassCoverErosionInwardsInput(); + var input = new GrassCoverErosionInwardsInput(double.NaN); // Call input.DikeProfile = newDikeProfile; @@ -196,7 +202,7 @@ public void Orientation_SetNewValue_ValueIsRounded(double validOrientation) { // Setup - var input = new GrassCoverErosionInwardsInput(); + var input = new GrassCoverErosionInwardsInput(double.NaN); int originalNumberOfDecimalPlaces = input.Orientation.NumberOfDecimalPlaces; @@ -219,20 +225,21 @@ public void Orientation_SetInvalidValue_ThrowsArgumentOutOfRangeException(double invalidOrientation) { // Setup - var input = new GrassCoverErosionInwardsInput(); + var input = new GrassCoverErosionInwardsInput(double.NaN); // Call - TestDelegate call = () => input.Orientation = (RoundedDouble) invalidOrientation; + void Call() => input.Orientation = (RoundedDouble) invalidOrientation; // Assert - TestHelper.AssertThrowsArgumentExceptionAndTestMessage(call, "De waarde voor de oriƫntatie moet in het bereik [0,00, 360,00] liggen."); + const string expectedMessage = "De waarde voor de oriƫntatie moet in het bereik [0,00, 360,00] liggen."; + TestHelper.AssertThrowsArgumentExceptionAndTestMessage(Call, expectedMessage); } [Test] public void DikeHeight_SetNewValue_ValueIsRounded() { // Setup - var input = new GrassCoverErosionInwardsInput(); + var input = new GrassCoverErosionInwardsInput(double.NaN); int originalNumberOfDecimalPlaces = input.DikeHeight.NumberOfDecimalPlaces; @@ -249,7 +256,7 @@ { // Setup var random = new Random(22); - var input = new GrassCoverErosionInwardsInput(); + var input = new GrassCoverErosionInwardsInput(double.NaN); RoundedDouble mean = random.NextRoundedDouble(0.01, double.MaxValue); RoundedDouble standardDeviation = random.NextRoundedDouble(0.01, double.MaxValue); var expectedDistribution = new LogNormalDistribution(4) @@ -276,7 +283,7 @@ public void IsDikeProfileInputSynchronized_DikeProfileNotSet_ReturnFalse() { // Setup - var input = new GrassCoverErosionInwardsInput(); + var input = new GrassCoverErosionInwardsInput(double.NaN); // Call bool synchronized = input.IsDikeProfileInputSynchronized; @@ -289,7 +296,7 @@ public void IsDikeProfileInputSynchronized_InputParametersAndDikeProfileInSync_ReturnTrue() { // Setup - var input = new GrassCoverErosionInwardsInput + var input = new GrassCoverErosionInwardsInput(double.NaN) { DikeProfile = DikeProfileTestFactory.CreateDikeProfile(new[] { @@ -312,7 +319,7 @@ // Setup DikeProfile dikeProfile = CreateTestDikeProfile(); - var input = new GrassCoverErosionInwardsInput + var input = new GrassCoverErosionInwardsInput(double.NaN) { DikeProfile = dikeProfile }; @@ -330,7 +337,7 @@ public void SynchronizeDikeProfileInput_DikeProfileNotSet_ExpectedValues() { // Setup - var input = new GrassCoverErosionInwardsInput(); + var input = new GrassCoverErosionInwardsInput(double.NaN); // Call input.SynchronizeDikeProfileInput(); @@ -346,7 +353,7 @@ // Setup DikeProfile dikeProfile = CreateTestDikeProfile(); - var input = new GrassCoverErosionInwardsInput + var input = new GrassCoverErosionInwardsInput(double.NaN) { DikeProfile = dikeProfile }; @@ -364,7 +371,7 @@ public void Clone_AllPropertiesSet_ReturnNewInstanceWithCopiedValues() { // Setup - var original = new GrassCoverErosionInwardsInput(); + var original = new GrassCoverErosionInwardsInput(double.NaN); GrassCoverErosionInwardsTestDataGenerator.SetRandomDataToGrassCoverErosionInwardsInput(original); @@ -379,7 +386,7 @@ public void Clone_NotAllPropertiesSet_ReturnNewInstanceWithCopiedValues() { // Setup - var original = new GrassCoverErosionInwardsInput(); + var original = new GrassCoverErosionInwardsInput(double.NaN); GrassCoverErosionInwardsTestDataGenerator.SetRandomDataToGrassCoverErosionInwardsInput(original); @@ -395,7 +402,7 @@ private static void AssertDikeProfileInput(DikeProfile expectedDikeProfile, GrassCoverErosionInwardsInput input) { - var defaultInput = new GrassCoverErosionInwardsInput(); + var defaultInput = new GrassCoverErosionInwardsInput(double.NaN); if (expectedDikeProfile == null) {