Index: Ringtoets/Common/test/Ringtoets.Common.Data.Test/Contribution/FailureMechanismContributionTest.cs =================================================================== diff -u -rbeebce4bfdaeb8e8037bfb06c8673d770a6e0d64 -rd585b18f2f4d58d6e64f161a50318116de26fce6 --- Ringtoets/Common/test/Ringtoets.Common.Data.Test/Contribution/FailureMechanismContributionTest.cs (.../FailureMechanismContributionTest.cs) (revision beebce4bfdaeb8e8037bfb06c8673d770a6e0d64) +++ Ringtoets/Common/test/Ringtoets.Common.Data.Test/Contribution/FailureMechanismContributionTest.cs (.../FailureMechanismContributionTest.cs) (revision d585b18f2f4d58d6e64f161a50318116de26fce6) @@ -314,11 +314,11 @@ } [Test] - [TestCase(double.MaxValue)] - [TestCase(double.MinValue)] - [TestCase(0.1 + 1e-6)] - [TestCase(0.000001 - 1e-6)] - [TestCase(double.NaN)] + [TestCaseSource(nameof(GetInvalidValues), + new object[] + { + "Norm_InvalidNewNorm_ThrowsArgumentOutOfRangeException" + })] [SetCulture("nl-NL")] public void Norm_InvalidNewNorm_ThrowsArgumentOutOfRangeException(double newNorm) { @@ -362,10 +362,100 @@ mocks.VerifyAll(); } + [Test] + [TestCaseSource(nameof(GetInvalidValues), + new object[] + { + "Norm_WhenUpdated_NormUpdatedForEachFailureMechanismContributionItem" + })] + [SetCulture("nl-NL")] + public void LowerLimitNorm_InvalidNewNorm_ThrowsArgumentOutOfRangeException(double newNorm) + { + // Setup + var random = new Random(21); + int contribution = random.Next(1, 100); + var failureMechanismContribution = new FailureMechanismContribution(Enumerable.Empty(), contribution); + + // Call + TestDelegate test = () => failureMechanismContribution.LowerLimitNorm = newNorm; + + // Assert + const string expectedMessage = "De waarde van de norm moet in het bereik [0,000001, 0,1] liggen."; + TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, expectedMessage); + } + + [Test] + [TestCaseSource(nameof(GetInvalidValues), + new object[] + { + "SignalingNorm_InvalidNewNorm_ThrowsArgumentOutOfRangeException" + })] + [SetCulture("nl-NL")] + public void SignalingNorm_InvalidNewNorm_ThrowsArgumentOutOfRangeException(double newNorm) + { + // Setup + var random = new Random(21); + int contribution = random.Next(1, 100); + var failureMechanismContribution = new FailureMechanismContribution(Enumerable.Empty(), contribution); + + // Call + TestDelegate test = () => failureMechanismContribution.SignalingNorm = newNorm; + + // Assert + const string expectedMessage = "De waarde van de norm moet in het bereik [0,000001, 0,1] liggen."; + TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, expectedMessage); + } + + [Test] + public void SignalingNorm_SignalingNormBiggerThanLowerLimitNorm_ThrowsArgumentOutOfRangeException() + { + // Setup + var random = new Random(21); + int contribution = random.Next(1, 100); + var failureMechanismContribution = new FailureMechanismContribution(Enumerable.Empty(), contribution); + + // Call + TestDelegate test = () => failureMechanismContribution.SignalingNorm = 0.1; + + // Assert + const string expectedMessage = "De signaleringswaarde moet gelijk of kleiner zijn dan de ondergrens."; + TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, expectedMessage); + } + + [Test] + public void LowerLimitNorm_SignalingNormBiggerThanLowerLimitNorm_ThrowsArgumentOutOfRangeException() + { + // Setup + var random = new Random(21); + int contribution = random.Next(1, 100); + var failureMechanismContribution = new FailureMechanismContribution(Enumerable.Empty(), contribution); + + // Call + TestDelegate test = () => failureMechanismContribution.LowerLimitNorm = 0.000001; + + // Assert + const string expectedMessage = "De signaleringswaarde moet gelijk of kleiner zijn dan de ondergrens."; + TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, expectedMessage); + } + private static void AssertFailureProbabilitySpace(double newOtherContribution, double norm, double probabilitySpace) { double expectedProbabilitySpace = 100.0 / (norm * newOtherContribution); Assert.AreEqual(expectedProbabilitySpace, probabilitySpace); } + + private static IEnumerable GetInvalidValues(string name) + { + yield return new TestCaseData(double.MaxValue) + .SetName($"{name} maxValue"); + yield return new TestCaseData(double.MinValue) + .SetName($"{name} minValue"); + yield return new TestCaseData(double.NaN) + .SetName($"{name} NaN"); + yield return new TestCaseData(0.1 + 1e-6) + .SetName($"{name} minimum boundary"); + yield return new TestCaseData(0.000001 - 1e-6) + .SetName($"{name} maximum boundary"); + } } } \ No newline at end of file