Index: Riskeer/ClosingStructures/src/Riskeer.ClosingStructures.Data/ClosingStructuresFailureMechanismAssemblyFactory.cs =================================================================== diff -u -r89796712386c9c6cdb332d605d109618a61caba7 -r08c7192d465fc82be39dbd1b546adc0f00301ec3 --- Riskeer/ClosingStructures/src/Riskeer.ClosingStructures.Data/ClosingStructuresFailureMechanismAssemblyFactory.cs (.../ClosingStructuresFailureMechanismAssemblyFactory.cs) (revision 89796712386c9c6cdb332d605d109618a61caba7) +++ Riskeer/ClosingStructures/src/Riskeer.ClosingStructures.Data/ClosingStructuresFailureMechanismAssemblyFactory.cs (.../ClosingStructuresFailureMechanismAssemblyFactory.cs) (revision 08c7192d465fc82be39dbd1b546adc0f00301ec3) @@ -78,7 +78,7 @@ /// The failure mechanism section result to /// assemble the detailed assembly for. /// The calculation scenarios belonging to this section. - /// The failure mechanism this section belongs to. + /// All calculation scenarios in the failure mechanism. /// The this section belongs to. /// A . /// Thrown when any parameter is null. @@ -181,7 +181,7 @@ /// The failure mechanism section result to /// combine the assemblies for. /// The calculation scenarios belonging to this section. - /// The failure mechanism this section belongs to. + /// All calculation scenarios in the failure mechanism. /// The this section belongs to. /// A . /// Thrown when any parameter is null. Index: Riskeer/ClosingStructures/src/Riskeer.ClosingStructures.Data/ClosingStructuresFailureMechanismSectionResultDetailedAssessmentExtensions.cs =================================================================== diff -u -r126a8d11d058eb09a70cf5842d2c86bf48dc61fa -r08c7192d465fc82be39dbd1b546adc0f00301ec3 --- Riskeer/ClosingStructures/src/Riskeer.ClosingStructures.Data/ClosingStructuresFailureMechanismSectionResultDetailedAssessmentExtensions.cs (.../ClosingStructuresFailureMechanismSectionResultDetailedAssessmentExtensions.cs) (revision 126a8d11d058eb09a70cf5842d2c86bf48dc61fa) +++ Riskeer/ClosingStructures/src/Riskeer.ClosingStructures.Data/ClosingStructuresFailureMechanismSectionResultDetailedAssessmentExtensions.cs (.../ClosingStructuresFailureMechanismSectionResultDetailedAssessmentExtensions.cs) (revision 08c7192d465fc82be39dbd1b546adc0f00301ec3) @@ -44,8 +44,9 @@ /// All calculation scenarios in the failure mechanism. /// The failure mechanism the section result belongs to. /// The assessment section the section result belongs to. - /// The calculated detailed assessment probability; or when there are no - /// performed or relevant calculations. + /// The calculated detailed assessment probability; or when there + /// are no relevant calculations, when not all relevant calculations are performed or when the + /// contribution of the relevant calculations don't add up to 1. /// Thrown when any parameter is null. public static double GetDetailedAssessmentProbability(this ClosingStructuresFailureMechanismSectionResult sectionResult, IEnumerable> calculationScenarios, Index: Riskeer/ClosingStructures/src/Riskeer.ClosingStructures.Service/ClosingStructuresDataSynchronizationService.cs =================================================================== diff -u -r32bccb614897671503ac4814381f684b2a357bd1 -r08c7192d465fc82be39dbd1b546adc0f00301ec3 --- Riskeer/ClosingStructures/src/Riskeer.ClosingStructures.Service/ClosingStructuresDataSynchronizationService.cs (.../ClosingStructuresDataSynchronizationService.cs) (revision 32bccb614897671503ac4814381f684b2a357bd1) +++ Riskeer/ClosingStructures/src/Riskeer.ClosingStructures.Service/ClosingStructuresDataSynchronizationService.cs (.../ClosingStructuresDataSynchronizationService.cs) (revision 08c7192d465fc82be39dbd1b546adc0f00301ec3) @@ -39,8 +39,7 @@ public static class ClosingStructuresDataSynchronizationService { /// - /// Removes the , unassigns it from the calculations in - /// and clears all dependent data, either directly or indirectly. + /// Removes the and clears all dependent data, either directly or indirectly. /// /// The structure to be removed. /// The @@ -77,8 +76,7 @@ } /// - /// Clears all structures, unassigns them from the calculations in the - /// and clears all data that depends on it, either directly or indirectly. + /// Clears all structures and clears all data that depends on it, either directly or indirectly. /// /// The to /// clear the structures from. Index: Riskeer/ClosingStructures/test/Riskeer.ClosingStructures.Data.Test/ClosingStructuresFailureMechanismSectionResultDetailedAssessmentExtensionsTest.cs =================================================================== diff -u -r126a8d11d058eb09a70cf5842d2c86bf48dc61fa -r08c7192d465fc82be39dbd1b546adc0f00301ec3 --- Riskeer/ClosingStructures/test/Riskeer.ClosingStructures.Data.Test/ClosingStructuresFailureMechanismSectionResultDetailedAssessmentExtensionsTest.cs (.../ClosingStructuresFailureMechanismSectionResultDetailedAssessmentExtensionsTest.cs) (revision 126a8d11d058eb09a70cf5842d2c86bf48dc61fa) +++ Riskeer/ClosingStructures/test/Riskeer.ClosingStructures.Data.Test/ClosingStructuresFailureMechanismSectionResultDetailedAssessmentExtensionsTest.cs (.../ClosingStructuresFailureMechanismSectionResultDetailedAssessmentExtensionsTest.cs) (revision 08c7192d465fc82be39dbd1b546adc0f00301ec3) @@ -116,6 +116,48 @@ } [Test] + public void GetDetailedAssessmentProbability_MultipleScenarios_ReturnsValueBasedOnRelevantScenarios() + { + // Setup + var failureMechanism = new ClosingStructuresFailureMechanism(); + + var mocks = new MockRepository(); + IAssessmentSection assessmentSection = AssessmentSectionTestHelper.CreateAssessmentSectionStub(failureMechanism, mocks); + mocks.ReplayAll(); + + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); + var failureMechanismSectionResult = new ClosingStructuresFailureMechanismSectionResult(section); + + StructuresCalculationScenario calculationScenario1 = ClosingStructuresCalculationScenarioTestFactory.CreateClosingStructuresCalculationScenario(section); + StructuresCalculationScenario calculationScenario2 = ClosingStructuresCalculationScenarioTestFactory.CreateClosingStructuresCalculationScenario(section); + StructuresCalculationScenario calculationScenario3 = ClosingStructuresCalculationScenarioTestFactory.CreateClosingStructuresCalculationScenario(section); + + calculationScenario1.IsRelevant = true; + calculationScenario1.Contribution = (RoundedDouble) 0.2111; + calculationScenario1.Output = new TestStructuresOutput(1.1); + + calculationScenario2.IsRelevant = true; + calculationScenario2.Contribution = (RoundedDouble) 0.7889; + calculationScenario1.Output = new TestStructuresOutput(2.2); + + calculationScenario3.IsRelevant = false; + + StructuresCalculationScenario[] calculations = + { + calculationScenario1, + calculationScenario2, + calculationScenario3 + }; + + // Call + double detailedAssessmentProbability = failureMechanismSectionResult.GetDetailedAssessmentProbability(calculations, failureMechanism, assessmentSection); + + // Assert + Assert.AreEqual(0.3973850177700996, detailedAssessmentProbability); + mocks.VerifyAll(); + } + + [Test] public void GetDetailedAssessmentProbability_NoScenarios_ReturnsNaN() { // Setup @@ -196,7 +238,7 @@ } [Test] - public void GetDetailedAssessmentProbability_ScenarioWithNanResults_ReturnsNaN() + public void GetDetailedAssessmentProbability_ScenarioWithNaNResults_ReturnsNaN() { // Setup var failureMechanism = new ClosingStructuresFailureMechanism(); @@ -311,11 +353,19 @@ StructuresCalculationScenario calculationScenario3 = ClosingStructuresCalculationScenarioTestFactory.CreateNotCalculatedClosingStructuresCalculationScenario(section); calculationScenario3.IsRelevant = false; + StructuresCalculationScenario calculationScenario4 = ClosingStructuresCalculationScenarioTestFactory.CreateNotCalculatedClosingStructuresCalculationScenario( + FailureMechanismSectionTestFactory.CreateFailureMechanismSection(new[] + { + new Point2D(5.0, 0.0), + new Point2D(10.0, 0.0) + })); + StructuresCalculationScenario[] calculationScenarios = { calculationScenario, calculationScenario2, - calculationScenario3 + calculationScenario3, + calculationScenario4 }; // Call Index: Riskeer/HeightStructures/src/Riskeer.HeightStructures.Data/HeightStructuresFailureMechanismAssemblyFactory.cs =================================================================== diff -u -rb0d25d2dab3c6ba9b1aff684a0cf41f842e0ec29 -r08c7192d465fc82be39dbd1b546adc0f00301ec3 --- Riskeer/HeightStructures/src/Riskeer.HeightStructures.Data/HeightStructuresFailureMechanismAssemblyFactory.cs (.../HeightStructuresFailureMechanismAssemblyFactory.cs) (revision b0d25d2dab3c6ba9b1aff684a0cf41f842e0ec29) +++ Riskeer/HeightStructures/src/Riskeer.HeightStructures.Data/HeightStructuresFailureMechanismAssemblyFactory.cs (.../HeightStructuresFailureMechanismAssemblyFactory.cs) (revision 08c7192d465fc82be39dbd1b546adc0f00301ec3) @@ -77,7 +77,7 @@ /// /// The failure mechanism section result to /// assemble the detailed assembly for. - /// The calculation scenarios belonging to this section. + /// All calculation scenarios in the failure mechanism. /// The failure mechanism this section belongs to. /// The this section belongs to. /// A . @@ -180,7 +180,7 @@ /// /// The failure mechanism section result to /// combine the assemblies for. - /// The calculation scenarios belonging to this section. + /// All calculation scenarios in the failure mechanism. /// The failure mechanism this section belongs to. /// The this section belongs to. /// A . Index: Riskeer/HeightStructures/test/Riskeer.HeightStructures.Data.Test/HeightStructuresFailureMechanismSectionResultDetailedAssessmentExtensionsTest.cs =================================================================== diff -u -r168c742c76779963c6698233953919b330b0f7a6 -r08c7192d465fc82be39dbd1b546adc0f00301ec3 --- Riskeer/HeightStructures/test/Riskeer.HeightStructures.Data.Test/HeightStructuresFailureMechanismSectionResultDetailedAssessmentExtensionsTest.cs (.../HeightStructuresFailureMechanismSectionResultDetailedAssessmentExtensionsTest.cs) (revision 168c742c76779963c6698233953919b330b0f7a6) +++ Riskeer/HeightStructures/test/Riskeer.HeightStructures.Data.Test/HeightStructuresFailureMechanismSectionResultDetailedAssessmentExtensionsTest.cs (.../HeightStructuresFailureMechanismSectionResultDetailedAssessmentExtensionsTest.cs) (revision 08c7192d465fc82be39dbd1b546adc0f00301ec3) @@ -116,6 +116,48 @@ } [Test] + public void GetDetailedAssessmentProbability_MultipleScenarios_ReturnsValueBasedOnRelevantScenarios() + { + // Setup + var failureMechanism = new HeightStructuresFailureMechanism(); + + var mocks = new MockRepository(); + IAssessmentSection assessmentSection = AssessmentSectionTestHelper.CreateAssessmentSectionStub(failureMechanism, mocks); + mocks.ReplayAll(); + + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); + var failureMechanismSectionResult = new HeightStructuresFailureMechanismSectionResult(section); + + StructuresCalculationScenario calculationScenario1 = HeightStructuresCalculationScenarioTestFactory.CreateHeightStructuresCalculationScenario(section); + StructuresCalculationScenario calculationScenario2 = HeightStructuresCalculationScenarioTestFactory.CreateHeightStructuresCalculationScenario(section); + StructuresCalculationScenario calculationScenario3 = HeightStructuresCalculationScenarioTestFactory.CreateHeightStructuresCalculationScenario(section); + + calculationScenario1.IsRelevant = true; + calculationScenario1.Contribution = (RoundedDouble) 0.2111; + calculationScenario1.Output = new TestStructuresOutput(1.1); + + calculationScenario2.IsRelevant = true; + calculationScenario2.Contribution = (RoundedDouble) 0.7889; + calculationScenario1.Output = new TestStructuresOutput(2.2); + + calculationScenario3.IsRelevant = false; + + StructuresCalculationScenario[] calculations = + { + calculationScenario1, + calculationScenario2, + calculationScenario3 + }; + + // Call + double detailedAssessmentProbability = failureMechanismSectionResult.GetDetailedAssessmentProbability(calculations, failureMechanism, assessmentSection); + + // Assert + Assert.AreEqual(0.3973850177700996, detailedAssessmentProbability); + mocks.VerifyAll(); + } + + [Test] public void GetDetailedAssessmentProbability_NoScenarios_ReturnsNaN() { // Setup @@ -196,7 +238,7 @@ } [Test] - public void GetDetailedAssessmentProbability_ScenarioWithNanResults_ReturnsNaN() + public void GetDetailedAssessmentProbability_ScenarioWithNaNResults_ReturnsNaN() { // Setup var failureMechanism = new HeightStructuresFailureMechanism(); @@ -215,10 +257,10 @@ StructuresCalculationScenario calculationScenario2 = HeightStructuresCalculationScenarioTestFactory.CreateNotCalculatedHeightStructuresCalculationScenario(section); calculationScenario1.IsRelevant = true; - calculationScenario1.Contribution = (RoundedDouble)contribution1; + calculationScenario1.Contribution = (RoundedDouble) contribution1; calculationScenario2.IsRelevant = true; - calculationScenario2.Contribution = (RoundedDouble)contribution2; + calculationScenario2.Contribution = (RoundedDouble) contribution2; calculationScenario2.Output = new TestStructuresOutput(double.NaN); StructuresCalculationScenario[] calculations = @@ -252,8 +294,8 @@ FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); StructuresCalculationScenario scenarioA = HeightStructuresCalculationScenarioTestFactory.CreateNotCalculatedHeightStructuresCalculationScenario(section); StructuresCalculationScenario scenarioB = HeightStructuresCalculationScenarioTestFactory.CreateNotCalculatedHeightStructuresCalculationScenario(section); - scenarioA.Contribution = (RoundedDouble)contributionA; - scenarioB.Contribution = (RoundedDouble)contributionB; + scenarioA.Contribution = (RoundedDouble) contributionA; + scenarioB.Contribution = (RoundedDouble) contributionB; var result = new HeightStructuresFailureMechanismSectionResult(section); @@ -311,11 +353,19 @@ StructuresCalculationScenario calculationScenario3 = HeightStructuresCalculationScenarioTestFactory.CreateNotCalculatedHeightStructuresCalculationScenario(section); calculationScenario3.IsRelevant = false; + StructuresCalculationScenario calculationScenario4 = HeightStructuresCalculationScenarioTestFactory.CreateNotCalculatedHeightStructuresCalculationScenario( + FailureMechanismSectionTestFactory.CreateFailureMechanismSection(new [] + { + new Point2D(5.0, 0.0), + new Point2D(10.0, 0.0) + })); + StructuresCalculationScenario[] calculationScenarios = { calculationScenario, calculationScenario2, - calculationScenario3 + calculationScenario3, + calculationScenario4 }; // Call Index: Riskeer/MacroStabilityInwards/test/Riskeer.MacroStabilityInwards.Data.Test/MacroStabilityInwardsFailureMechanismAssemblyFactoryTest.cs =================================================================== diff -u -r77f595651b934a75a5625828a9027d7c48e8e5f9 -r08c7192d465fc82be39dbd1b546adc0f00301ec3 --- Riskeer/MacroStabilityInwards/test/Riskeer.MacroStabilityInwards.Data.Test/MacroStabilityInwardsFailureMechanismAssemblyFactoryTest.cs (.../MacroStabilityInwardsFailureMechanismAssemblyFactoryTest.cs) (revision 77f595651b934a75a5625828a9027d7c48e8e5f9) +++ Riskeer/MacroStabilityInwards/test/Riskeer.MacroStabilityInwards.Data.Test/MacroStabilityInwardsFailureMechanismAssemblyFactoryTest.cs (.../MacroStabilityInwardsFailureMechanismAssemblyFactoryTest.cs) (revision 08c7192d465fc82be39dbd1b546adc0f00301ec3) @@ -234,10 +234,6 @@ }, true); var sectionResult = new MacroStabilityInwardsFailureMechanismSectionResult(FailureMechanismSectionTestFactory.CreateFailureMechanismSection()); - MacroStabilityInwardsCalculationScenario[] calculationScenarios = - { - MacroStabilityInwardsCalculationScenarioTestFactory.CreateMacroStabilityInwardsCalculationScenarioWithValidInput(hydraulicBoundaryLocation) - }; using (new AssemblyToolCalculatorFactoryConfig()) { @@ -247,14 +243,14 @@ // Call MacroStabilityInwardsFailureMechanismAssemblyFactory.AssembleDetailedAssessment( sectionResult, - calculationScenarios, + Enumerable.Empty(), failureMechanism, assessmentSection); // Assert Assert.AreEqual(sectionResult.DetailedAssessmentResult, calculator.DetailedAssessmentProbabilityOnlyResultInput); Assert.AreEqual(sectionResult.GetDetailedAssessmentProbability( - calculationScenarios, + Enumerable.Empty(), failureMechanism, assessmentSection), calculator.DetailedAssessmentProbabilityInput); Index: Riskeer/Piping/test/Riskeer.Piping.Data.Test/PipingFailureMechanismAssemblyFactoryTest.cs =================================================================== diff -u -r9c297dba6739032bcaddfb5ceb3452082c54db4a -r08c7192d465fc82be39dbd1b546adc0f00301ec3 --- Riskeer/Piping/test/Riskeer.Piping.Data.Test/PipingFailureMechanismAssemblyFactoryTest.cs (.../PipingFailureMechanismAssemblyFactoryTest.cs) (revision 9c297dba6739032bcaddfb5ceb3452082c54db4a) +++ Riskeer/Piping/test/Riskeer.Piping.Data.Test/PipingFailureMechanismAssemblyFactoryTest.cs (.../PipingFailureMechanismAssemblyFactoryTest.cs) (revision 08c7192d465fc82be39dbd1b546adc0f00301ec3) @@ -233,10 +233,6 @@ }, true); var sectionResult = new PipingFailureMechanismSectionResult(FailureMechanismSectionTestFactory.CreateFailureMechanismSection()); - PipingCalculationScenario[] calculationScenarios = - { - PipingCalculationScenarioTestFactory.CreatePipingCalculationScenarioWithValidInput(hydraulicBoundaryLocation) - }; using (new AssemblyToolCalculatorFactoryConfig()) { @@ -246,14 +242,14 @@ // Call PipingFailureMechanismAssemblyFactory.AssembleDetailedAssessment( sectionResult, - calculationScenarios, + Enumerable.Empty(), failureMechanism, assessmentSection); // Assert Assert.AreEqual(sectionResult.DetailedAssessmentResult, calculator.DetailedAssessmentProbabilityOnlyResultInput); Assert.AreEqual(sectionResult.GetDetailedAssessmentProbability( - calculationScenarios, + Enumerable.Empty(), failureMechanism, assessmentSection), calculator.DetailedAssessmentProbabilityInput);