Index: Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Assembly/AssessmentSectionAssemblyCalculator.cs =================================================================== diff -u -r7b5cd0bee4661be52ad068e2c08a3bbf4d7d5b3b -ra843f40364553b8695b22639431fa1176fc7ee45 --- Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Assembly/AssessmentSectionAssemblyCalculator.cs (.../AssessmentSectionAssemblyCalculator.cs) (revision 7b5cd0bee4661be52ad068e2c08a3bbf4d7d5b3b) +++ Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Assembly/AssessmentSectionAssemblyCalculator.cs (.../AssessmentSectionAssemblyCalculator.cs) (revision a843f40364553b8695b22639431fa1176fc7ee45) @@ -88,13 +88,17 @@ } } - public void AssembleAssessmentSection(AssessmentSectionAssemblyCategoryGroup failureMechanismsWithoutProbability, AssessmentSectionAssembly failureMechanismsWithProbability) + public AssessmentSectionAssemblyCategoryGroup AssembleAssessmentSection(AssessmentSectionAssemblyCategoryGroup failureMechanismsWithoutProbability, + AssessmentSectionAssembly failureMechanismsWithProbability) { try { IAssessmentGradeAssembler kernel = factory.CreateAssessmentSectionAssemblyKernel(); - kernel.AssembleAssessmentSectionWbi2C1(AssessmentSectionAssemblyInputCreator.CreateAssessementSectionAssemblyResult(failureMechanismsWithoutProbability), - AssessmentSectionAssemblyInputCreator.CreateAssessementSectionAssemblyResult(failureMechanismsWithProbability)); + AssessmentSectionAssemblyResult output = kernel.AssembleAssessmentSectionWbi2C1( + AssessmentSectionAssemblyInputCreator.CreateAssessementSectionAssemblyResult(failureMechanismsWithoutProbability), + AssessmentSectionAssemblyInputCreator.CreateAssessementSectionAssemblyResult(failureMechanismsWithProbability)); + + return AssessmentSectionAssemblyCreator.CreateAssessmentSectionAssembly(output).Group; } catch (Exception e) { Index: Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Assembly/IAssessmentSectionAssemblyCalculator.cs =================================================================== diff -u -rda04f8c4fb1d538c00f175f74d4b26217f68d3d5 -ra843f40364553b8695b22639431fa1176fc7ee45 --- Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Assembly/IAssessmentSectionAssemblyCalculator.cs (.../IAssessmentSectionAssemblyCalculator.cs) (revision da04f8c4fb1d538c00f175f74d4b26217f68d3d5) +++ Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Assembly/IAssessmentSectionAssemblyCalculator.cs (.../IAssessmentSectionAssemblyCalculator.cs) (revision a843f40364553b8695b22639431fa1176fc7ee45) @@ -50,5 +50,18 @@ /// Thrown when /// an error occurs when performing the assembly. AssessmentSectionAssemblyCategoryGroup AssembleFailureMechanisms(IEnumerable input); + + /// + /// Assembles the assessment section for the given inputs. + /// + /// The assembly result for + /// failure mechanisms without probability to assemble for. + /// The assembly result for + /// failure mechanisms with probability to assemble for. + /// An . + /// Thrown when + /// an error occurs when performing the assembly. + AssessmentSectionAssemblyCategoryGroup AssembleAssessmentSection(AssessmentSectionAssemblyCategoryGroup failureMechanismsWithoutProbability, + AssessmentSectionAssembly failureMechanismsWithProbability); } } \ No newline at end of file Index: Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.Test/Calculators/Assembly/AssessmentSectionAssemblyCalculatorTest.cs =================================================================== diff -u -r7b5cd0bee4661be52ad068e2c08a3bbf4d7d5b3b -ra843f40364553b8695b22639431fa1176fc7ee45 --- Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.Test/Calculators/Assembly/AssessmentSectionAssemblyCalculatorTest.cs (.../AssessmentSectionAssemblyCalculatorTest.cs) (revision 7b5cd0bee4661be52ad068e2c08a3bbf4d7d5b3b) +++ Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.Test/Calculators/Assembly/AssessmentSectionAssemblyCalculatorTest.cs (.../AssessmentSectionAssemblyCalculatorTest.cs) (revision a843f40364553b8695b22639431fa1176fc7ee45) @@ -365,6 +365,7 @@ { var factory = (TestAssemblyToolKernelFactory) AssemblyToolKernelFactory.Instance; AssessmentSectionAssemblyKernelStub kernel = factory.LastCreatedAssessmentSectionAssemblyKernel; + kernel.AssessmentSectionAssemblyResult = new AssessmentSectionAssemblyResult(random.NextEnumValue()); var calculator = new AssessmentSectionAssemblyCalculator(factory); @@ -388,6 +389,90 @@ } } + [Test] + public void AssembleAssessmentSection_KernelWithCompleteOutput_OutputCorrectlyReturnedByCalculator() + { + // Setup + var random = new Random(21); + var failureMechanismsWithProbability = new AssessmentSectionAssembly(random.NextDouble(), + random.NextEnumValue()); + var failureMechanismsWithoutProbability = random.NextEnumValue(); + + using (new AssemblyToolKernelFactoryConfig()) + { + var factory = (TestAssemblyToolKernelFactory) AssemblyToolKernelFactory.Instance; + AssessmentSectionAssemblyKernelStub kernel = factory.LastCreatedAssessmentSectionAssemblyKernel; + kernel.AssessmentSectionAssemblyResult = new AssessmentSectionAssemblyResult(random.NextEnumValue()); + + var calculator = new AssessmentSectionAssemblyCalculator(factory); + + // Call + AssessmentSectionAssemblyCategoryGroup assembly = calculator.AssembleAssessmentSection(failureMechanismsWithoutProbability, + failureMechanismsWithProbability); + + // Assert + Assert.AreEqual(AssemblyCategoryCreator.CreateAssessmentSectionAssemblyCategory(kernel.AssessmentGradeResult), assembly); + } + } + + [Test] + public void AssembleAssessmentSection_KernelWithInvalidOutput_ThrowsAssessmentSectionAssemblyCalculatorException() + { + // Setup + var random = new Random(21); + var failureMechanismsWithProbability = new AssessmentSectionAssembly(random.NextDouble(), + random.NextEnumValue()); + var failureMechanismsWithoutProbability = random.NextEnumValue(); + + using (new AssemblyToolKernelFactoryConfig()) + { + var factory = (TestAssemblyToolKernelFactory) AssemblyToolKernelFactory.Instance; + AssessmentSectionAssemblyKernelStub kernel = factory.LastCreatedAssessmentSectionAssemblyKernel; + kernel.AssessmentSectionAssemblyResult = new AssessmentSectionAssemblyResult((EAssessmentGrade) 99); + + var calculator = new AssessmentSectionAssemblyCalculator(factory); + + // Call + TestDelegate test = () => calculator.AssembleAssessmentSection(failureMechanismsWithoutProbability, + failureMechanismsWithProbability); + + // Assert + var exception = Assert.Throws(test); + Exception innerException = exception.InnerException; + Assert.IsInstanceOf(innerException); + Assert.AreEqual(innerException.Message, exception.Message); + } + } + + [Test] + public void AssembleAssessmentSection_KernelThrowsException_ThrowsAssessmentSectionAssemblyCalculatorException() + { + // Setup + var random = new Random(21); + var failureMechanismsWithProbability = new AssessmentSectionAssembly(random.NextDouble(), + random.NextEnumValue()); + var failureMechanismsWithoutProbability = random.NextEnumValue(); + + using (new AssemblyToolKernelFactoryConfig()) + { + var factory = (TestAssemblyToolKernelFactory) AssemblyToolKernelFactory.Instance; + AssessmentSectionAssemblyKernelStub kernel = factory.LastCreatedAssessmentSectionAssemblyKernel; + kernel.ThrowException = true; + + var calculator = new AssessmentSectionAssemblyCalculator(factory); + + // Call + TestDelegate test = () => calculator.AssembleAssessmentSection(failureMechanismsWithoutProbability, + failureMechanismsWithProbability); + + // Assert + var exception = Assert.Throws(test); + Exception innerException = exception.InnerException; + Assert.IsInstanceOf(innerException); + Assert.AreEqual(innerException.Message, exception.Message); + } + } + private static AssemblyCategoriesInput CreateAssemblyCategoriesInput() { var random = new Random(21);