Index: Ringtoets/Common/src/Ringtoets.Common.Data/Contribution/FailureMechanismContribution.cs =================================================================== diff -u -rb726f712c5614827e9bfa8041ee40071e02be3b9 -r7a9c98886fd29efbea53f5be1b0be96c70ffa106 --- Ringtoets/Common/src/Ringtoets.Common.Data/Contribution/FailureMechanismContribution.cs (.../FailureMechanismContribution.cs) (revision b726f712c5614827e9bfa8041ee40071e02be3b9) +++ Ringtoets/Common/src/Ringtoets.Common.Data/Contribution/FailureMechanismContribution.cs (.../FailureMechanismContribution.cs) (revision 7a9c98886fd29efbea53f5be1b0be96c70ffa106) @@ -21,7 +21,9 @@ using System; using System.Collections.Generic; +using System.Globalization; using Core.Common.Base; +using Core.Common.Base.Data; using Core.Common.Utils.Extensions; using Ringtoets.Common.Data.FailureMechanism; using Ringtoets.Common.Data.Probability; @@ -34,6 +36,8 @@ /// public class FailureMechanismContribution : Observable { + private static readonly Range normValidityRange = new Range(1.0 / 1000000, 1.0 / 10); + private const double defaultNorm = 1.0 / 30000; private readonly ICollection distribution = new List(); @@ -80,7 +84,7 @@ /// Gets or sets the norm which has been defined on the assessment section. /// /// Thrown when the new value is not in - /// the interval [0.0, 1.0] or is . + /// the interval [0.000001, 0.1] or is . public double Norm { get @@ -89,7 +93,12 @@ } set { - ProbabilityHelper.ValidateProbability(value, nameof(value)); + if (!normValidityRange.InRange(value)) + { + string message = string.Format(Resources.Probability_Must_be_in_Range_0_, + normValidityRange.ToString(FormattableConstants.ShowAtLeastOneDecimal, CultureInfo.CurrentCulture)); + throw new ArgumentOutOfRangeException(nameof(value), message); + } norm = value; distribution.ForEachElementDo(d => d.Norm = norm); Index: Ringtoets/Common/test/Ringtoets.Common.Data.Test/Contribution/FailureMechanismContributionTest.cs =================================================================== diff -u -rb726f712c5614827e9bfa8041ee40071e02be3b9 -r7a9c98886fd29efbea53f5be1b0be96c70ffa106 --- Ringtoets/Common/test/Ringtoets.Common.Data.Test/Contribution/FailureMechanismContributionTest.cs (.../FailureMechanismContributionTest.cs) (revision b726f712c5614827e9bfa8041ee40071e02be3b9) +++ Ringtoets/Common/test/Ringtoets.Common.Data.Test/Contribution/FailureMechanismContributionTest.cs (.../FailureMechanismContributionTest.cs) (revision 7a9c98886fd29efbea53f5be1b0be96c70ffa106) @@ -314,9 +314,13 @@ } [Test] + [TestCase(double.MaxValue)] + [TestCase(double.MinValue)] + [TestCase(0.1 + 1e-6)] + [TestCase(0.000001 - 1e-6)] + [TestCase(double.NaN)] [SetCulture("nl-NL")] - public void Norm_InvalidNewNorm_ThrowsArgumentOutOfRangeException( - [Values(150, 1 + 1e-6, -1e-6, -150, double.NaN)] double newNorm) + public void Norm_InvalidNewNorm_ThrowsArgumentOutOfRangeException(double newNorm) { // Setup var random = new Random(21); @@ -327,17 +331,19 @@ TestDelegate test = () => failureMechanismContribution.Norm = newNorm; // Assert - const string expectedMessage = "Kans moet in het bereik [0,0, 1,0] liggen."; + const string expectedMessage = "Kans moet in het bereik [0,000001, 0,1] liggen."; TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, expectedMessage); } [Test] - public void Norm_WhenUpdated_NormUpdatedForEachFailureMechanismContributionItem() + [TestCase(0.000001)] + [TestCase(0.1)] + [TestCase(1.0 / 30000)] + public void Norm_WhenUpdated_NormUpdatedForEachFailureMechanismContributionItem(double newNorm) { // Setup var random = new Random(21); int otherContribution = random.Next(1, 100); - const double newNorm = 1.0 / 30000; var failureMechanism = mocks.Stub(); Index: Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil.Test/AssessmentSectionHelperTest.cs =================================================================== diff -u -r85fcfb3e47d742a46200fcfb93f7cd4b155b9a94 -r7a9c98886fd29efbea53f5be1b0be96c70ffa106 --- Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil.Test/AssessmentSectionHelperTest.cs (.../AssessmentSectionHelperTest.cs) (revision 85fcfb3e47d742a46200fcfb93f7cd4b155b9a94) +++ Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil.Test/AssessmentSectionHelperTest.cs (.../AssessmentSectionHelperTest.cs) (revision 7a9c98886fd29efbea53f5be1b0be96c70ffa106) @@ -57,7 +57,7 @@ { failureMechanism }, assessmentSection.GetFailureMechanisms()); - Assert.AreEqual(0.5, assessmentSection.FailureMechanismContribution.Norm); + Assert.AreEqual(0.1, assessmentSection.FailureMechanismContribution.Norm); mocks.VerifyAll(); } @@ -88,7 +88,7 @@ { failureMechanism }, assessmentSection.GetFailureMechanisms()); - Assert.AreEqual(0.5, assessmentSection.FailureMechanismContribution.Norm); + Assert.AreEqual(0.1, assessmentSection.FailureMechanismContribution.Norm); mocks.VerifyAll(); } @@ -110,7 +110,7 @@ { failureMechanism }, assessmentSection.GetFailureMechanisms()); - Assert.AreEqual(0.5, assessmentSection.FailureMechanismContribution.Norm); + Assert.AreEqual(0.1, assessmentSection.FailureMechanismContribution.Norm); mocks.VerifyAll(); } @@ -128,7 +128,7 @@ Assert.AreEqual("21", assessmentSection.Id); Assert.IsNull(assessmentSection.HydraulicBoundaryDatabase); CollectionAssert.IsEmpty(assessmentSection.GetFailureMechanisms()); - Assert.AreEqual(0.5, assessmentSection.FailureMechanismContribution.Norm); + Assert.AreEqual(0.1, assessmentSection.FailureMechanismContribution.Norm); mocks.VerifyAll(); } } Index: Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil/AssessmentSectionHelper.cs =================================================================== diff -u -rec01eb901c57e7b7a58878e341e79748de5eb203 -r7a9c98886fd29efbea53f5be1b0be96c70ffa106 --- Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil/AssessmentSectionHelper.cs (.../AssessmentSectionHelper.cs) (revision ec01eb901c57e7b7a58878e341e79748de5eb203) +++ Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil/AssessmentSectionHelper.cs (.../AssessmentSectionHelper.cs) (revision 7a9c98886fd29efbea53f5be1b0be96c70ffa106) @@ -87,7 +87,7 @@ assessmentSection.Stub(a => a.FailureMechanismContribution).Return(new FailureMechanismContribution( failureMechanisms, 1) { - Norm = 0.5 + Norm = 0.1 }); assessmentSection.Stub(a => a.GetFailureMechanisms()).Return(failureMechanisms); Index: Ringtoets/DuneErosion/test/Ringtoets.DuneErosion.Data.Test/DuneErosionFailureMechanismExtensionsTest.cs =================================================================== diff -u -r0b02d2f718cbc5c039f130a0243fe12eb5674a31 -r7a9c98886fd29efbea53f5be1b0be96c70ffa106 --- Ringtoets/DuneErosion/test/Ringtoets.DuneErosion.Data.Test/DuneErosionFailureMechanismExtensionsTest.cs (.../DuneErosionFailureMechanismExtensionsTest.cs) (revision 0b02d2f718cbc5c039f130a0243fe12eb5674a31) +++ Ringtoets/DuneErosion/test/Ringtoets.DuneErosion.Data.Test/DuneErosionFailureMechanismExtensionsTest.cs (.../DuneErosionFailureMechanismExtensionsTest.cs) (revision 7a9c98886fd29efbea53f5be1b0be96c70ffa106) @@ -44,7 +44,7 @@ [Test] [TestCase(0, 0.005, 0)] [TestCase(10, 0.005, 0.0005375)] - [TestCase(10, 0, 0)] + [TestCase(10, 0.01, 0.001075)] public void GetMechanismSpecificNorm_WithValidData_ReturnMechanismSpecificNorm(double contribution, double norm, double expectedNorm) { // Setup Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Integration.Test/GrassCoverErosionInwardsCalculationActivityIntegrationTest.cs =================================================================== diff -u -r1bbf51443c907b5f202e80764fa05f2e7f842c04 -r7a9c98886fd29efbea53f5be1b0be96c70ffa106 --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Integration.Test/GrassCoverErosionInwardsCalculationActivityIntegrationTest.cs (.../GrassCoverErosionInwardsCalculationActivityIntegrationTest.cs) (revision 1bbf51443c907b5f202e80764fa05f2e7f842c04) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Integration.Test/GrassCoverErosionInwardsCalculationActivityIntegrationTest.cs (.../GrassCoverErosionInwardsCalculationActivityIntegrationTest.cs) (revision 7a9c98886fd29efbea53f5be1b0be96c70ffa106) @@ -781,7 +781,7 @@ { FailureMechanismContribution = { - Norm = 1 + Norm = 0.1 } }; ImportHydraulicBoundaryDatabase(assessmentSection); @@ -1216,7 +1216,7 @@ { FailureMechanismContribution = { - Norm = 1 + Norm = 0.1 } }; ImportHydraulicBoundaryDatabase(assessmentSection); Index: Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Handlers/FailureMechanismContributionNormChangeHandlerTest.cs =================================================================== diff -u -raae5f1733ea318b8fd50c609da9a46e8d42bb7d8 -r7a9c98886fd29efbea53f5be1b0be96c70ffa106 --- Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Handlers/FailureMechanismContributionNormChangeHandlerTest.cs (.../FailureMechanismContributionNormChangeHandlerTest.cs) (revision aae5f1733ea318b8fd50c609da9a46e8d42bb7d8) +++ Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Handlers/FailureMechanismContributionNormChangeHandlerTest.cs (.../FailureMechanismContributionNormChangeHandlerTest.cs) (revision 7a9c98886fd29efbea53f5be1b0be96c70ffa106) @@ -132,9 +132,13 @@ } [Test] + [TestCase(double.MaxValue)] + [TestCase(double.MinValue)] + [TestCase(0.1 + 1e-6)] + [TestCase(0.000001 - 1e-6)] + [TestCase(double.NaN)] [SetCulture("nl-NL")] - public void ChangeNorm_InvalidNorm_ThrowArgumentOutOfRangeException( - [Values(150, 1 + 1e-6, -1e-6, -150, double.NaN)] double invalidNorm) + public void ChangeNorm_InvalidNorm_ThrowArgumentOutOfRangeException(double invalidNorm) { // Setup var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); @@ -144,7 +148,7 @@ TestDelegate call = () => handler.ChangeNorm(assessmentSection, invalidNorm); // Assert - const string expectedMessage = "Kans moet in het bereik [0,0, 1,0] liggen."; + const string expectedMessage = "Kans moet in het bereik [0,000001, 0,1] liggen."; TestHelper.AssertThrowsArgumentExceptionAndTestMessage(call, expectedMessage); } @@ -229,7 +233,7 @@ IEnumerable affectedObjects = null; - const double newNormValue = 0.1234; + const double newNormValue = 0.01234; // Call Action call = () => affectedObjects = handler.ChangeNorm(section, newNormValue);