Index: Riskeer/Common/src/Riskeer.Common.Data/FailureMechanism/FailureMechanismSectionResult.cs =================================================================== diff -u -rd8e61e1c316db2f6f06f05f4911fd26ea072a0a1 -r54c12cd1360987abd052df8dbe9bc1bdb9990857 --- Riskeer/Common/src/Riskeer.Common.Data/FailureMechanism/FailureMechanismSectionResult.cs (.../FailureMechanismSectionResult.cs) (revision d8e61e1c316db2f6f06f05f4911fd26ea072a0a1) +++ Riskeer/Common/src/Riskeer.Common.Data/FailureMechanism/FailureMechanismSectionResult.cs (.../FailureMechanismSectionResult.cs) (revision 54c12cd1360987abd052df8dbe9bc1bdb9990857) @@ -32,6 +32,7 @@ public abstract class FailureMechanismSectionResult : Observable { private double manualInitialFailureMechanismResultSectionProbability; + private double refinedSectionProbability; /// /// Creates a new instance of . @@ -49,6 +50,7 @@ IsRelevant = true; InitialFailureMechanismResult = InitialFailureMechanismResultType.Adopt; ManualInitialFailureMechanismResultSectionProbability = double.NaN; + RefinedSectionProbability = double.NaN; } /// @@ -81,5 +83,26 @@ manualInitialFailureMechanismResultSectionProbability = value; } } + + /// + /// Gets or sets whether further analysis is needed. + /// + public bool FurtherAnalysisNeeded { get; set; } + + /// + /// Gets or sets the value of the refined probability. + /// + /// Thrown when is not in range [0,1]. + public double RefinedSectionProbability + { + get => refinedSectionProbability; + set + { + ProbabilityHelper.ValidateProbability(value, null, + Resources.ArbitraryProbabilityFailureMechanismSectionResult_AssessmentProbability_Value_needs_to_be_in_Range_0_, + true); + refinedSectionProbability = value; + } + } } } \ No newline at end of file Index: Riskeer/Common/test/Riskeer.Common.Data.Test/FailureMechanism/FailureMechanismSectionResultTest.cs =================================================================== diff -u -rd8e61e1c316db2f6f06f05f4911fd26ea072a0a1 -r54c12cd1360987abd052df8dbe9bc1bdb9990857 --- Riskeer/Common/test/Riskeer.Common.Data.Test/FailureMechanism/FailureMechanismSectionResultTest.cs (.../FailureMechanismSectionResultTest.cs) (revision d8e61e1c316db2f6f06f05f4911fd26ea072a0a1) +++ Riskeer/Common/test/Riskeer.Common.Data.Test/FailureMechanism/FailureMechanismSectionResultTest.cs (.../FailureMechanismSectionResultTest.cs) (revision 54c12cd1360987abd052df8dbe9bc1bdb9990857) @@ -46,6 +46,8 @@ Assert.IsTrue(sectionResult.IsRelevant); Assert.AreEqual(InitialFailureMechanismResultType.Adopt, sectionResult.InitialFailureMechanismResult); Assert.IsNaN(sectionResult.ManualInitialFailureMechanismResultSectionProbability); + Assert.IsFalse(sectionResult.FurtherAnalysisNeeded); + Assert.IsNaN(sectionResult.RefinedSectionProbability); } [Test] @@ -98,7 +100,47 @@ // Assert Assert.AreEqual(newValue, result.ManualInitialFailureMechanismResultSectionProbability); } + + [Test] + [SetCulture("nl-NL")] + [TestCase(-20)] + [TestCase(-1e-6)] + [TestCase(1 + 1e-6)] + [TestCase(12)] + public void RefinedSectionProbability_InvalidValue_ThrowsArgumentOutOfRangeException(double newValue) + { + // Setup + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); + var result = new TestFailureMechanismSectionResult(section); + // Call + void Call() => result.RefinedSectionProbability = newValue; + + // Assert + const string message = "De waarde voor de faalkans moet in het bereik [0,0, 1,0] liggen."; + TestHelper.AssertThrowsArgumentExceptionAndTestMessage(Call, message); + } + + [Test] + [TestCase(0)] + [TestCase(1e-6)] + [TestCase(0.5)] + [TestCase(1 - 1e-6)] + [TestCase(1)] + [TestCase(double.NaN)] + public void RefinedSectionProbability_ValidValue_NewValueSet(double newValue) + { + // Setup + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); + var result = new TestFailureMechanismSectionResult(section); + + // Call + result.RefinedSectionProbability = newValue; + + // Assert + Assert.AreEqual(newValue, result.RefinedSectionProbability); + } + private class TestFailureMechanismSectionResult : FailureMechanismSectionResult { public TestFailureMechanismSectionResult(FailureMechanismSection section) : base(section) {}