Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Data/DerivedMacroStabilityInwardsOutputFactory.cs =================================================================== diff -u -re751a698f14762ba8279c2e0f88e9312ffe574fb -r31eb717b3eae473dc7846e6dbe48d06e92b4b964 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Data/DerivedMacroStabilityInwardsOutputFactory.cs (.../DerivedMacroStabilityInwardsOutputFactory.cs) (revision e751a698f14762ba8279c2e0f88e9312ffe574fb) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Data/DerivedMacroStabilityInwardsOutputFactory.cs (.../DerivedMacroStabilityInwardsOutputFactory.cs) (revision 31eb717b3eae473dc7846e6dbe48d06e92b4b964) @@ -21,6 +21,7 @@ using System; using Core.Common.Util; +using Ringtoets.Common.Data.AssessmentSection; namespace Ringtoets.MacroStabilityInwards.Data { @@ -33,33 +34,38 @@ /// Calculates the semi-probabilistic results given a with . /// /// The output of a calculation. - /// General input that influences the probability estimate for a - /// macro stability inwards assessment. - /// The norm to assess for. - /// The contribution of macro stability inwards as a percentage (0-100) to the total of the failure probability - /// of the assessment section. - /// Thrown when or - /// is null. + /// The failure mechanism the output belongs to. + /// The assessment section the output belongs to. + /// Thrown when any parameter is null. public static DerivedMacroStabilityInwardsOutput Create(MacroStabilityInwardsOutput output, - MacroStabilityInwardsProbabilityAssessmentInput probabilityAssessmentInput, - double norm, double contribution) + MacroStabilityInwardsFailureMechanism failureMechanism, + IAssessmentSection assessmentSection) { if (output == null) { throw new ArgumentNullException(nameof(output)); } - if (probabilityAssessmentInput == null) + if (failureMechanism == null) { - throw new ArgumentNullException(nameof(probabilityAssessmentInput)); + throw new ArgumentNullException(nameof(failureMechanism)); } + if (assessmentSection == null) + { + throw new ArgumentNullException(nameof(assessmentSection)); + } + + MacroStabilityInwardsProbabilityAssessmentInput probabilityAssessmentInput = failureMechanism.MacroStabilityInwardsProbabilityAssessmentInput; + double contribution = failureMechanism.Contribution / 100; + double norm = assessmentSection.FailureMechanismContribution.Norm; + double factorOfStability = output.FactorOfStability; double requiredProbability = CalculateRequiredProbability(probabilityAssessmentInput.A, probabilityAssessmentInput.B, probabilityAssessmentInput.SectionLength, norm, - contribution / 100); + contribution); double requiredReliability = StatisticsConverter.ProbabilityToReliability(requiredProbability); double macroStabilityInwardsReliability = CalculateEstimatedReliability(factorOfStability); Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Data/MacroStabilityInwardsFailureMechanismSection2aAssessmentResultExtensions.cs =================================================================== diff -u -rfb3c4216478c0f072cf2f1a94053e81756ced5c7 -r31eb717b3eae473dc7846e6dbe48d06e92b4b964 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Data/MacroStabilityInwardsFailureMechanismSection2aAssessmentResultExtensions.cs (.../MacroStabilityInwardsFailureMechanismSection2aAssessmentResultExtensions.cs) (revision fb3c4216478c0f072cf2f1a94053e81756ced5c7) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Data/MacroStabilityInwardsFailureMechanismSection2aAssessmentResultExtensions.cs (.../MacroStabilityInwardsFailureMechanismSection2aAssessmentResultExtensions.cs) (revision 31eb717b3eae473dc7846e6dbe48d06e92b4b964) @@ -80,10 +80,9 @@ double totalAssessmentLayerTwoA = 0; foreach (MacroStabilityInwardsCalculationScenario scenario in calculationScenarios) { - var derivedOutput = DerivedMacroStabilityInwardsOutputFactory.Create(scenario.Output, - failureMechanism.MacroStabilityInwardsProbabilityAssessmentInput, - assessmentSection.FailureMechanismContribution.Norm, - failureMechanism.Contribution); + DerivedMacroStabilityInwardsOutput derivedOutput = DerivedMacroStabilityInwardsOutputFactory.Create(scenario.Output, + failureMechanism, + assessmentSection); totalAssessmentLayerTwoA += derivedOutput.MacroStabilityInwardsProbability * (double) scenario.Contribution; } Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/PropertyClasses/MacroStabilityInwardsOutputProperties.cs =================================================================== diff -u -rf9241a51f8525620485436283b49f525fc6cfff5 -r31eb717b3eae473dc7846e6dbe48d06e92b4b964 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/PropertyClasses/MacroStabilityInwardsOutputProperties.cs (.../MacroStabilityInwardsOutputProperties.cs) (revision f9241a51f8525620485436283b49f525fc6cfff5) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/PropertyClasses/MacroStabilityInwardsOutputProperties.cs (.../MacroStabilityInwardsOutputProperties.cs) (revision 31eb717b3eae473dc7846e6dbe48d06e92b4b964) @@ -151,8 +151,7 @@ MacroStabilityInwardsFailureMechanism failureMechanism, IAssessmentSection assessmentSection) { - derivedOutput = DerivedMacroStabilityInwardsOutputFactory.Create(output, failureMechanism.MacroStabilityInwardsProbabilityAssessmentInput, - assessmentSection.FailureMechanismContribution.Norm, failureMechanism.Contribution); + derivedOutput = DerivedMacroStabilityInwardsOutputFactory.Create(output, failureMechanism, assessmentSection); } } } \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/Views/MacroStabilityInwardsScenarioRow.cs =================================================================== diff -u -re38673ff639b5d86a2f55997e2d0d876ba4737f7 -r31eb717b3eae473dc7846e6dbe48d06e92b4b964 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/Views/MacroStabilityInwardsScenarioRow.cs (.../MacroStabilityInwardsScenarioRow.cs) (revision e38673ff639b5d86a2f55997e2d0d876ba4737f7) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/Views/MacroStabilityInwardsScenarioRow.cs (.../MacroStabilityInwardsScenarioRow.cs) (revision 31eb717b3eae473dc7846e6dbe48d06e92b4b964) @@ -67,8 +67,7 @@ if (Calculation.HasOutput) { - derivedOutput = DerivedMacroStabilityInwardsOutputFactory.Create(calculation.Output, failureMechanism.MacroStabilityInwardsProbabilityAssessmentInput, - assessmentSection.FailureMechanismContribution.Norm, failureMechanism.Contribution); + derivedOutput = DerivedMacroStabilityInwardsOutputFactory.Create(calculation.Output, failureMechanism, assessmentSection); } } Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.Test/DerivedMacroStabilityInwardsOutputFactoryTest.cs =================================================================== diff -u -re751a698f14762ba8279c2e0f88e9312ffe574fb -r31eb717b3eae473dc7846e6dbe48d06e92b4b964 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.Test/DerivedMacroStabilityInwardsOutputFactoryTest.cs (.../DerivedMacroStabilityInwardsOutputFactoryTest.cs) (revision e751a698f14762ba8279c2e0f88e9312ffe574fb) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.Test/DerivedMacroStabilityInwardsOutputFactoryTest.cs (.../DerivedMacroStabilityInwardsOutputFactoryTest.cs) (revision 31eb717b3eae473dc7846e6dbe48d06e92b4b964) @@ -21,6 +21,8 @@ using System; using NUnit.Framework; +using Rhino.Mocks; +using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.TestUtil; using Ringtoets.MacroStabilityInwards.Data.TestUtil; @@ -32,53 +34,83 @@ [Test] public void Create_OutputNull_ThrowsArgumentNullException() { + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + // Call TestDelegate call = () => DerivedMacroStabilityInwardsOutputFactory.Create(null, - new MacroStabilityInwardsProbabilityAssessmentInput(), - double.NaN, - double.NaN); + new MacroStabilityInwardsFailureMechanism(), + assessmentSection); // Assert var exception = Assert.Throws(call); Assert.AreEqual("output", exception.ParamName); + mocks.VerifyAll(); } [Test] - public void Create_ProbabilityAssessmentInputNull_ThrowsArgumentNullException() + public void Create_FailureMechanismNull_ThrowsArgumentNullException() { + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + // Call TestDelegate call = () => DerivedMacroStabilityInwardsOutputFactory.Create(MacroStabilityInwardsOutputTestFactory.CreateOutput(), - null, - double.NaN, - double.NaN); + null, + assessmentSection); // Assert var exception = Assert.Throws(call); - Assert.AreEqual("probabilityAssessmentInput", exception.ParamName); + Assert.AreEqual("failureMechanism", exception.ParamName); + mocks.VerifyAll(); } [Test] + public void Create_AssessmentSectionNull_ThrowsArgumentNullException() + { + // Call + TestDelegate call = () => DerivedMacroStabilityInwardsOutputFactory.Create(MacroStabilityInwardsOutputTestFactory.CreateOutput(), + new MacroStabilityInwardsFailureMechanism(), + null); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("assessmentSection", exception.ParamName); + } + + [Test] public void Create_ValidData_ReturnsExpectedValue() { // Setup - var probabilityAssessmentInput = new MacroStabilityInwardsProbabilityAssessmentInput + var failureMechanism = new MacroStabilityInwardsFailureMechanism { - SectionLength = 6000 + MacroStabilityInwardsProbabilityAssessmentInput = + { + SectionLength = 6000 + }, + Contribution = 100 }; + var mocks = new MockRepository(); + IAssessmentSection assessmentSection = AssessmentSectionHelper.CreateAssessmentSectionStub(failureMechanism, mocks); + MacroStabilityInwardsOutput output = MacroStabilityInwardsOutputTestFactory.CreateRandomOutput(); - const double norm = 1.0 / 30000; // Call - DerivedMacroStabilityInwardsOutput derivedOutput = DerivedMacroStabilityInwardsOutputFactory.Create(output, probabilityAssessmentInput, norm, 1000); + DerivedMacroStabilityInwardsOutput derivedOutput = DerivedMacroStabilityInwardsOutputFactory.Create(output, failureMechanism, assessmentSection); // Assert Assert.AreEqual(0.697, derivedOutput.FactorOfStability, derivedOutput.FactorOfStability.GetAccuracy()); - Assert.AreEqual(0.38, derivedOutput.MacroStabilityInwardsFactorOfSafety, derivedOutput.MacroStabilityInwardsFactorOfSafety.GetAccuracy()); + Assert.AreEqual(0.707, derivedOutput.MacroStabilityInwardsFactorOfSafety, derivedOutput.MacroStabilityInwardsFactorOfSafety.GetAccuracy()); Assert.AreEqual(0.073605149538226278, derivedOutput.MacroStabilityInwardsProbability, 1e-6); Assert.AreEqual(1.44946, derivedOutput.MacroStabilityInwardsReliability, derivedOutput.MacroStabilityInwardsReliability.GetAccuracy()); - Assert.AreEqual(6.7204301075268831E-05, derivedOutput.RequiredProbability, 1e-6); - Assert.AreEqual(3.81824, derivedOutput.RequiredReliability, derivedOutput.RequiredReliability.GetAccuracy()); + Assert.AreEqual(0.020161290322580648d, derivedOutput.RequiredProbability, 1e-6); + Assert.AreEqual(2.05043, derivedOutput.RequiredReliability, derivedOutput.RequiredReliability.GetAccuracy()); + mocks.VerifyAll(); } } } \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Forms.Test/PropertyClasses/MacroStabilityInwardsOutputPropertiesTest.cs =================================================================== diff -u -r0bc724e93170500800aa7e5d3bf641ab44eeeac7 -r31eb717b3eae473dc7846e6dbe48d06e92b4b964 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Forms.Test/PropertyClasses/MacroStabilityInwardsOutputPropertiesTest.cs (.../MacroStabilityInwardsOutputPropertiesTest.cs) (revision 0bc724e93170500800aa7e5d3bf641ab44eeeac7) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Forms.Test/PropertyClasses/MacroStabilityInwardsOutputPropertiesTest.cs (.../MacroStabilityInwardsOutputPropertiesTest.cs) (revision 31eb717b3eae473dc7846e6dbe48d06e92b4b964) @@ -129,10 +129,7 @@ // Assert DerivedMacroStabilityInwardsOutput expectedDerivedOutput = DerivedMacroStabilityInwardsOutputFactory.Create( - output, - failureMechanism.MacroStabilityInwardsProbabilityAssessmentInput, - assessmentSection.FailureMechanismContribution.Norm, - failureMechanism.Contribution); + output, failureMechanism, assessmentSection); Assert.AreEqual(expectedDerivedOutput.FactorOfStability, properties.MacroStabilityInwardsFactorOfStability, properties.MacroStabilityInwardsFactorOfStability.GetAccuracy()); Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Forms.Test/Views/MacroStabilityInwardsScenarioRowTest.cs =================================================================== diff -u -re38673ff639b5d86a2f55997e2d0d876ba4737f7 -r31eb717b3eae473dc7846e6dbe48d06e92b4b964 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Forms.Test/Views/MacroStabilityInwardsScenarioRowTest.cs (.../MacroStabilityInwardsScenarioRowTest.cs) (revision e38673ff639b5d86a2f55997e2d0d876ba4737f7) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Forms.Test/Views/MacroStabilityInwardsScenarioRowTest.cs (.../MacroStabilityInwardsScenarioRowTest.cs) (revision 31eb717b3eae473dc7846e6dbe48d06e92b4b964) @@ -109,8 +109,7 @@ Assert.AreEqual(calculation.Contribution * 100, row.Contribution); DerivedMacroStabilityInwardsOutput expectedDerivedOutput = DerivedMacroStabilityInwardsOutputFactory.Create( - calculation.Output, failureMechanism.MacroStabilityInwardsProbabilityAssessmentInput, - assessmentSection.FailureMechanismContribution.Norm, failureMechanism.Contribution); + calculation.Output, failureMechanism, assessmentSection); Assert.AreEqual(ProbabilityFormattingHelper.Format(expectedDerivedOutput.MacroStabilityInwardsProbability), row.FailureProbabilityMacroStabilityInwards); } Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/DerivedPipingOutputFactory.cs =================================================================== diff -u -r8ab72c61cfda487718df57b1e2a441394804f529 -r31eb717b3eae473dc7846e6dbe48d06e92b4b964 --- Ringtoets/Piping/src/Ringtoets.Piping.Data/DerivedPipingOutputFactory.cs (.../DerivedPipingOutputFactory.cs) (revision 8ab72c61cfda487718df57b1e2a441394804f529) +++ Ringtoets/Piping/src/Ringtoets.Piping.Data/DerivedPipingOutputFactory.cs (.../DerivedPipingOutputFactory.cs) (revision 31eb717b3eae473dc7846e6dbe48d06e92b4b964) @@ -58,7 +58,7 @@ } double norm = assessmentSection.FailureMechanismContribution.Norm; - double contribution = failureMechanism.Contribution; + double contribution = failureMechanism.Contribution / 100; PipingProbabilityAssessmentInput probabilityAssessmentInput = failureMechanism.PipingProbabilityAssessmentInput; double upliftFactorOfSafety = output.UpliftFactorOfSafety; @@ -81,7 +81,7 @@ probabilityAssessmentInput.B, probabilityAssessmentInput.SectionLength, norm, - contribution / 100); + contribution); double requiredReliability = StatisticsConverter.ProbabilityToReliability(requiredProbability); return new DerivedPipingOutput(upliftFactorOfSafety, upliftReliability,