Index: Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Assembly/FailureMechanismSectionAssemblyCalculator.cs =================================================================== diff -u -r98aebb67dbbe6cedc767cec035142d6038718985 -rdfe89063627bf9208166e87a3da54fbbaeb9bda0 --- Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Assembly/FailureMechanismSectionAssemblyCalculator.cs (.../FailureMechanismSectionAssemblyCalculator.cs) (revision 98aebb67dbbe6cedc767cec035142d6038718985) +++ Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Assembly/FailureMechanismSectionAssemblyCalculator.cs (.../FailureMechanismSectionAssemblyCalculator.cs) (revision dfe89063627bf9208166e87a3da54fbbaeb9bda0) @@ -213,6 +213,22 @@ #region Tailor Made Assessment + public FailureMechanismSectionAssemblyCategoryGroup AssembleTailorMadeAssessment(TailorMadeAssessmentResultType tailorMadeAssessmentResult) + { + try + { + IFailureMechanismSectionAssemblyCalculatorKernel kernel = factory.CreateFailureMechanismSectionAssemblyKernel(); + CalculationOutput output = kernel.TailorMadeAssessmentDirectFailureMechanisms( + FailureMechanismSectionAssemblyCalculatorInputCreator.CreateTailorMadeCalculationResult(tailorMadeAssessmentResult)); + + return FailureMechanismSectionAssemblyCreator.ConvertFailureMechanismSectionCategoryGroup(output.Result); + } + catch (Exception e) + { + throw new FailureMechanismSectionAssemblyCalculatorException(e.Message, e); + } + } + public FailureMechanismSectionAssembly AssembleTailorMadeAssessment(TailorMadeAssessmentProbabilityAndDetailedCalculationResultType tailorMadeAssessmentResult, double probability, IEnumerable categories) Index: Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Assembly/IFailureMechanismSectionAssemblyCalculator.cs =================================================================== diff -u -r98aebb67dbbe6cedc767cec035142d6038718985 -rdfe89063627bf9208166e87a3da54fbbaeb9bda0 --- Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Assembly/IFailureMechanismSectionAssemblyCalculator.cs (.../IFailureMechanismSectionAssemblyCalculator.cs) (revision 98aebb67dbbe6cedc767cec035142d6038718985) +++ Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Assembly/IFailureMechanismSectionAssemblyCalculator.cs (.../IFailureMechanismSectionAssemblyCalculator.cs) (revision dfe89063627bf9208166e87a3da54fbbaeb9bda0) @@ -114,6 +114,16 @@ DetailedAssessmentResultType detailedAssessmentResultForFactorizedLowerLimitNorm); /// + /// Assembles the tailor made assessment based on the input parameter. + /// + /// The + /// to assemble for. + /// A . + /// Thrown when + /// an error occurs when performing the assembly. + FailureMechanismSectionAssemblyCategoryGroup AssembleTailorMadeAssessment(TailorMadeAssessmentResultType tailorMadeAssessmentResult); + + /// /// Assembles the tailor made assessment based on the input parameters. /// /// The Index: Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.Test/Calculators/Assembly/FailureMechanismSectionAssemblyCalculatorTest.cs =================================================================== diff -u -r98aebb67dbbe6cedc767cec035142d6038718985 -rdfe89063627bf9208166e87a3da54fbbaeb9bda0 --- Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.Test/Calculators/Assembly/FailureMechanismSectionAssemblyCalculatorTest.cs (.../FailureMechanismSectionAssemblyCalculatorTest.cs) (revision 98aebb67dbbe6cedc767cec035142d6038718985) +++ Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.Test/Calculators/Assembly/FailureMechanismSectionAssemblyCalculatorTest.cs (.../FailureMechanismSectionAssemblyCalculatorTest.cs) (revision dfe89063627bf9208166e87a3da54fbbaeb9bda0) @@ -1072,6 +1072,146 @@ #region Tailor Made Assessment [Test] + public void AssembleTailorMadeAssessmentWithResult_WithInvalidEnumInput_ThrowFailureMechanismSectionAssemblyCalculatorException() + { + // Setup + using (new AssemblyToolKernelFactoryConfig()) + { + var factory = (TestAssemblyToolKernelFactory) AssemblyToolKernelFactory.Instance; + var calculator = new FailureMechanismSectionAssemblyCalculator(factory); + + // Call + TestDelegate test = () => calculator.AssembleTailorMadeAssessment((TailorMadeAssessmentResultType) 99); + + // Assert + var exception = Assert.Throws(test); + Exception innerException = exception.InnerException; + Assert.IsInstanceOf(innerException); + Assert.AreEqual(innerException.Message, exception.Message); + } + } + + [Test] + public void AssembleTailorMadeAssessmentWithResult_WithValidInput_InputCorrectlySetToKernel() + { + // Setup + var random = new Random(39); + var tailorMadeAssessmentResult = random.NextEnumValue(); + + using (new AssemblyToolKernelFactoryConfig()) + { + var factory = (TestAssemblyToolKernelFactory) AssemblyToolKernelFactory.Instance; + FailureMechanismSectionAssemblyKernelStub kernel = factory.LastCreatedFailureMechanismSectionAssemblyKernel; + kernel.FailureMechanismSectionAssemblyCategoryGroup = new CalculationOutput( + random.NextEnumValue()); + + var calculator = new FailureMechanismSectionAssemblyCalculator(factory); + + // Call + calculator.AssembleTailorMadeAssessment(tailorMadeAssessmentResult); + + // Assert + Assert.AreEqual(kernel.TailorMadeCalculationResultInput, GetTailorMadeCalculationResult(tailorMadeAssessmentResult)); + } + } + + private static TailorMadeCalculationResult GetTailorMadeCalculationResult(TailorMadeAssessmentResultType tailorMadeAssessmentResult) + { + switch (tailorMadeAssessmentResult) + { + case TailorMadeAssessmentResultType.None: + return TailorMadeCalculationResult.None; + case TailorMadeAssessmentResultType.ProbabilityNegligible: + return TailorMadeCalculationResult.FV; + case TailorMadeAssessmentResultType.Sufficient: + return TailorMadeCalculationResult.V; + case TailorMadeAssessmentResultType.Insufficient: + return TailorMadeCalculationResult.VN; + case TailorMadeAssessmentResultType.NotAssessed: + return TailorMadeCalculationResult.NGO; + default: + throw new NotSupportedException(); + } + } + + [Test] + public void AssembleTailorMadeAssessmentWithResult_KernelWithInvalidOutput_ThrowFailureMechanismSectionAssemblyCalculatorException() + { + // Setup + var random = new Random(39); + var tailorMadeAssessmentResult = random.NextEnumValue(); + + using (new AssemblyToolKernelFactoryConfig()) + { + var factory = (TestAssemblyToolKernelFactory) AssemblyToolKernelFactory.Instance; + FailureMechanismSectionAssemblyKernelStub kernel = factory.LastCreatedFailureMechanismSectionAssemblyKernel; + kernel.FailureMechanismSectionAssemblyCategoryGroup = new CalculationOutput( + (FailureMechanismSectionCategoryGroup) 99); + + var calculator = new FailureMechanismSectionAssemblyCalculator(factory); + + // Call + TestDelegate test = () => calculator.AssembleTailorMadeAssessment(tailorMadeAssessmentResult); + + // Assert + var exception = Assert.Throws(test); + Exception innerException = exception.InnerException; + Assert.IsInstanceOf(innerException); + Assert.AreEqual(innerException.Message, exception.Message); + } + } + + [Test] + public void AssembleTailorMadeAssessmentWithResult_KernelWithCompleteOutput_OutputCorrectlyReturnedByCalculator() + { + // Setup + var random = new Random(39); + + using (new AssemblyToolKernelFactoryConfig()) + { + var factory = (TestAssemblyToolKernelFactory) AssemblyToolKernelFactory.Instance; + FailureMechanismSectionAssemblyKernelStub kernel = factory.LastCreatedFailureMechanismSectionAssemblyKernel; + kernel.FailureMechanismSectionAssemblyCategoryGroup = new CalculationOutput( + random.NextEnumValue()); + + var calculator = new FailureMechanismSectionAssemblyCalculator(factory); + + // Call + FailureMechanismSectionAssemblyCategoryGroup assembly = calculator.AssembleTailorMadeAssessment( + random.NextEnumValue()); + + // Assert + Assert.AreEqual(GetGroup(kernel.FailureMechanismSectionAssemblyCategoryGroup.Result), assembly); + } + } + + [Test] + public void AssembleTailorMadeAssessmentWithResult_KernelThrowsException_ThrowFailureMechanismSectionAssemblyCalculatorException() + { + // Setup + var random = new Random(39); + + using (new AssemblyToolKernelFactoryConfig()) + { + var factory = (TestAssemblyToolKernelFactory) AssemblyToolKernelFactory.Instance; + FailureMechanismSectionAssemblyKernelStub kernel = factory.LastCreatedFailureMechanismSectionAssemblyKernel; + kernel.ThrowExceptionOnCalculate = true; + + var calculator = new FailureMechanismSectionAssemblyCalculator(factory); + + // Call + TestDelegate test = () => calculator.AssembleTailorMadeAssessment( + random.NextEnumValue()); + + // Assert + var exception = Assert.Throws(test); + Exception innerException = exception.InnerException; + Assert.IsNotNull(innerException); + Assert.AreEqual(innerException.Message, exception.Message); + } + } + + [Test] public void AssembleTailorMadeAssessmentWithProbabilityAndDetailedCalculationResult_Always_OutputCorrectlyReturnedByCalculator() { // Setup Index: Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.TestUtil.Test/Calculators/Assembly/FailureMechanismSectionAssemblyCalculatorStubTest.cs =================================================================== diff -u -r98aebb67dbbe6cedc767cec035142d6038718985 -rdfe89063627bf9208166e87a3da54fbbaeb9bda0 --- Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.TestUtil.Test/Calculators/Assembly/FailureMechanismSectionAssemblyCalculatorStubTest.cs (.../FailureMechanismSectionAssemblyCalculatorStubTest.cs) (revision 98aebb67dbbe6cedc767cec035142d6038718985) +++ Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.TestUtil.Test/Calculators/Assembly/FailureMechanismSectionAssemblyCalculatorStubTest.cs (.../FailureMechanismSectionAssemblyCalculatorStubTest.cs) (revision dfe89063627bf9208166e87a3da54fbbaeb9bda0) @@ -544,6 +544,72 @@ #region Tailor Made Assessment [Test] + public void AssembleTailorMadeAssessmentWithTailorMadeAssessmentResult_ThrowExceptionOnCalculateFalseAndOutputNotSet_ReturnOutput() + { + // Setup + var random = new Random(39); + var calculator = new FailureMechanismSectionAssemblyCalculatorStub(); + + // Call + FailureMechanismSectionAssemblyCategoryGroup assembly = calculator.AssembleTailorMadeAssessment(random.NextEnumValue()); + + // Assert + Assert.AreEqual(FailureMechanismSectionAssemblyCategoryGroup.IIv, assembly); + } + + [Test] + public void AssembleTailorMadeAssessmentWithTailorMadeAssessmentResult_ThrowExceptionOnCalculateFalseAndOutputSet_ReturnOutput() + { + // Setup + var random = new Random(39); + var calculator = new FailureMechanismSectionAssemblyCalculatorStub + { + TailorMadeAssemblyCategoryOutput = random.NextEnumValue() + }; + + // Call + FailureMechanismSectionAssemblyCategoryGroup assembly = calculator.AssembleTailorMadeAssessment(random.NextEnumValue()); + + // Assert + Assert.AreEqual(calculator.TailorMadeAssemblyCategoryOutput, assembly); + } + + [Test] + public void AssembleTailorMadeAssessmentWithTailorMadeAssessmentResult_ThrowExceptionOnCalculateFalse_SetsInput() + { + // Setup + var random = new Random(39); + var tailorMadeAssessmentResult = random.NextEnumValue(); + + var calculator = new FailureMechanismSectionAssemblyCalculatorStub(); + + // Call + calculator.AssembleTailorMadeAssessment(tailorMadeAssessmentResult); + + // Assert + Assert.AreEqual(tailorMadeAssessmentResult, calculator.TailorMadeAssessmentResultInput); + } + + [Test] + public void AssembleTailorMadeAssessmentWithTailorMadeAssessmentResult_ThrowExceptionOnCalculateTrue_ThrowsFailureMechanismSectionAssemblyCalculatorException() + { + // Setup + var random = new Random(39); + var calculator = new FailureMechanismSectionAssemblyCalculatorStub + { + ThrowExceptionOnCalculate = true + }; + + // Call + TestDelegate test = () => calculator.AssembleTailorMadeAssessment(random.NextEnumValue()); + + // Assert + var exception = Assert.Throws(test); + Assert.AreEqual("Message", exception.Message); + Assert.IsNotNull(exception.InnerException); + } + + [Test] public void AssembleTailorMadeAssessmentWithProbabilityAndDetailedCalculationResult_ThrowExceptionOnCalculateFalseAndOutputNotSet_ReturnOutput() { // Setup @@ -840,7 +906,7 @@ calculator.AssembleTailorMadeAssessment(tailorMadeAssessmentResult); // Assert - Assert.AreEqual(tailorMadeAssessmentResult, calculator.TailorMadeAssessmentResultInput); + Assert.AreEqual(tailorMadeAssessmentResult, calculator.TailorMadeAssessmentGroupInput); } [Test] Index: Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.TestUtil/Calculators/Assembly/FailureMechanismSectionAssemblyCalculatorStub.cs =================================================================== diff -u -r98aebb67dbbe6cedc767cec035142d6038718985 -rdfe89063627bf9208166e87a3da54fbbaeb9bda0 --- Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.TestUtil/Calculators/Assembly/FailureMechanismSectionAssemblyCalculatorStub.cs (.../FailureMechanismSectionAssemblyCalculatorStub.cs) (revision 98aebb67dbbe6cedc767cec035142d6038718985) +++ Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.TestUtil/Calculators/Assembly/FailureMechanismSectionAssemblyCalculatorStub.cs (.../FailureMechanismSectionAssemblyCalculatorStub.cs) (revision dfe89063627bf9208166e87a3da54fbbaeb9bda0) @@ -113,6 +113,11 @@ public FailureMechanismSectionAssembly TailorMadeAssessmentAssemblyOutput { get; set; } /// + /// Gets the result type of the tailor made assessment calculation. + /// + public TailorMadeAssessmentResultType TailorMadeAssessmentResultInput { get; private set; } + + /// /// Gets the result type of the tailor made assessment calculation with probability or detailed calculation result. /// public TailorMadeAssessmentProbabilityAndDetailedCalculationResultType TailorMadeAssessmentProbabilityAndDetailedCalculationResultInput { get; private set; } @@ -140,7 +145,7 @@ /// /// Gets the category group input of the tailor made assessment calculation. /// - public FailureMechanismSectionAssemblyCategoryGroup TailorMadeAssessmentResultInput { get; private set; } + public FailureMechanismSectionAssemblyCategoryGroup TailorMadeAssessmentGroupInput { get; private set; } /// /// Gets or sets the output of the tailor made assembly calculation. @@ -302,6 +307,23 @@ return DetailedAssessmentAssemblyGroupOutput.Value; } + public FailureMechanismSectionAssemblyCategoryGroup AssembleTailorMadeAssessment(TailorMadeAssessmentResultType tailorMadeAssessmentResult) + { + if (ThrowExceptionOnCalculate) + { + throw new FailureMechanismSectionAssemblyCalculatorException("Message", new Exception()); + } + + TailorMadeAssessmentResultInput = tailorMadeAssessmentResult; + + if (TailorMadeAssemblyCategoryOutput == null) + { + TailorMadeAssemblyCategoryOutput = FailureMechanismSectionAssemblyCategoryGroup.IIv; + } + + return TailorMadeAssemblyCategoryOutput.Value; + } + public FailureMechanismSectionAssembly AssembleTailorMadeAssessment(TailorMadeAssessmentProbabilityAndDetailedCalculationResultType tailorMadeAssessmentResult, double probability, IEnumerable categories) @@ -362,7 +384,7 @@ throw new FailureMechanismSectionAssemblyCalculatorException("Message", new Exception()); } - TailorMadeAssessmentResultInput = tailorMadeAssessmentResult; + TailorMadeAssessmentGroupInput = tailorMadeAssessmentResult; if (TailorMadeAssemblyCategoryOutput == null) { Index: Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Data.Test/GrassCoverErosionOutwardsFailureMechanismSectionResultAssemblyFactoryTest.cs =================================================================== diff -u -r536ac64b0b82539b97aaaadf74c62631dc809da6 -rdfe89063627bf9208166e87a3da54fbbaeb9bda0 --- Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Data.Test/GrassCoverErosionOutwardsFailureMechanismSectionResultAssemblyFactoryTest.cs (.../GrassCoverErosionOutwardsFailureMechanismSectionResultAssemblyFactoryTest.cs) (revision 536ac64b0b82539b97aaaadf74c62631dc809da6) +++ Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Data.Test/GrassCoverErosionOutwardsFailureMechanismSectionResultAssemblyFactoryTest.cs (.../GrassCoverErosionOutwardsFailureMechanismSectionResultAssemblyFactoryTest.cs) (revision dfe89063627bf9208166e87a3da54fbbaeb9bda0) @@ -246,7 +246,7 @@ GrassCoverErosionOutwardsFailureMechanismSectionResultAssemblyFactory.AssembleTailorMadeAssessment(sectionResult); // Assert - Assert.AreEqual(sectionResult.TailorMadeAssessmentResult, calculator.TailorMadeAssessmentResultInput); + Assert.AreEqual(sectionResult.TailorMadeAssessmentResult, calculator.TailorMadeAssessmentGroupInput); } } Index: Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Data.Test/StabilityStoneCoverFailureMechanismSectionResultAssemblyFactoryTest.cs =================================================================== diff -u -rae5d5bb9f321fe3a39e8de3a04cc077be9f279d3 -rdfe89063627bf9208166e87a3da54fbbaeb9bda0 --- Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Data.Test/StabilityStoneCoverFailureMechanismSectionResultAssemblyFactoryTest.cs (.../StabilityStoneCoverFailureMechanismSectionResultAssemblyFactoryTest.cs) (revision ae5d5bb9f321fe3a39e8de3a04cc077be9f279d3) +++ Ringtoets/StabilityStoneCover/test/Ringtoets.StabilityStoneCover.Data.Test/StabilityStoneCoverFailureMechanismSectionResultAssemblyFactoryTest.cs (.../StabilityStoneCoverFailureMechanismSectionResultAssemblyFactoryTest.cs) (revision dfe89063627bf9208166e87a3da54fbbaeb9bda0) @@ -246,7 +246,7 @@ StabilityStoneCoverFailureMechanismSectionResultAssemblyFactory.AssembleTailorMadeAssessment(sectionResult); // Assert - Assert.AreEqual(sectionResult.TailorMadeAssessmentResult, calculator.TailorMadeAssessmentResultInput); + Assert.AreEqual(sectionResult.TailorMadeAssessmentResult, calculator.TailorMadeAssessmentGroupInput); } } Index: Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Data.Test/WaveImpactAsphaltCoverFailureMechanismSectionResultAssemblyFactoryTest.cs =================================================================== diff -u -rae5d5bb9f321fe3a39e8de3a04cc077be9f279d3 -rdfe89063627bf9208166e87a3da54fbbaeb9bda0 --- Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Data.Test/WaveImpactAsphaltCoverFailureMechanismSectionResultAssemblyFactoryTest.cs (.../WaveImpactAsphaltCoverFailureMechanismSectionResultAssemblyFactoryTest.cs) (revision ae5d5bb9f321fe3a39e8de3a04cc077be9f279d3) +++ Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Data.Test/WaveImpactAsphaltCoverFailureMechanismSectionResultAssemblyFactoryTest.cs (.../WaveImpactAsphaltCoverFailureMechanismSectionResultAssemblyFactoryTest.cs) (revision dfe89063627bf9208166e87a3da54fbbaeb9bda0) @@ -246,7 +246,7 @@ WaveImpactAsphaltCoverFailureMechanismSectionResultAssemblyFactory.AssembleTailorMadeAssessment(sectionResult); // Assert - Assert.AreEqual(sectionResult.TailorMadeAssessmentResult, calculator.TailorMadeAssessmentResultInput); + Assert.AreEqual(sectionResult.TailorMadeAssessmentResult, calculator.TailorMadeAssessmentGroupInput); } }