Index: Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Data.Test/GrassCoverErosionOutwardsFailureMechanismExtensionsTest.cs =================================================================== diff -u -r4c6e297466d36915591da7680c79345511dcefe0 -r7be3118c6dd22f2420d4b9f8eb4fa1c492cf44ea --- Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Data.Test/GrassCoverErosionOutwardsFailureMechanismExtensionsTest.cs (.../GrassCoverErosionOutwardsFailureMechanismExtensionsTest.cs) (revision 4c6e297466d36915591da7680c79345511dcefe0) +++ Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Data.Test/GrassCoverErosionOutwardsFailureMechanismExtensionsTest.cs (.../GrassCoverErosionOutwardsFailureMechanismExtensionsTest.cs) (revision 7be3118c6dd22f2420d4b9f8eb4fa1c492cf44ea) @@ -20,6 +20,7 @@ // All rights reserved. using System; +using System.Collections; using System.ComponentModel; using Core.Common.Base.Data; using Core.Common.TestUtil; @@ -28,6 +29,7 @@ using Ringtoets.Common.Data.FailureMechanism; using Ringtoets.Common.Data.Hydraulics; using Ringtoets.Common.Data.TestUtil; +using Ringtoets.Common.Service; using Ringtoets.GrassCoverErosionOutwards.Data.TestUtil; namespace Ringtoets.GrassCoverErosionOutwards.Data.Test @@ -66,7 +68,7 @@ } [Test] - public void GetAssessmentLevel_InvalidAssessmentSectionCategoryType_ThrowsInvalidEnumArgumentException() + public void GetAssessmentLevel_InvalidFailureMechanismCategoryType_ThrowsInvalidEnumArgumentException() { // Setup const int invalidValue = 9999; @@ -189,7 +191,7 @@ } [Test] - public void GetNorm_InvalidAssessmentSectionCategoryType_ThrowsInvalidEnumArgumentException() + public void GetNorm_InvalidFailureMechanismCategoryType_ThrowsInvalidEnumArgumentException() { // Setup const int invalidValue = 9999; @@ -206,5 +208,84 @@ string parameterName = TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, expectedMessage).ParamName; Assert.AreEqual("categoryType", parameterName); } + + [Test] + [TestCaseSource(nameof(GetNormConfigurationPerFailureMechanismCategoryType))] + public void GetNorm_AssessmentSectionWithNormConfiguration_ReturnsCorrespondingNorm( + GrassCoverErosionOutwardsFailureMechanism failureMechanism, + IAssessmentSection assessmentSection, + FailureMechanismCategoryType categoryType, + double expectedNorm) + { + // Call + double norm = failureMechanism.GetNorm(assessmentSection, categoryType); + + // Assert + Assert.AreEqual(expectedNorm, norm); + } + + private static IEnumerable GetNormConfigurationPerFailureMechanismCategoryType() + { + const double signalingNorm = 0.002; + const double lowerLimitNorm = 0.005; + + var assessmentSection = new AssessmentSectionStub + { + FailureMechanismContribution = + { + LowerLimitNorm = lowerLimitNorm, + SignalingNorm = signalingNorm + } + }; + + var failureMechanism = new GrassCoverErosionOutwardsFailureMechanism + { + Contribution = 25 + }; + + yield return new TestCaseData( + failureMechanism, + assessmentSection, + FailureMechanismCategoryType.MechanismSpecificFactorizedSignalingNorm, + GetMechanismSpecificNorm(failureMechanism, signalingNorm / 30) + ).SetName("MechanismSpecificFactorizedSignalingNorm"); + + yield return new TestCaseData( + failureMechanism, + assessmentSection, + FailureMechanismCategoryType.MechanismSpecificSignalingNorm, + GetMechanismSpecificNorm(failureMechanism, signalingNorm) + ).SetName("MechanismSpecificSignalingNorm"); + + yield return new TestCaseData( + failureMechanism, + assessmentSection, + FailureMechanismCategoryType.MechanismSpecificLowerLimitNorm, + GetMechanismSpecificNorm(failureMechanism, lowerLimitNorm) + ).SetName("MechanismSpecificLowerLimitNorm"); + + yield return new TestCaseData( + failureMechanism, + assessmentSection, + FailureMechanismCategoryType.LowerLimitNorm, + lowerLimitNorm + ).SetName("LowerLimitNorm"); + + yield return new TestCaseData( + failureMechanism, + assessmentSection, + FailureMechanismCategoryType.FactorizedLowerLimitNorm, + lowerLimitNorm * 30 + ).SetName("FactorizedLowerLimitNorm"); + } + + private static double GetMechanismSpecificNorm(GrassCoverErosionOutwardsFailureMechanism failureMechanism, + double norm) + { + return RingtoetsCommonDataCalculationService.ProfileSpecificRequiredProbability( + norm, + failureMechanism.Contribution, + failureMechanism.GeneralInput.N); + } } } \ No newline at end of file Index: Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Data.Test/Ringtoets.GrassCoverErosionOutwards.Data.Test.csproj =================================================================== diff -u -rf1d92a5cb2eebdf9f6c093b9ae66bb7ff95b6e41 -r7be3118c6dd22f2420d4b9f8eb4fa1c492cf44ea --- Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Data.Test/Ringtoets.GrassCoverErosionOutwards.Data.Test.csproj (.../Ringtoets.GrassCoverErosionOutwards.Data.Test.csproj) (revision f1d92a5cb2eebdf9f6c093b9ae66bb7ff95b6e41) +++ Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Data.Test/Ringtoets.GrassCoverErosionOutwards.Data.Test.csproj (.../Ringtoets.GrassCoverErosionOutwards.Data.Test.csproj) (revision 7be3118c6dd22f2420d4b9f8eb4fa1c492cf44ea) @@ -67,6 +67,10 @@ {78AA56F5-431D-465C-AC50-3173D7E90AC1} Ringtoets.Common.Primitives + + {D951D6DA-FE83-4920-9FDB-63BF96480B54} + Ringtoets.Common.Service + {4843D6E5-066F-4795-94F5-1D53932DD03C} Ringtoets.Common.Data.TestUtil