Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Data/SoilProfile/MacroStabilityInwardsStochasticSoilProfile.cs =================================================================== diff -u -r9f936b0b29f490a024df02345df182133b1c041a -r6545e28fb366f9bfdf71e776a404e9ce256df182 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Data/SoilProfile/MacroStabilityInwardsStochasticSoilProfile.cs (.../MacroStabilityInwardsStochasticSoilProfile.cs) (revision 9f936b0b29f490a024df02345df182133b1c041a) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Data/SoilProfile/MacroStabilityInwardsStochasticSoilProfile.cs (.../MacroStabilityInwardsStochasticSoilProfile.cs) (revision 6545e28fb366f9bfdf71e776a404e9ce256df182) @@ -100,6 +100,19 @@ Probability = fromProfile.Probability; } + /// + /// Updates the probability of the + /// by adding . + /// + /// The amount to increase the + /// with. + /// Thrown when the + /// is outside the range [0, 1]. + public void AddProbability(double probabilityToAdd) + { + Probability += probabilityToAdd; + } + public override string ToString() { return SoilProfile?.ToString() ?? string.Empty; Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.Test/SoilProfile/MacroStabilityInwardsStochasticSoilProfileTest.cs =================================================================== diff -u -r9f936b0b29f490a024df02345df182133b1c041a -r6545e28fb366f9bfdf71e776a404e9ce256df182 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.Test/SoilProfile/MacroStabilityInwardsStochasticSoilProfileTest.cs (.../MacroStabilityInwardsStochasticSoilProfileTest.cs) (revision 9f936b0b29f490a024df02345df182133b1c041a) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.Test/SoilProfile/MacroStabilityInwardsStochasticSoilProfileTest.cs (.../MacroStabilityInwardsStochasticSoilProfileTest.cs) (revision 6545e28fb366f9bfdf71e776a404e9ce256df182) @@ -87,6 +87,58 @@ } [Test] + [SetCulture("nl-NL")] + [TestCase(-1)] + [TestCase(1)] + [TestCase(-0.51)] + [TestCase(0.51)] + [TestCase(double.NaN)] + public void AddProbability_ProbabilityToAddResultsInvalidProbability_ThrowsArgumentOutOfRangeException(double probabilityToAdd) + { + // Setup + const double probability = 0.5; + + var mocks = new MockRepository(); + var soilProfile = mocks.Stub(); + mocks.ReplayAll(); + + var profile = new MacroStabilityInwardsStochasticSoilProfile(probability, soilProfile); + + // Call + TestDelegate test = () => profile.AddProbability(probabilityToAdd); + + // Assert + const string expectedMessage = "Het aandeel van de ondergrondschematisatie in het stochastische ondergrondmodel" + + " moet in het bereik [0,0, 1,0] liggen."; + TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, expectedMessage); + mocks.VerifyAll(); + } + + [Test] + [TestCase(0.5)] + [TestCase(-0.5)] + [TestCase(-0.2)] + [TestCase(0.2)] + public void AddProbability_ProbabilityToAddResultsValidProbability_ReturnsExpectedProbability(double probabilityToAdd) + { + // Setup + const double probability = 0.5; + + var mocks = new MockRepository(); + var soilProfile = mocks.Stub(); + mocks.ReplayAll(); + + var profile = new MacroStabilityInwardsStochasticSoilProfile(probability, soilProfile); + + // Call + profile.AddProbability(probabilityToAdd); + + // Assert + Assert.AreEqual(probability + probabilityToAdd, profile.Probability, 1e-6); + mocks.VerifyAll(); + } + + [Test] public void Update_WithNullProfile_ThrowsArgumentNullException() { // Setup Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/SoilProfile/PipingStochasticSoilProfile.cs =================================================================== diff -u -ref905ca4d14236014d884b5658e18838b697eb01 -r6545e28fb366f9bfdf71e776a404e9ce256df182 --- Ringtoets/Piping/src/Ringtoets.Piping.Data/SoilProfile/PipingStochasticSoilProfile.cs (.../PipingStochasticSoilProfile.cs) (revision ef905ca4d14236014d884b5658e18838b697eb01) +++ Ringtoets/Piping/src/Ringtoets.Piping.Data/SoilProfile/PipingStochasticSoilProfile.cs (.../PipingStochasticSoilProfile.cs) (revision 6545e28fb366f9bfdf71e776a404e9ce256df182) @@ -98,6 +98,19 @@ Probability = fromProfile.Probability; } + /// + /// Updates the probability of the + /// by adding . + /// + /// The amount to increase the + /// with. + /// Thrown when the + /// is outside the range [0, 1]. + public void AddProbability(double probabilityToAdd) + { + Probability += probabilityToAdd; + } + public override string ToString() { return SoilProfile.ToString(); Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/SoilProfile/PipingStochasticSoilProfileTest.cs =================================================================== diff -u -r6cf604a94300560817de70fd42d09baa5b22c3a6 -r6545e28fb366f9bfdf71e776a404e9ce256df182 --- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/SoilProfile/PipingStochasticSoilProfileTest.cs (.../PipingStochasticSoilProfileTest.cs) (revision 6cf604a94300560817de70fd42d09baa5b22c3a6) +++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/SoilProfile/PipingStochasticSoilProfileTest.cs (.../PipingStochasticSoilProfileTest.cs) (revision 6545e28fb366f9bfdf71e776a404e9ce256df182) @@ -84,6 +84,50 @@ } [Test] + [SetCulture("nl-NL")] + [TestCase(-1)] + [TestCase(1)] + [TestCase(-0.51)] + [TestCase(0.51)] + [TestCase(double.NaN)] + public void AddProbability_ProbabilityToAddResultsInvalidProbability_ThrowsArgumentOutOfRangeException(double probabilityToAdd) + { + // Setup + const double probability = 0.5; + + PipingSoilProfile profile = PipingSoilProfileTestFactory.CreatePipingSoilProfile(); + var stochasticSoilProfile = new PipingStochasticSoilProfile(probability, profile); + + // Call + TestDelegate test = () => stochasticSoilProfile.AddProbability(probabilityToAdd); + + // Assert + const string expectedMessage = "Het aandeel van de ondergrondschematisatie in het stochastische ondergrondmodel" + + " moet in het bereik [0,0, 1,0] liggen."; + TestHelper.AssertThrowsArgumentExceptionAndTestMessage(test, expectedMessage); + } + + [Test] + [TestCase(0.5)] + [TestCase(-0.5)] + [TestCase(-0.2)] + [TestCase(0.2)] + public void AddProbability_ProbabilityToAddResultsValidProbability_ReturnsExpectedProbability(double probabilityToAdd) + { + // Setup + const double probability = 0.5; + + PipingSoilProfile profile = PipingSoilProfileTestFactory.CreatePipingSoilProfile(); + var stochasticSoilProfile = new PipingStochasticSoilProfile(probability, profile); + + // Call + stochasticSoilProfile.AddProbability(probabilityToAdd); + + // Assert + Assert.AreEqual(probability + probabilityToAdd, stochasticSoilProfile.Probability, 1e-6); + } + + [Test] public void Update_SoilProfileNull_ThrowsArgumentNullException() { // Setup