Index: Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Data/HeightStructuresFailureMechanismSectionResult.cs =================================================================== diff -u -r7308fa5293c97e6dc38f36aeaff089e41a5fca51 -rbe5396964501c20d142d21dcf39a2a859bbcb472 --- Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Data/HeightStructuresFailureMechanismSectionResult.cs (.../HeightStructuresFailureMechanismSectionResult.cs) (revision 7308fa5293c97e6dc38f36aeaff089e41a5fca51) +++ Ringtoets/HeightStructures/src/Ringtoets.HeightStructures.Data/HeightStructuresFailureMechanismSectionResult.cs (.../HeightStructuresFailureMechanismSectionResult.cs) (revision be5396964501c20d142d21dcf39a2a859bbcb472) @@ -35,6 +35,7 @@ public class HeightStructuresFailureMechanismSectionResult : FailureMechanismSectionResult { private double tailorMadeAssessmentProbability; + private double manualAssemblyProbability; /// /// Initializes a new instance of . @@ -46,7 +47,8 @@ SimpleAssessmentResult = SimpleAssessmentResultType.None; DetailedAssessmentResult = DetailedAssessmentResultType.Probability; TailorMadeAssessmentResult = TailorMadeAssessmentProbabilityCalculationResultType.None; - tailorMadeAssessmentProbability = double.NaN; + TailorMadeAssessmentProbability = double.NaN; + ManualAssemblyProbability = double.NaN; } /// @@ -88,5 +90,29 @@ tailorMadeAssessmentProbability = value; } } + + /// + /// Gets or sets the indicator whether the combined assembly should be overwritten by . + /// + public bool UseManualAssemblyProbability { get; set; } + + /// + /// Gets or sets the manually selected assembly category group. + /// + /// Thrown when is not in range [0,1]. + public double ManualAssemblyProbability + { + get + { + return manualAssemblyProbability; + } + set + { + ProbabilityHelper.ValidateProbability(value, null, + RingtoetsCommonDataResources.ArbitraryProbabilityFailureMechanismSectionResult_AssessmentProbability_Value_needs_to_be_in_Range_0_, + true); + manualAssemblyProbability = value; + } + } } } \ No newline at end of file Index: Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Data.Test/HeightStructuresFailureMechanismSectionResultTest.cs =================================================================== diff -u -r7308fa5293c97e6dc38f36aeaff089e41a5fca51 -rbe5396964501c20d142d21dcf39a2a859bbcb472 --- Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Data.Test/HeightStructuresFailureMechanismSectionResultTest.cs (.../HeightStructuresFailureMechanismSectionResultTest.cs) (revision 7308fa5293c97e6dc38f36aeaff089e41a5fca51) +++ Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Data.Test/HeightStructuresFailureMechanismSectionResultTest.cs (.../HeightStructuresFailureMechanismSectionResultTest.cs) (revision be5396964501c20d142d21dcf39a2a859bbcb472) @@ -48,6 +48,8 @@ Assert.AreEqual(TailorMadeAssessmentProbabilityCalculationResultType.None, sectionResult.TailorMadeAssessmentResult); Assert.IsNaN(sectionResult.TailorMadeAssessmentProbability); Assert.AreSame(section, sectionResult.Section); + Assert.IsFalse(sectionResult.UseManualAssemblyProbability); + Assert.AreEqual(double.NaN, sectionResult.ManualAssemblyProbability); } [Test] @@ -87,5 +89,46 @@ // Assert Assert.AreEqual(validValue, sectionResult.TailorMadeAssessmentProbability); } + + [Test] + [SetCulture("nl-NL")] + [TestCase(-20)] + [TestCase(-1e-6)] + [TestCase(1 + 1e-6)] + [TestCase(12)] + public void ManualAssemblyProbability_InvalidValue_ThrowsArgumentOutOfRangeException(double newValue) + { + // Setup + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); + var result = new HeightStructuresFailureMechanismSectionResult(section); + + // Call + TestDelegate test = () => result.ManualAssemblyProbability = newValue; + + // Assert + string message = Assert.Throws(test).Message; + const string expectedMessage = "De waarde voor de faalkans moet in het bereik [0,0, 1,0] liggen."; + Assert.AreEqual(expectedMessage, message); + } + + [Test] + [TestCase(0)] + [TestCase(1e-6)] + [TestCase(0.5)] + [TestCase(1 - 1e-6)] + [TestCase(1)] + [TestCase(double.NaN)] + public void ManualAssemblyProbability_ValidValue_NewValueSet(double newValue) + { + // Setup + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); + var result = new HeightStructuresFailureMechanismSectionResult(section); + + // Call + result.ManualAssemblyProbability = newValue; + + // Assert + Assert.AreEqual(newValue, result.ManualAssemblyProbability); + } } } \ No newline at end of file