Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/DerivedPipingOutputFactory.cs =================================================================== diff -u -re0389e1a7f5438c212fec019bd5f8dfcdf1fc9f6 -r8ab72c61cfda487718df57b1e2a441394804f529 --- Ringtoets/Piping/src/Ringtoets.Piping.Data/DerivedPipingOutputFactory.cs (.../DerivedPipingOutputFactory.cs) (revision e0389e1a7f5438c212fec019bd5f8dfcdf1fc9f6) +++ Ringtoets/Piping/src/Ringtoets.Piping.Data/DerivedPipingOutputFactory.cs (.../DerivedPipingOutputFactory.cs) (revision 8ab72c61cfda487718df57b1e2a441394804f529) @@ -21,6 +21,7 @@ using System; using Core.Common.Util; +using Ringtoets.Common.Data.AssessmentSection; namespace Ringtoets.Piping.Data { @@ -33,27 +34,33 @@ /// Creates a new based on the given parameters. /// /// The output of a calculation. - /// General input that influences the - /// probability estimate for a piping assessment. - /// The norm to assess for. - /// The contribution of piping as a percentage (0-100) - /// to the total of the failure probability of the assessment section. + /// The failure mechanism the calculation belongs to. + /// The assessment section the calculation belongs to. /// The created . - /// Thrown when - /// or is null. - public static DerivedPipingOutput Create(PipingOutput output, PipingProbabilityAssessmentInput probabilityAssessmentInput, - double norm, double contribution) + /// Thrown when any parameter is null. + public static DerivedPipingOutput Create(PipingOutput output, + PipingFailureMechanism 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)); + } + + double norm = assessmentSection.FailureMechanismContribution.Norm; + double contribution = failureMechanism.Contribution; + PipingProbabilityAssessmentInput probabilityAssessmentInput = failureMechanism.PipingProbabilityAssessmentInput; + double upliftFactorOfSafety = output.UpliftFactorOfSafety; double heaveFactorOfSafety = output.HeaveFactorOfSafety; double sellmeijerFactorOfSafety = output.SellmeijerFactorOfSafety; Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingFailureMechanismSection2aAssessmentResultExtensions.cs =================================================================== diff -u -r271e81c620b40ebce812a9595b22ed0e4e7ce94a -r8ab72c61cfda487718df57b1e2a441394804f529 --- Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingFailureMechanismSection2aAssessmentResultExtensions.cs (.../PipingFailureMechanismSection2aAssessmentResultExtensions.cs) (revision 271e81c620b40ebce812a9595b22ed0e4e7ce94a) +++ Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingFailureMechanismSection2aAssessmentResultExtensions.cs (.../PipingFailureMechanismSection2aAssessmentResultExtensions.cs) (revision 8ab72c61cfda487718df57b1e2a441394804f529) @@ -80,10 +80,7 @@ double totalAssessmentLayerTwoA = 0; foreach (PipingCalculationScenario scenario in calculationScenarios) { - DerivedPipingOutput derivedOutput = DerivedPipingOutputFactory.Create(scenario.Output, - failureMechanism.PipingProbabilityAssessmentInput, - assessmentSection.FailureMechanismContribution.Norm, - failureMechanism.Contribution); + DerivedPipingOutput derivedOutput = DerivedPipingOutputFactory.Create(scenario.Output, failureMechanism, assessmentSection); totalAssessmentLayerTwoA += derivedOutput.PipingProbability * (double) scenario.Contribution; } Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/PropertyClasses/PipingOutputProperties.cs =================================================================== diff -u -rdf44be36b5c375ff32cd94086af5e6610ec9fc3a -r8ab72c61cfda487718df57b1e2a441394804f529 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/PropertyClasses/PipingOutputProperties.cs (.../PipingOutputProperties.cs) (revision df44be36b5c375ff32cd94086af5e6610ec9fc3a) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/PropertyClasses/PipingOutputProperties.cs (.../PipingOutputProperties.cs) (revision 8ab72c61cfda487718df57b1e2a441394804f529) @@ -299,10 +299,7 @@ private void CreateDerivedOutput(PipingOutput output, PipingFailureMechanism failureMechanism, IAssessmentSection assessmentSection) { - derivedOutput = DerivedPipingOutputFactory.Create(output, - failureMechanism.PipingProbabilityAssessmentInput, - assessmentSection.FailureMechanismContribution.Norm, - failureMechanism.Contribution); + derivedOutput = DerivedPipingOutputFactory.Create(output, failureMechanism, assessmentSection); } } } \ No newline at end of file Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingScenarioRow.cs =================================================================== diff -u -re38673ff639b5d86a2f55997e2d0d876ba4737f7 -r8ab72c61cfda487718df57b1e2a441394804f529 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingScenarioRow.cs (.../PipingScenarioRow.cs) (revision e38673ff639b5d86a2f55997e2d0d876ba4737f7) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/Views/PipingScenarioRow.cs (.../PipingScenarioRow.cs) (revision 8ab72c61cfda487718df57b1e2a441394804f529) @@ -66,8 +66,7 @@ if (calculation.HasOutput) { - derivedOutput = DerivedPipingOutputFactory.Create(calculation.Output, failureMechanism.PipingProbabilityAssessmentInput, - assessmentSection.FailureMechanismContribution.Norm, failureMechanism.Contribution); + derivedOutput = DerivedPipingOutputFactory.Create(calculation.Output, failureMechanism, assessmentSection); } } Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/DerivedPipingOutputFactoryTest.cs =================================================================== diff -u -rdf44be36b5c375ff32cd94086af5e6610ec9fc3a -r8ab72c61cfda487718df57b1e2a441394804f529 --- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/DerivedPipingOutputFactoryTest.cs (.../DerivedPipingOutputFactoryTest.cs) (revision df44be36b5c375ff32cd94086af5e6610ec9fc3a) +++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/DerivedPipingOutputFactoryTest.cs (.../DerivedPipingOutputFactoryTest.cs) (revision 8ab72c61cfda487718df57b1e2a441394804f529) @@ -21,6 +21,8 @@ using System; using NUnit.Framework; +using Rhino.Mocks; +using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.TestUtil; namespace Ringtoets.Piping.Data.Test @@ -31,58 +33,88 @@ [Test] public void Create_OutputNull_ThrowsArgumentNullException() { + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + // Call TestDelegate call = () => DerivedPipingOutputFactory.Create(null, - new PipingProbabilityAssessmentInput(), - double.NaN, - double.NaN); + new PipingFailureMechanism(), + 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 = () => DerivedPipingOutputFactory.Create(new PipingOutput(new PipingOutput.ConstructionProperties()), null, - double.NaN, - double.NaN); + 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 = () => DerivedPipingOutputFactory.Create(new PipingOutput(new PipingOutput.ConstructionProperties()), + new PipingFailureMechanism(), + null); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("assessmentSection", exception.ParamName); + } + + [Test] public void Create_ValidData_ReturnsExpectedValue() { // Setup - var probabilityAssessmentInput = new PipingProbabilityAssessmentInput + var failureMechanism = new PipingFailureMechanism { - SectionLength = 6000 + PipingProbabilityAssessmentInput = + { + SectionLength = 6000 + }, + Contribution = 100 }; + var mocks = new MockRepository(); + IAssessmentSection assessmentSection = AssessmentSectionHelper.CreateAssessmentSectionStub(failureMechanism, mocks); + var calculatorResult = new PipingOutput(new PipingOutput.ConstructionProperties { UpliftFactorOfSafety = 1.2, HeaveFactorOfSafety = 1.4, SellmeijerFactorOfSafety = 0.9 }); - const double norm = 1.0 / 30000; // Call - DerivedPipingOutput derivedOutput = DerivedPipingOutputFactory.Create(calculatorResult, probabilityAssessmentInput, norm, 1000); + DerivedPipingOutput derivedOutput = DerivedPipingOutputFactory.Create(calculatorResult, failureMechanism, assessmentSection); // Assert - Assert.AreEqual(7.3663305570026214e-06, derivedOutput.UpliftProbability, 1e-6); - Assert.AreEqual(7.0183607399734309e-08, derivedOutput.HeaveProbability, 1e-6); - Assert.AreEqual(1.0988e-5, derivedOutput.SellmeijerProbability, 1e-6); - Assert.AreEqual(5.26477, derivedOutput.PipingReliability, derivedOutput.PipingReliability.GetAccuracy()); - Assert.AreEqual(3.96281, derivedOutput.RequiredReliability, derivedOutput.RequiredReliability.GetAccuracy()); - Assert.AreEqual(1.329, derivedOutput.PipingFactorOfSafety, derivedOutput.PipingFactorOfSafety.GetAccuracy()); + Assert.AreEqual(0.0030333773290253025, derivedOutput.UpliftProbability, 1e-6); + Assert.AreEqual(0.00017624686431291146, derivedOutput.HeaveProbability, 1e-6); + Assert.AreEqual(0.13596896289025881, derivedOutput.SellmeijerProbability, 1e-6); + Assert.AreEqual(3.57331, derivedOutput.PipingReliability, derivedOutput.PipingReliability.GetAccuracy()); + Assert.AreEqual(2.28655, derivedOutput.RequiredReliability, derivedOutput.RequiredReliability.GetAccuracy()); + Assert.AreEqual(1.563, derivedOutput.PipingFactorOfSafety, derivedOutput.PipingFactorOfSafety.GetAccuracy()); + mocks.VerifyAll(); } } } \ No newline at end of file Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PropertyClasses/PipingOutputPropertiesTest.cs =================================================================== diff -u -rdf44be36b5c375ff32cd94086af5e6610ec9fc3a -r8ab72c61cfda487718df57b1e2a441394804f529 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PropertyClasses/PipingOutputPropertiesTest.cs (.../PipingOutputPropertiesTest.cs) (revision df44be36b5c375ff32cd94086af5e6610ec9fc3a) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PropertyClasses/PipingOutputPropertiesTest.cs (.../PipingOutputPropertiesTest.cs) (revision 8ab72c61cfda487718df57b1e2a441394804f529) @@ -136,8 +136,7 @@ var properties = new PipingOutputProperties(output, failureMechanism, assessmentSection); // Assert - var expectedDerivedOutput = DerivedPipingOutputFactory.Create(output, failureMechanism.PipingProbabilityAssessmentInput, - assessmentSection.FailureMechanismContribution.Norm, failureMechanism.Contribution); + var expectedDerivedOutput = DerivedPipingOutputFactory.Create(output, failureMechanism, assessmentSection); const string probabilityFormat = "1/{0:n0}"; Assert.AreEqual(upliftFactorOfSafety, properties.UpliftFactorOfSafety, properties.UpliftFactorOfSafety.GetAccuracy()); Assert.AreEqual(expectedDerivedOutput.UpliftReliability, properties.UpliftReliability, properties.UpliftReliability.GetAccuracy()); Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Views/PipingScenarioRowTest.cs =================================================================== diff -u -rdf44be36b5c375ff32cd94086af5e6610ec9fc3a -r8ab72c61cfda487718df57b1e2a441394804f529 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Views/PipingScenarioRowTest.cs (.../PipingScenarioRowTest.cs) (revision df44be36b5c375ff32cd94086af5e6610ec9fc3a) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/Views/PipingScenarioRowTest.cs (.../PipingScenarioRowTest.cs) (revision 8ab72c61cfda487718df57b1e2a441394804f529) @@ -103,8 +103,7 @@ // Assert DerivedPipingOutput expectedDerivedOutput = DerivedPipingOutputFactory.Create( - calculation.Output, failureMechanism.PipingProbabilityAssessmentInput, - assessmentSection.FailureMechanismContribution.Norm, failureMechanism.Contribution); + calculation.Output, failureMechanism, assessmentSection); Assert.AreSame(calculation, row.Calculation); Assert.AreEqual(calculation.Name, row.Name);