Index: Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Categories/AssemblyCategoriesCalculator.cs =================================================================== diff -u -r4160a30705d657946461b76a5c443119cb78d437 -r779534c383f7501bb19363a7fbf4e0acd60ab379 --- Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Categories/AssemblyCategoriesCalculator.cs (.../AssemblyCategoriesCalculator.cs) (revision 4160a30705d657946461b76a5c443119cb78d437) +++ Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Categories/AssemblyCategoriesCalculator.cs (.../AssemblyCategoriesCalculator.cs) (revision 779534c383f7501bb19363a7fbf4e0acd60ab379) @@ -60,10 +60,17 @@ throw new ArgumentNullException(nameof(input)); } - IAssemblyCategoriesKernel kernel = factory.CreateAssemblyCategoriesKernel(); - CalculationOutput output = kernel.Calculate(input.SignalingNorm, input.LowerBoundaryNorm); + try + { + IAssemblyCategoriesKernel kernel = factory.CreateAssemblyCategoriesKernel(); + CalculationOutput output = kernel.Calculate(input.SignalingNorm, input.LowerBoundaryNorm); - return AssemblyCategoryResultCreator.CreateAssessmentSectionAssemblyCategoryResult(output); + return AssemblyCategoryResultCreator.CreateAssessmentSectionAssemblyCategoryResult(output); + } + catch (AssemblyCategoriesKernelWrapperException e) + { + throw new AssemblyCategoriesCalculatorException(e.Message, e); + } } } } \ No newline at end of file Index: Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Categories/IAssemblyCategoriesCalculator.cs =================================================================== diff -u -r4160a30705d657946461b76a5c443119cb78d437 -r779534c383f7501bb19363a7fbf4e0acd60ab379 --- Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Categories/IAssemblyCategoriesCalculator.cs (.../IAssemblyCategoriesCalculator.cs) (revision 4160a30705d657946461b76a5c443119cb78d437) +++ Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Categories/IAssemblyCategoriesCalculator.cs (.../IAssemblyCategoriesCalculator.cs) (revision 779534c383f7501bb19363a7fbf4e0acd60ab379) @@ -47,6 +47,8 @@ /// . /// Thrown when /// is null. + /// Thrown when an error occurs + /// when performing the calculation. IEnumerable CalculateAssessmentSectionCategories( AssemblyCategoriesCalculatorInput input); } Index: Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.Test/Calculators/Categories/AssemblyCategoriesCalculatorTest.cs =================================================================== diff -u -r4160a30705d657946461b76a5c443119cb78d437 -r779534c383f7501bb19363a7fbf4e0acd60ab379 --- Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.Test/Calculators/Categories/AssemblyCategoriesCalculatorTest.cs (.../AssemblyCategoriesCalculatorTest.cs) (revision 4160a30705d657946461b76a5c443119cb78d437) +++ Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.Test/Calculators/Categories/AssemblyCategoriesCalculatorTest.cs (.../AssemblyCategoriesCalculatorTest.cs) (revision 779534c383f7501bb19363a7fbf4e0acd60ab379) @@ -31,6 +31,7 @@ using Ringtoets.AssemblyTool.Data.Output; using Ringtoets.AssemblyTool.KernelWrapper.Calculators.Categories; using Ringtoets.AssemblyTool.KernelWrapper.Kernels; +using Ringtoets.AssemblyTool.KernelWrapper.Kernels.Categories; using Ringtoets.AssemblyTool.KernelWrapper.TestUtil.Kernels; using Ringtoets.AssemblyTool.KernelWrapper.TestUtil.Kernels.Categories; @@ -137,6 +138,33 @@ } } + [Test] + public void CalculateAssessmentSectionCategories_KernelThrowsAssemblyCategoriesKernelWrapperException_ThrowAssemblyCategoriesCalculatorException() + { + // Setup + var random = new Random(11); + double lowerBoundaryNorm = random.NextDouble(); + double signalingNorm = random.NextDouble(); + var input = new AssemblyCategoriesCalculatorInput(signalingNorm, lowerBoundaryNorm); + + using (new AssemblyToolKernelFactoryConfig()) + { + var factory = (TestAssemblyToolKernelFactory) AssemblyToolKernelWrapperFactory.Instance; + AssemblyCategoriesKernelStub kernel = factory.LastCreatedAssemblyCategoriesKernel; + kernel.ThrowExceptionOnCalculate = true; + + var calculator = new AssemblyCategoriesCalculator(factory); + + // Call + TestDelegate test = () => calculator.CalculateAssessmentSectionCategories(input); + + // Assert + var exception = Assert.Throws(test); + Assert.IsInstanceOf(exception.InnerException); + Assert.AreEqual(exception.InnerException.Message, exception.Message); + } + } + private static CalculationOutput CreateKernelOutput() { var random = new Random(11);