Index: Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.TestUtil.Test/Calculators/Assembly/FailureMechanismSectionAssemblyCalculatorStubTest.cs =================================================================== diff -u -re3f913fddac4cfa598ef5439ce6b832f354d7dd8 -r6c284c82a2ebe4b049c384ee55ed582b9052320f --- Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.TestUtil.Test/Calculators/Assembly/FailureMechanismSectionAssemblyCalculatorStubTest.cs (.../FailureMechanismSectionAssemblyCalculatorStubTest.cs) (revision e3f913fddac4cfa598ef5439ce6b832f354d7dd8) +++ Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.TestUtil.Test/Calculators/Assembly/FailureMechanismSectionAssemblyCalculatorStubTest.cs (.../FailureMechanismSectionAssemblyCalculatorStubTest.cs) (revision 6c284c82a2ebe4b049c384ee55ed582b9052320f) @@ -52,6 +52,13 @@ Assert.AreEqual((DetailedAssessmentProbabilityOnlyResultType) 0, calculator.DetailedAssessmentProbabilityOnlyResultInput); Assert.IsNull(calculator.DetailedAssessmentAssemblyOutput); + Assert.AreEqual((DetailedAssessmentResultType) 0, calculator.DetailedAssesmentResultForFactorizedSignalingNormInput); + Assert.AreEqual((DetailedAssessmentResultType) 0, calculator.DetailedAssesmentResultForSignalingNormInput); + Assert.AreEqual((DetailedAssessmentResultType) 0, calculator.DetailedAssesmentResultForMechanismSpecificLowerLimitNormInput); + Assert.AreEqual((DetailedAssessmentResultType) 0, calculator.DetailedAssesmentResultForLowerLimitNormInput); + Assert.AreEqual((DetailedAssessmentResultType) 0, calculator.DetailedAssesmentResultForFactorizedLowerLimitNormInput); + Assert.IsNull(calculator.DetailedAssessmentAssemblyGroupOutput); + Assert.IsNull(calculator.TailorMadeAssessmentCategoriesInput); Assert.AreEqual(0.0, calculator.TailorMadeAssessmentProbabilityInput); @@ -373,6 +380,100 @@ Assert.IsNotNull(exception.InnerException); } + [Test] + public void AssembleDetailedAssessmentWithCategoryResults_ThrowExceptionOnCalculateFalseAndOutputNotSet_ReturnOutput() + { + // Setup + var random = new Random(39); + var calculator = new FailureMechanismSectionAssemblyCalculatorStub(); + + // Call + FailureMechanismSectionAssemblyCategoryGroup assembly = calculator.AssembleDetailedAssessment( + random.NextEnumValue(), + random.NextEnumValue(), + random.NextEnumValue(), + random.NextEnumValue(), + random.NextEnumValue()); + + // Assert + Assert.AreEqual(FailureMechanismSectionAssemblyCategoryGroup.IIv, assembly); + } + + [Test] + public void AssembleDetailedAssessmentWithCategoryResults_ThrowExceptionOnCalculateFalseAndOutputSet_ReturnOutput() + { + // Setup + var random = new Random(39); + var calculator = new FailureMechanismSectionAssemblyCalculatorStub + { + DetailedAssessmentAssemblyGroupOutput = random.NextEnumValue() + }; + + // Call + FailureMechanismSectionAssemblyCategoryGroup assembly = calculator.AssembleDetailedAssessment( + random.NextEnumValue(), + random.NextEnumValue(), + random.NextEnumValue(), + random.NextEnumValue(), + random.NextEnumValue()); + + + // Assert + Assert.AreEqual(calculator.DetailedAssessmentAssemblyGroupOutput, assembly); + } + + [Test] + public void AssembleDetailedAssessmentWithCategoryResults_ThrowExceptionOnCalculateFalse_SetsInput() + { + // Setup + var random = new Random(39); + var detailedAssesmentResultForFactorizedSignalingNorm = random.NextEnumValue(); + var detailedAssesmentResultForSignalingNorm = random.NextEnumValue(); + var detailedAssesmentResultForMechanismSpecificLowerLimitNorm = random.NextEnumValue(); + var detailedAssesmentResultForLowerLimitNorm = random.NextEnumValue(); + var detailedAssesmentResultForFactorizedLowerLimitNorm = random.NextEnumValue(); + + var calculator = new FailureMechanismSectionAssemblyCalculatorStub(); + + // Call + calculator.AssembleDetailedAssessment(detailedAssesmentResultForFactorizedSignalingNorm, + detailedAssesmentResultForSignalingNorm, + detailedAssesmentResultForMechanismSpecificLowerLimitNorm, + detailedAssesmentResultForLowerLimitNorm, + detailedAssesmentResultForFactorizedLowerLimitNorm); + + // Assert + Assert.AreEqual(detailedAssesmentResultForFactorizedSignalingNorm, calculator.DetailedAssesmentResultForFactorizedSignalingNormInput); + Assert.AreEqual(detailedAssesmentResultForSignalingNorm, calculator.DetailedAssesmentResultForSignalingNormInput); + Assert.AreEqual(detailedAssesmentResultForMechanismSpecificLowerLimitNorm, calculator.DetailedAssesmentResultForMechanismSpecificLowerLimitNormInput); + Assert.AreEqual(detailedAssesmentResultForLowerLimitNorm, calculator.DetailedAssesmentResultForLowerLimitNormInput); + Assert.AreEqual(detailedAssesmentResultForFactorizedLowerLimitNorm, calculator.DetailedAssesmentResultForFactorizedLowerLimitNormInput); + } + + [Test] + public void AssembleDetailedAssessmentWithCategoryResults_ThrowExceptionOnCalculateTrue_ThrowsFailureMechanismSectionAssemblyCalculatorException() + { + // Setup + var random = new Random(39); + var calculator = new FailureMechanismSectionAssemblyCalculatorStub + { + ThrowExceptionOnCalculate = true + }; + + // Call + TestDelegate test = () => calculator.AssembleDetailedAssessment( + random.NextEnumValue(), + random.NextEnumValue(), + random.NextEnumValue(), + random.NextEnumValue(), + random.NextEnumValue()); + + // Assert + var exception = Assert.Throws(test); + Assert.AreEqual("Message", exception.Message); + Assert.IsNotNull(exception.InnerException); + } + #endregion #region Tailor Made Assessment Index: Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.TestUtil/Calculators/Assembly/FailureMechanismSectionAssemblyCalculatorStub.cs =================================================================== diff -u -rbb42f0b668416836925575ef5730682461d6f867 -r6c284c82a2ebe4b049c384ee55ed582b9052320f --- Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.TestUtil/Calculators/Assembly/FailureMechanismSectionAssemblyCalculatorStub.cs (.../FailureMechanismSectionAssemblyCalculatorStub.cs) (revision bb42f0b668416836925575ef5730682461d6f867) +++ Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.TestUtil/Calculators/Assembly/FailureMechanismSectionAssemblyCalculatorStub.cs (.../FailureMechanismSectionAssemblyCalculatorStub.cs) (revision 6c284c82a2ebe4b049c384ee55ed582b9052320f) @@ -53,6 +53,11 @@ public FailureMechanismSectionAssembly DetailedAssessmentAssemblyOutput { get; set; } /// + /// Gets or sets the group output of the detailed assessment calculation. + /// + public FailureMechanismSectionAssemblyCategoryGroup? DetailedAssessmentAssemblyGroupOutput { get; set; } + + /// /// Gets the result type of the detailed assessment calculation. /// public DetailedAssessmentProbabilityOnlyResultType DetailedAssessmentProbabilityOnlyResultInput { get; private set; } @@ -71,8 +76,34 @@ /// Gets the 'N' parameter input of the detailed assessment calculation. /// public double DetailedAssessmentNInput { get; private set; } + + /// + /// Gets the detailed assessment result input for cat Iv - IIv. + /// + public DetailedAssessmentResultType DetailedAssesmentResultForFactorizedSignalingNormInput { get; private set; } /// + /// Gets the detailed assessment result input for cat IIv - IIIv. + /// + public DetailedAssessmentResultType DetailedAssesmentResultForSignalingNormInput { get; private set; } + + /// + /// Gets the detailed assessment result input for cat IIIv - IVv. + /// public DetailedAssessmentResultType DetailedAssesmentResultForMechanismSpecificLowerLimitNormInput { get; private set; } + public DetailedAssessmentResultType DetailedAssesmentResultForMechanismSpecificLowerLimitNormInput { get; private set; } + + + /// + /// Gets the detailed assessment result input for cat IVv - Vv. + /// public DetailedAssessmentResultType DetailedAssesmentResultForMechanismSpecificLowerLimitNormInput { get; private set; } + public DetailedAssessmentResultType DetailedAssesmentResultForLowerLimitNormInput { get; private set; } + + /// + /// Gets the detailed assessment result input for cat Vv - VIv. + /// + public DetailedAssessmentResultType DetailedAssesmentResultForFactorizedLowerLimitNormInput { get; private set; } + + /// /// Gets or sets the output of the tailor made assessment calculation. /// public FailureMechanismSectionAssembly TailorMadeAssessmentAssemblyOutput { get; set; } @@ -214,6 +245,32 @@ (DetailedAssessmentAssemblyOutput = new FailureMechanismSectionAssembly(0, FailureMechanismSectionAssemblyCategoryGroup.VIv)); } + public FailureMechanismSectionAssemblyCategoryGroup AssembleDetailedAssessment( + DetailedAssessmentResultType detailedAssesmentResultForFactorizedSignalingNorm, + DetailedAssessmentResultType detailedAssesmentResultForSignalingNorm, + DetailedAssessmentResultType detailedAssesmentResultForMechanismSpecificLowerLimitNorm, + DetailedAssessmentResultType detailedAssesmentResultForLowerLimitNorm, + DetailedAssessmentResultType detailedAssesmentResultForFactorizedLowerLimitNorm) + { + if (ThrowExceptionOnCalculate) + { + throw new FailureMechanismSectionAssemblyCalculatorException("Message", new Exception()); + } + + DetailedAssesmentResultForFactorizedSignalingNormInput = detailedAssesmentResultForFactorizedSignalingNorm; + DetailedAssesmentResultForSignalingNormInput = detailedAssesmentResultForSignalingNorm; + DetailedAssesmentResultForMechanismSpecificLowerLimitNormInput = detailedAssesmentResultForMechanismSpecificLowerLimitNorm; + DetailedAssesmentResultForLowerLimitNormInput = detailedAssesmentResultForLowerLimitNorm; + DetailedAssesmentResultForFactorizedLowerLimitNormInput = detailedAssesmentResultForFactorizedLowerLimitNorm; + + if (DetailedAssessmentAssemblyGroupOutput == null) + { + DetailedAssessmentAssemblyGroupOutput = FailureMechanismSectionAssemblyCategoryGroup.IIv; + } + + return DetailedAssessmentAssemblyGroupOutput.Value; + } + public FailureMechanismSectionAssembly AssembleTailorMadeAssessment(TailorMadeAssessmentProbabilityAndDetailedCalculationResultType tailorMadeAssessmentResult, double probability, IEnumerable categories)