Index: Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Assembly/FailureMechanismSectionAssemblyCalculator.cs =================================================================== diff -u -r674c3bd6247c9d8d5d88125dd91c02260daedd3a -r06c1aba9a480bd2326dc44b61bfb7a95ee5c771d --- Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Assembly/FailureMechanismSectionAssemblyCalculator.cs (.../FailureMechanismSectionAssemblyCalculator.cs) (revision 674c3bd6247c9d8d5d88125dd91c02260daedd3a) +++ Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Assembly/FailureMechanismSectionAssemblyCalculator.cs (.../FailureMechanismSectionAssemblyCalculator.cs) (revision 06c1aba9a480bd2326dc44b61bfb7a95ee5c771d) @@ -240,6 +240,22 @@ } } + public FailureMechanismSectionAssemblyCategoryGroup AssembleTailorMadeAssessment(FailureMechanismSectionAssemblyCategoryGroup tailorMadeAssessmentResult) + { + try + { + IFailureMechanismSectionAssemblyCalculatorKernel kernel = factory.CreateFailureMechanismSectionAssemblyKernel(); + CalculationOutput output = kernel.TailorMadeAssessmentDirectFailureMechanisms( + FailureMechanismSectionAssemblyCalculatorInputCreator.ConverTailorMadeFailureMechanismSectionAssemblyCategoryGroup( + tailorMadeAssessmentResult)); + return FailureMechanismSectionAssemblyCreator.ConvertFailureMechanismSectionCategoryGroup(output.Result); + } + catch (Exception e) + { + throw new FailureMechanismSectionAssemblyCalculatorException(e.Message, e); + } + } + public FailureMechanismSectionAssembly AssembleCombined(FailureMechanismSectionAssembly simpleAssembly, FailureMechanismSectionAssembly detailedAssembly, FailureMechanismSectionAssembly tailorMadeAssembly) Index: Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Assembly/IFailureMechanismSectionAssemblyCalculator.cs =================================================================== diff -u -r3f68efc446aaae3370b32ba75825e7735f71e742 -r06c1aba9a480bd2326dc44b61bfb7a95ee5c771d --- Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Assembly/IFailureMechanismSectionAssemblyCalculator.cs (.../IFailureMechanismSectionAssemblyCalculator.cs) (revision 3f68efc446aaae3370b32ba75825e7735f71e742) +++ Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Assembly/IFailureMechanismSectionAssemblyCalculator.cs (.../IFailureMechanismSectionAssemblyCalculator.cs) (revision 06c1aba9a480bd2326dc44b61bfb7a95ee5c771d) @@ -148,6 +148,15 @@ double n); /// + /// Assembles the tailor made assessment based on the input parameters. + /// + /// The tailor made assessment result. + /// A . + /// Thrown when + /// an error occurs when performing the assembly. + FailureMechanismSectionAssemblyCategoryGroup AssembleTailorMadeAssessment(FailureMechanismSectionAssemblyCategoryGroup tailorMadeAssessmentResult); + + /// /// Assembles the combined assembly based on the input parameters. /// /// The simple assembly. Index: Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.Test/Calculators/Assembly/FailureMechanismSectionAssemblyCalculatorTest.cs =================================================================== diff -u -rd775bd7e252e247fc68b3d1bbbd1d79a11523e27 -r06c1aba9a480bd2326dc44b61bfb7a95ee5c771d --- Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.Test/Calculators/Assembly/FailureMechanismSectionAssemblyCalculatorTest.cs (.../FailureMechanismSectionAssemblyCalculatorTest.cs) (revision d775bd7e252e247fc68b3d1bbbd1d79a11523e27) +++ Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.Test/Calculators/Assembly/FailureMechanismSectionAssemblyCalculatorTest.cs (.../FailureMechanismSectionAssemblyCalculatorTest.cs) (revision 06c1aba9a480bd2326dc44b61bfb7a95ee5c771d) @@ -1388,6 +1388,153 @@ } } + [Test] + public void AssembleTailorMadeAssessmentWithCategoryResult_WithInvalidAssessmentResultTypeEnumInput_ThrowFailureMechanismSectionAssemblyCalculatorException() + { + // Setup + using (new AssemblyToolKernelFactoryConfig()) + { + var factory = (TestAssemblyToolKernelFactory) AssemblyToolKernelFactory.Instance; + var calculator = new FailureMechanismSectionAssemblyCalculator(factory); + + // Call + TestDelegate test = () => calculator.AssembleTailorMadeAssessment((FailureMechanismSectionAssemblyCategoryGroup) 99); + + // Assert + var exception = Assert.Throws(test); + Exception innerException = exception.InnerException; + Assert.IsInstanceOf(innerException); + Assert.AreEqual(innerException.Message, exception.Message); + } + } + + [Test] + public void AssembleTailorMadeAssessmentWithCategoryResult_WithValidInput_InputCorrectlySetToKernel() + { + // Setup + var random = new Random(39); + var categoryGroupResult = random.NextEnumValue(); + + using (new AssemblyToolKernelFactoryConfig()) + { + var factory = (TestAssemblyToolKernelFactory) AssemblyToolKernelFactory.Instance; + FailureMechanismSectionAssemblyKernelStub kernel = factory.LastCreatedFailureMechanismSectionAssemblyKernel; + kernel.FailureMechanismSectionAssemblyCategoryGroup = new CalculationOutput( + FailureMechanismSectionCategoryGroup.Iv); + + var calculator = new FailureMechanismSectionAssemblyCalculator(factory); + + // Call + calculator.AssembleTailorMadeAssessment(categoryGroupResult); + + // Assert + Assert.AreEqual(GetTailorMadeAssessmentResult(categoryGroupResult), kernel.TailorMadeCalculationInputFromCategoryResultInput); + } + } + + [Test] + public void AssembleTailorMadeAssessmentWithCategoryResult_KernelWithCompleteOutput_OutputCorrectlyReturnedByCalculator() + { + // Setup + var random = new Random(39); + + using (new AssemblyToolKernelFactoryConfig()) + { + var factory = (TestAssemblyToolKernelFactory) AssemblyToolKernelFactory.Instance; + FailureMechanismSectionAssemblyKernelStub kernel = factory.LastCreatedFailureMechanismSectionAssemblyKernel; + kernel.FailureMechanismSectionAssemblyCategoryGroup = new CalculationOutput( + FailureMechanismSectionCategoryGroup.Iv); + + var calculator = new FailureMechanismSectionAssemblyCalculator(factory); + + // Call + FailureMechanismSectionAssemblyCategoryGroup assembly = calculator.AssembleTailorMadeAssessment( + random.NextEnumValue()); + + // Assert + Assert.AreEqual(GetGroup(kernel.FailureMechanismSectionAssemblyCategoryGroup.Result), assembly); + } + } + + [Test] + public void AssembleTailorMadeAssessmentWithCategoryResult_KernelWithInvalidOutput_ThrowFailureMechanismSectionAssemblyCalculatorException() + { + // Setup + var random = new Random(39); + + 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( + random.NextEnumValue()); + + // Assert + var exception = Assert.Throws(test); + Exception innerException = exception.InnerException; + Assert.IsInstanceOf(innerException); + Assert.AreEqual(innerException.Message, exception.Message); + } + } + + [Test] + public void AssembleTailorMadeAssessmentWithCategoryResult_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); + } + } + + private static TailorMadeCategoryCalculationResult GetTailorMadeAssessmentResult(FailureMechanismSectionAssemblyCategoryGroup category) + { + switch (category) + { + case FailureMechanismSectionAssemblyCategoryGroup.Iv: + return TailorMadeCategoryCalculationResult.FV; + case FailureMechanismSectionAssemblyCategoryGroup.IIv: + return TailorMadeCategoryCalculationResult.IIv; + case FailureMechanismSectionAssemblyCategoryGroup.IIIv: + return TailorMadeCategoryCalculationResult.IIIv; + case FailureMechanismSectionAssemblyCategoryGroup.IVv: + return TailorMadeCategoryCalculationResult.IVv; + case FailureMechanismSectionAssemblyCategoryGroup.Vv: + return TailorMadeCategoryCalculationResult.Vv; + case FailureMechanismSectionAssemblyCategoryGroup.VIv: + return TailorMadeCategoryCalculationResult.VIv; + case FailureMechanismSectionAssemblyCategoryGroup.VIIv: + return TailorMadeCategoryCalculationResult.NGO; + case FailureMechanismSectionAssemblyCategoryGroup.NotApplicable: + case FailureMechanismSectionAssemblyCategoryGroup.None: + return TailorMadeCategoryCalculationResult.None; + default: + throw new NotSupportedException(); + } + } + #endregion #region Combined Assembly