Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingFailureMechanismSectionDetailedAssessmentResultExtensions.cs
===================================================================
diff -u -r4cced5dc46fe7dd8896ad15d1ec190dec9b2358e -r40cbb4e66eedb0468bc0256f49b1d1c02a1b6086
--- Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingFailureMechanismSectionDetailedAssessmentResultExtensions.cs (.../PipingFailureMechanismSectionDetailedAssessmentResultExtensions.cs) (revision 4cced5dc46fe7dd8896ad15d1ec190dec9b2358e)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingFailureMechanismSectionDetailedAssessmentResultExtensions.cs (.../PipingFailureMechanismSectionDetailedAssessmentResultExtensions.cs) (revision 40cbb4e66eedb0468bc0256f49b1d1c02a1b6086)
@@ -38,17 +38,17 @@
///
/// Gets the value for the detailed assessment of safety per failure mechanism section as a probability.
///
- /// The section result to get the assessment layer 2A for.
+ /// The section result to get the detailed assessment probability for.
/// All calculations in the failure mechanism.
/// The failure mechanism the calculations belong to.
/// The assessment section the calculations belong to.
- /// The calculated assessment layer 2A; or when there are no
- /// performed calculations.
+ /// The calculated detailed assessment probability; or when there are no
+ /// performed or relevant calculations.
/// Thrown when any parameter is null.
public static double GetDetailedAssessmentProbability(this PipingFailureMechanismSectionResult sectionResult,
- IEnumerable calculations,
- PipingFailureMechanism failureMechanism,
- IAssessmentSection assessmentSection)
+ IEnumerable calculations,
+ PipingFailureMechanism failureMechanism,
+ IAssessmentSection assessmentSection)
{
if (sectionResult == null)
{
@@ -70,8 +70,21 @@
throw new ArgumentNullException(nameof(assessmentSection));
}
+ PipingCalculationScenario[] relevantScenarios = sectionResult.GetCalculationScenarios(calculations).ToArray();
+ bool relevantScenarioAvailable = relevantScenarios.Length != 0;
+
+ if (relevantScenarioAvailable && Math.Abs(sectionResult.GetTotalContribution(relevantScenarios) - 1.0) > 1e-6)
+ {
+ return double.NaN;
+ }
+
+ if (!relevantScenarioAvailable || sectionResult.GetCalculationScenarioStatus(relevantScenarios) != CalculationScenarioStatus.Done)
+ {
+ return double.NaN;
+ }
+
IEnumerable calculationScenarios = sectionResult
- .GetCalculationScenarios(calculations)
+ .GetCalculationScenarios(relevantScenarios)
.Where(cs => cs.Status == CalculationScenarioStatus.Done);
if (calculationScenarios.Any())
Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingFailureMechanismSectionResultRow.cs
===================================================================
diff -u -r4cced5dc46fe7dd8896ad15d1ec190dec9b2358e -r40cbb4e66eedb0468bc0256f49b1d1c02a1b6086
--- Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingFailureMechanismSectionResultRow.cs (.../PipingFailureMechanismSectionResultRow.cs) (revision 4cced5dc46fe7dd8896ad15d1ec190dec9b2358e)
+++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingFailureMechanismSectionResultRow.cs (.../PipingFailureMechanismSectionResultRow.cs) (revision 40cbb4e66eedb0468bc0256f49b1d1c02a1b6086)
@@ -22,9 +22,7 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
-using System.Linq;
using Ringtoets.Common.Data.AssessmentSection;
-using Ringtoets.Common.Data.Calculation;
using Ringtoets.Common.Forms.TypeConverters;
using Ringtoets.Common.Forms.Views;
using Ringtoets.Common.Primitives;
@@ -120,20 +118,7 @@
{
get
{
- PipingCalculationScenario[] relevantScenarios = SectionResult.GetCalculationScenarios(calculations).ToArray();
- bool relevantScenarioAvailable = relevantScenarios.Length != 0;
-
- if (relevantScenarioAvailable && Math.Abs(SectionResult.GetTotalContribution(relevantScenarios) - 1.0) > tolerance)
- {
- return double.NaN;
- }
-
- if (!relevantScenarioAvailable || SectionResult.GetCalculationScenarioStatus(relevantScenarios) != CalculationScenarioStatus.Done)
- {
- return double.NaN;
- }
-
- return SectionResult.GetDetailedAssessmentProbability(relevantScenarios, failureMechanism, assessmentSection);
+ return SectionResult.GetDetailedAssessmentProbability(calculations, failureMechanism, assessmentSection);
}
}
Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingFailureMechanismSectionDetailedAssessmentResultExtensionsTest.cs
===================================================================
diff -u -r4cced5dc46fe7dd8896ad15d1ec190dec9b2358e -r40cbb4e66eedb0468bc0256f49b1d1c02a1b6086
--- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingFailureMechanismSectionDetailedAssessmentResultExtensionsTest.cs (.../PipingFailureMechanismSectionDetailedAssessmentResultExtensionsTest.cs) (revision 4cced5dc46fe7dd8896ad15d1ec190dec9b2358e)
+++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingFailureMechanismSectionDetailedAssessmentResultExtensionsTest.cs (.../PipingFailureMechanismSectionDetailedAssessmentResultExtensionsTest.cs) (revision 40cbb4e66eedb0468bc0256f49b1d1c02a1b6086)
@@ -86,8 +86,8 @@
var failureMechanismSectionResult = new PipingFailureMechanismSectionResult(section);
// Call
- TestDelegate call = () => failureMechanismSectionResult.GetDetailedAssessmentProbability(Enumerable.Empty(),
- null,
+ TestDelegate call = () => failureMechanismSectionResult.GetDetailedAssessmentProbability(Enumerable.Empty(),
+ null,
assessmentSection);
// Assert
@@ -104,8 +104,8 @@
var failureMechanismSectionResult = new PipingFailureMechanismSectionResult(section);
// Call
- TestDelegate call = () => failureMechanismSectionResult.GetDetailedAssessmentProbability(Enumerable.Empty(),
- new PipingFailureMechanism(),
+ TestDelegate call = () => failureMechanismSectionResult.GetDetailedAssessmentProbability(Enumerable.Empty(),
+ new PipingFailureMechanism(),
null);
// Assert
@@ -114,7 +114,7 @@
}
[Test]
- public void GetDetailedAssessmentProbability_MultipleScenarios_ReturnsValueBasedOnRelevantAndDoneScenarios()
+ public void GetDetailedAssessmentProbability_MultipleScenarios_ReturnsValueBasedOnRelevantScenarios()
{
// Setup
var failureMechanism = new PipingFailureMechanism();
@@ -126,30 +126,23 @@
FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection();
var failureMechanismSectionResult = new PipingFailureMechanismSectionResult(section);
- const double contribution1 = 0.2;
- const double contribution2 = 0.8;
-
PipingCalculationScenario pipingCalculationScenario1 = PipingCalculationScenarioTestFactory.CreatePipingCalculationScenario(section);
PipingCalculationScenario pipingCalculationScenario2 = PipingCalculationScenarioTestFactory.CreatePipingCalculationScenario(section);
PipingCalculationScenario pipingCalculationScenario3 = PipingCalculationScenarioTestFactory.CreatePipingCalculationScenario(section);
- PipingCalculationScenario pipingCalculationScenario4 = PipingCalculationScenarioTestFactory.CreateNotCalculatedPipingCalculationScenario(section);
pipingCalculationScenario1.IsRelevant = true;
- pipingCalculationScenario1.Contribution = (RoundedDouble) contribution1;
+ pipingCalculationScenario1.Contribution = (RoundedDouble) 0.2;
pipingCalculationScenario2.IsRelevant = true;
- pipingCalculationScenario2.Contribution = (RoundedDouble) contribution2;
+ pipingCalculationScenario2.Contribution = (RoundedDouble) 0.8;
pipingCalculationScenario3.IsRelevant = false;
- pipingCalculationScenario4.IsRelevant = true;
-
var calculations = new[]
{
pipingCalculationScenario1,
pipingCalculationScenario2,
- pipingCalculationScenario3,
- pipingCalculationScenario4
+ pipingCalculationScenario3
};
// Call
@@ -282,6 +275,40 @@
}
[Test]
+ [TestCase(0.2, 0.8 - 1e5)]
+ [TestCase(0.0, 0.5)]
+ [TestCase(0.3, 0.7 + 1e-5)]
+ [TestCase(-5, -8)]
+ [TestCase(13, 2)]
+ public void GetDetailedAssessmentProbability_RelevantScenarioContributionDontAddUpTo1_ReturnNaN(double contributionA, double contributionB)
+ {
+ // Setup
+ var mocks = new MockRepository();
+ var assessmentSection = mocks.Stub();
+ mocks.ReplayAll();
+
+ var failureMechanism = new PipingFailureMechanism();
+ FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection();
+ PipingCalculationScenario scenarioA = PipingCalculationScenarioTestFactory.CreateNotCalculatedPipingCalculationScenario(section);
+ PipingCalculationScenario scenarioB = PipingCalculationScenarioTestFactory.CreateNotCalculatedPipingCalculationScenario(section);
+ scenarioA.Contribution = (RoundedDouble) contributionA;
+ scenarioB.Contribution = (RoundedDouble) contributionB;
+
+ var result = new PipingFailureMechanismSectionResult(section);
+
+ // Call
+ double detailedAssessment = result.GetDetailedAssessmentProbability(new[]
+ {
+ scenarioA,
+ scenarioB
+ }, failureMechanism, assessmentSection);
+
+ // Assert
+ Assert.IsNaN(detailedAssessment);
+ mocks.VerifyAll();
+ }
+
+ [Test]
public void GetTotalContribution_Always_ReturnsTotalRelevantScenarioContribution()
{
// Setup
Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Views/PipingFailureMechanismSectionResultRowTest.cs
===================================================================
diff -u -r4cced5dc46fe7dd8896ad15d1ec190dec9b2358e -r40cbb4e66eedb0468bc0256f49b1d1c02a1b6086
--- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Views/PipingFailureMechanismSectionResultRowTest.cs (.../PipingFailureMechanismSectionResultRowTest.cs) (revision 4cced5dc46fe7dd8896ad15d1ec190dec9b2358e)
+++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Views/PipingFailureMechanismSectionResultRowTest.cs (.../PipingFailureMechanismSectionResultRowTest.cs) (revision 40cbb4e66eedb0468bc0256f49b1d1c02a1b6086)
@@ -161,93 +161,6 @@
}
[Test]
- public void DetailedAssessment_NoScenarios_ReturnNaN()
- {
- // Setup
- var mocks = new MockRepository();
- var assessmentSection = mocks.Stub();
- mocks.ReplayAll();
-
- var failureMechanism = new PipingFailureMechanism();
-
- FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection();
- var result = new PipingFailureMechanismSectionResult(section);
-
- // Call
- var row = new PipingFailureMechanismSectionResultRow(result, Enumerable.Empty(),
- failureMechanism, assessmentSection);
-
- // Assert
- Assert.IsNaN(row.DetailedAssessment);
- mocks.VerifyAll();
- }
-
- [Test]
- [TestCase(0.2, 0.8 - 1e5)]
- [TestCase(0.0, 0.5)]
- [TestCase(0.3, 0.7 + 1e-5)]
- [TestCase(-5, -8)]
- [TestCase(13, 2)]
- public void DetailedAssessment_RelevantScenarioContributionDontAddUpTo1_ReturnNaN(double contributionA, double contributionB)
- {
- // Setup
- var mocks = new MockRepository();
- var assessmentSection = mocks.Stub();
- mocks.ReplayAll();
-
- var failureMechanism = new PipingFailureMechanism();
-
- FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection();
-
- PipingCalculationScenario scenarioA = PipingCalculationScenarioTestFactory.CreateNotCalculatedPipingCalculationScenario(section);
- PipingCalculationScenario scenarioB = PipingCalculationScenarioTestFactory.CreateNotCalculatedPipingCalculationScenario(section);
- scenarioA.Contribution = (RoundedDouble) contributionA;
- scenarioB.Contribution = (RoundedDouble) contributionB;
-
- var result = new PipingFailureMechanismSectionResult(section);
- var row = new PipingFailureMechanismSectionResultRow(result, new[]
- {
- scenarioA,
- scenarioB
- }, failureMechanism, assessmentSection);
-
- // Call
- double detailedAssessment = row.DetailedAssessment;
-
- // Assert
- Assert.IsNaN(detailedAssessment);
- mocks.VerifyAll();
- }
-
- [Test]
- public void DetailedAssessment_NoRelevantScenariosDone_ReturnNaN()
- {
- // Setup
- var mocks = new MockRepository();
- var assessmentSection = mocks.Stub();
- mocks.ReplayAll();
-
- var failureMechanism = new PipingFailureMechanism();
-
- FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection();
-
- PipingCalculationScenario scenario = PipingCalculationScenarioTestFactory.CreateNotCalculatedPipingCalculationScenario(section);
-
- var result = new PipingFailureMechanismSectionResult(section);
- var row = new PipingFailureMechanismSectionResultRow(result, new[]
- {
- scenario
- }, failureMechanism, assessmentSection);
-
- // Call
- double detailedAssessment = row.DetailedAssessment;
-
- // Assert
- Assert.IsNaN(detailedAssessment);
- mocks.VerifyAll();
- }
-
- [Test]
public void DetailedAssessment_RelevantScenariosDone_ResultOfSection()
{
// Setup