Index: Riskeer/Common/src/Riskeer.Common.Data/FailureMechanism/FailureMechanismSectionResult.cs
===================================================================
diff -u -r66b3865041fe3f402f54cd48c5aa9fe19179e627 -rd8e61e1c316db2f6f06f05f4911fd26ea072a0a1
--- Riskeer/Common/src/Riskeer.Common.Data/FailureMechanism/FailureMechanismSectionResult.cs (.../FailureMechanismSectionResult.cs) (revision 66b3865041fe3f402f54cd48c5aa9fe19179e627)
+++ Riskeer/Common/src/Riskeer.Common.Data/FailureMechanism/FailureMechanismSectionResult.cs (.../FailureMechanismSectionResult.cs) (revision d8e61e1c316db2f6f06f05f4911fd26ea072a0a1)
@@ -21,6 +21,8 @@
using System;
using Core.Common.Base;
+using Riskeer.Common.Data.Probability;
+using Riskeer.Common.Data.Properties;
namespace Riskeer.Common.Data.FailureMechanism
{
@@ -29,6 +31,8 @@
///
public abstract class FailureMechanismSectionResult : Observable
{
+ private double manualInitialFailureMechanismResultSectionProbability;
+
///
/// Creates a new instance of .
///
@@ -44,6 +48,7 @@
Section = section;
IsRelevant = true;
InitialFailureMechanismResult = InitialFailureMechanismResultType.Adopt;
+ ManualInitialFailureMechanismResultSectionProbability = double.NaN;
}
///
@@ -60,5 +65,21 @@
/// Gets or sets the initial failure mechanism result.
///
public InitialFailureMechanismResultType InitialFailureMechanismResult { get; set; }
+
+ ///
+ /// Gets or sets the value of the manual initial failure mechanism result per failure mechanism section as a probability.
+ ///
+ /// Thrown when is not in range [0,1].
+ public double ManualInitialFailureMechanismResultSectionProbability
+ {
+ get => manualInitialFailureMechanismResultSectionProbability;
+ set
+ {
+ ProbabilityHelper.ValidateProbability(value, null,
+ Resources.ArbitraryProbabilityFailureMechanismSectionResult_AssessmentProbability_Value_needs_to_be_in_Range_0_,
+ true);
+ manualInitialFailureMechanismResultSectionProbability = value;
+ }
+ }
}
}
\ No newline at end of file
Index: Riskeer/Common/test/Riskeer.Common.Data.Test/FailureMechanism/FailureMechanismSectionResultTest.cs
===================================================================
diff -u -r66b3865041fe3f402f54cd48c5aa9fe19179e627 -rd8e61e1c316db2f6f06f05f4911fd26ea072a0a1
--- Riskeer/Common/test/Riskeer.Common.Data.Test/FailureMechanism/FailureMechanismSectionResultTest.cs (.../FailureMechanismSectionResultTest.cs) (revision 66b3865041fe3f402f54cd48c5aa9fe19179e627)
+++ Riskeer/Common/test/Riskeer.Common.Data.Test/FailureMechanism/FailureMechanismSectionResultTest.cs (.../FailureMechanismSectionResultTest.cs) (revision d8e61e1c316db2f6f06f05f4911fd26ea072a0a1)
@@ -21,6 +21,7 @@
using System;
using Core.Common.Base;
+using Core.Common.TestUtil;
using NUnit.Framework;
using Riskeer.Common.Data.FailureMechanism;
using Riskeer.Common.Data.TestUtil;
@@ -44,6 +45,7 @@
Assert.AreSame(section, sectionResult.Section);
Assert.IsTrue(sectionResult.IsRelevant);
Assert.AreEqual(InitialFailureMechanismResultType.Adopt, sectionResult.InitialFailureMechanismResult);
+ Assert.IsNaN(sectionResult.ManualInitialFailureMechanismResultSectionProbability);
}
[Test]
@@ -56,7 +58,47 @@
var exception = Assert.Throws(Call);
Assert.AreEqual("section", exception.ParamName);
}
+
+ [Test]
+ [SetCulture("nl-NL")]
+ [TestCase(-20)]
+ [TestCase(-1e-6)]
+ [TestCase(1 + 1e-6)]
+ [TestCase(12)]
+ public void ManualInitialFailureMechanismResultSectionProbability_InvalidValue_ThrowsArgumentOutOfRangeException(double newValue)
+ {
+ // Setup
+ FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection();
+ var result = new TestFailureMechanismSectionResult(section);
+ // Call
+ void Call() => result.ManualInitialFailureMechanismResultSectionProbability = 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 ManualInitialFailureMechanismResultSectionProbability_ValidValue_NewValueSet(double newValue)
+ {
+ // Setup
+ FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection();
+ var result = new TestFailureMechanismSectionResult(section);
+
+ // Call
+ result.ManualInitialFailureMechanismResultSectionProbability = newValue;
+
+ // Assert
+ Assert.AreEqual(newValue, result.ManualInitialFailureMechanismResultSectionProbability);
+ }
+
private class TestFailureMechanismSectionResult : FailureMechanismSectionResult
{
public TestFailureMechanismSectionResult(FailureMechanismSection section) : base(section) {}
Index: Riskeer/Piping/src/Riskeer.Piping.Data/PipingFailureMechanismSectionResult.cs
===================================================================
diff -u -r896749236261cd0956021990f904a353362f6bd5 -rd8e61e1c316db2f6f06f05f4911fd26ea072a0a1
--- Riskeer/Piping/src/Riskeer.Piping.Data/PipingFailureMechanismSectionResult.cs (.../PipingFailureMechanismSectionResult.cs) (revision 896749236261cd0956021990f904a353362f6bd5)
+++ Riskeer/Piping/src/Riskeer.Piping.Data/PipingFailureMechanismSectionResult.cs (.../PipingFailureMechanismSectionResult.cs) (revision d8e61e1c316db2f6f06f05f4911fd26ea072a0a1)
@@ -19,7 +19,10 @@
// Stichting Deltares and remain full property of Stichting Deltares at all times.
// All rights reserved.
+using System;
using Riskeer.Common.Data.FailureMechanism;
+using Riskeer.Common.Data.Probability;
+using RiskeerCommonDataResources = Riskeer.Common.Data.Properties.Resources;
namespace Riskeer.Piping.Data
{
@@ -29,11 +32,32 @@
///
public class PipingFailureMechanismSectionResult : FailureMechanismSectionResult
{
+ private double manualInitialFailureMechanismResultProfileProbability;
+
///
///
/// Creates a new instance of .
///
public PipingFailureMechanismSectionResult(FailureMechanismSection section)
- : base(section) {}
+ : base(section)
+ {
+ ManualInitialFailureMechanismResultProfileProbability = double.NaN;
+ }
+
+ ///
+ /// Gets or sets the value of the manual initial failure mechanism result per profile as a probability.
+ ///
+ /// Thrown when is not in range [0,1].
+ public double ManualInitialFailureMechanismResultProfileProbability
+ {
+ get => manualInitialFailureMechanismResultProfileProbability;
+ set
+ {
+ ProbabilityHelper.ValidateProbability(value, null,
+ RiskeerCommonDataResources.ArbitraryProbabilityFailureMechanismSectionResult_AssessmentProbability_Value_needs_to_be_in_Range_0_,
+ true);
+ manualInitialFailureMechanismResultProfileProbability = value;
+ }
+ }
}
}
\ No newline at end of file
Index: Riskeer/Piping/test/Riskeer.Piping.Data.Test/PipingFailureMechanismSectionResultTest.cs
===================================================================
diff -u -r896749236261cd0956021990f904a353362f6bd5 -rd8e61e1c316db2f6f06f05f4911fd26ea072a0a1
--- Riskeer/Piping/test/Riskeer.Piping.Data.Test/PipingFailureMechanismSectionResultTest.cs (.../PipingFailureMechanismSectionResultTest.cs) (revision 896749236261cd0956021990f904a353362f6bd5)
+++ Riskeer/Piping/test/Riskeer.Piping.Data.Test/PipingFailureMechanismSectionResultTest.cs (.../PipingFailureMechanismSectionResultTest.cs) (revision d8e61e1c316db2f6f06f05f4911fd26ea072a0a1)
@@ -19,6 +19,8 @@
// Stichting Deltares and remain full property of Stichting Deltares at all times.
// All rights reserved.
+using System;
+using Core.Common.TestUtil;
using NUnit.Framework;
using Riskeer.Common.Data.FailureMechanism;
using Riskeer.Common.Data.TestUtil;
@@ -36,6 +38,47 @@
// Assert
Assert.IsInstanceOf(sectionResult);
+ Assert.IsNaN(sectionResult.ManualInitialFailureMechanismResultProfileProbability);
}
+
+ [Test]
+ [SetCulture("nl-NL")]
+ [TestCase(-20)]
+ [TestCase(-1e-6)]
+ [TestCase(1 + 1e-6)]
+ [TestCase(12)]
+ public void ManualInitialFailureMechanismResultProfileProbability_InvalidValue_ThrowsArgumentOutOfRangeException(double newValue)
+ {
+ // Setup
+ FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection();
+ var result = new PipingFailureMechanismSectionResult(section);
+
+ // Call
+ void Call() => result.ManualInitialFailureMechanismResultProfileProbability = 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 ManualInitialFailureMechanismResultProfileProbability_ValidValue_NewValueSet(double newValue)
+ {
+ // Setup
+ FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection();
+ var result = new PipingFailureMechanismSectionResult(section);
+
+ // Call
+ result.ManualInitialFailureMechanismResultProfileProbability = newValue;
+
+ // Assert
+ Assert.AreEqual(newValue, result.ManualInitialFailureMechanismResultProfileProbability);
+ }
}
}
\ No newline at end of file