Index: Ringtoets/Common/test/Ringtoets.Common.Data.Test/AssessmentSection/AssessmentSectionExtensionsTest.cs =================================================================== diff -u -r1e14ee40087ad0c42f889f6ee86c13bf6d7d192b -r5281583af09dba58e8087ab56e877fd28c192e0b --- Ringtoets/Common/test/Ringtoets.Common.Data.Test/AssessmentSection/AssessmentSectionExtensionsTest.cs (.../AssessmentSectionExtensionsTest.cs) (revision 1e14ee40087ad0c42f889f6ee86c13bf6d7d192b) +++ Ringtoets/Common/test/Ringtoets.Common.Data.Test/AssessmentSection/AssessmentSectionExtensionsTest.cs (.../AssessmentSectionExtensionsTest.cs) (revision 5281583af09dba58e8087ab56e877fd28c192e0b) @@ -117,7 +117,7 @@ } [Test] - [TestCaseSource(nameof(DifferentNormTypes))] + [TestCaseSource(nameof(GetNormativeAssessementLevelConfigurationPerNormType))] public void GetNormativeAssessmentLevel_HydraulicBoundaryLocationWithOutput_ReturnsCorrespondingAssessmentLevel( IAssessmentSection assessmentSection, HydraulicBoundaryLocation hydraulicBoundaryLocation, @@ -230,9 +230,52 @@ Assert.AreEqual(expectedAssessmentLevel, assessmentLevel); } - private static IEnumerable DifferentNormTypes() + [Test] + public void GetNorm_AssessmentSectionNull_ThrowsArgumentNullException() { + // Call + TestDelegate test = () => AssessmentSectionExtensions.GetNorm(null, + AssessmentSectionCategoryType.FactorizedLowerLimitNorm); + + // Assert + string paramName = Assert.Throws(test).ParamName; + Assert.AreEqual("assessmentSection", paramName); + } + + [Test] + public void GetNorm_InvalidAssessmentSectionCategoryType_ThrowsInvalidEnumArgumentException() + { + // Setup + const int invalidValue = 9999; + var assessmentSection = new AssessmentSectionStub(); + + // Call + TestDelegate test = () => assessmentSection.GetNorm((AssessmentSectionCategoryType) invalidValue); + + // Assert + string expectedMessage = $"The value of argument 'categoryType' ({invalidValue}) is invalid for Enum type '{nameof(AssessmentSectionCategoryType)}'."; + string parameterName = TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, expectedMessage).ParamName; + Assert.AreEqual("categoryType", parameterName); + } + + [Test] + [TestCaseSource(nameof(GetNormConfigurationPerAssessmentSectionCategoryType))] + public void GetNorm_AssessmentSectionWithNormDefinition_ReturnsCorrespondingNorm( + IAssessmentSection assessmentSection, + AssessmentSectionCategoryType categoryType, + double expectedNorm) + { + // Call + double norm = assessmentSection.GetNorm(categoryType); + + // Assert + Assert.AreEqual(expectedNorm, norm); + } + + private static IEnumerable GetNormativeAssessementLevelConfigurationPerNormType() + { + var assessmentSection = new AssessmentSectionStub(); var hydraulicBoundaryLocation = new TestHydraulicBoundaryLocation(); assessmentSection.SetHydraulicBoundaryLocationCalculations(new[] @@ -254,5 +297,44 @@ assessmentSection.WaterLevelCalculationsForLowerLimitNorm.ElementAt(0).Output.Result ).SetName("LowerLimitNorm"); } + + private static IEnumerable GetNormConfigurationPerAssessmentSectionCategoryType() + { + const double signalingNorm = 0.002; + const double lowerLimitNorm = 0.005; + + var assessmentSection = new AssessmentSectionStub + { + FailureMechanismContribution = + { + LowerLimitNorm = lowerLimitNorm, + SignalingNorm = signalingNorm + } + }; + + yield return new TestCaseData( + assessmentSection, + AssessmentSectionCategoryType.FactorizedSignalingNorm, + signalingNorm / 30 + ).SetName("FactorizedSignalingNorm"); + + yield return new TestCaseData( + assessmentSection, + AssessmentSectionCategoryType.SignalingNorm, + signalingNorm + ).SetName("SignalingNorm"); + + yield return new TestCaseData( + assessmentSection, + AssessmentSectionCategoryType.LowerLimitNorm, + lowerLimitNorm + ).SetName("LowerLimitNorm"); + + yield return new TestCaseData( + assessmentSection, + AssessmentSectionCategoryType.FactorizedLowerLimitNorm, + lowerLimitNorm * 30 + ).SetName("FactorizedLowerLimitNorm"); + } } } \ No newline at end of file