Index: Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Assembly/AssessmentSectionAssemblyCalculator.cs =================================================================== diff -u -rda04f8c4fb1d538c00f175f74d4b26217f68d3d5 -r7b5cd0bee4661be52ad068e2c08a3bbf4d7d5b3b --- Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Assembly/AssessmentSectionAssemblyCalculator.cs (.../AssessmentSectionAssemblyCalculator.cs) (revision da04f8c4fb1d538c00f175f74d4b26217f68d3d5) +++ Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Assembly/AssessmentSectionAssemblyCalculator.cs (.../AssessmentSectionAssemblyCalculator.cs) (revision 7b5cd0bee4661be52ad068e2c08a3bbf4d7d5b3b) @@ -87,5 +87,19 @@ throw new AssessmentSectionAssemblyCalculatorException(e.Message, e); } } + + public void AssembleAssessmentSection(AssessmentSectionAssemblyCategoryGroup failureMechanismsWithoutProbability, AssessmentSectionAssembly failureMechanismsWithProbability) + { + try + { + IAssessmentGradeAssembler kernel = factory.CreateAssessmentSectionAssemblyKernel(); + kernel.AssembleAssessmentSectionWbi2C1(AssessmentSectionAssemblyInputCreator.CreateAssessementSectionAssemblyResult(failureMechanismsWithoutProbability), + AssessmentSectionAssemblyInputCreator.CreateAssessementSectionAssemblyResult(failureMechanismsWithProbability)); + } + catch (Exception e) + { + throw new AssessmentSectionAssemblyCalculatorException(e.Message, e); + } + } } } \ No newline at end of file Index: Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.Test/Calculators/Assembly/AssessmentSectionAssemblyCalculatorTest.cs =================================================================== diff -u -rda04f8c4fb1d538c00f175f74d4b26217f68d3d5 -r7b5cd0bee4661be52ad068e2c08a3bbf4d7d5b3b --- Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.Test/Calculators/Assembly/AssessmentSectionAssemblyCalculatorTest.cs (.../AssessmentSectionAssemblyCalculatorTest.cs) (revision da04f8c4fb1d538c00f175f74d4b26217f68d3d5) +++ Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.Test/Calculators/Assembly/AssessmentSectionAssemblyCalculatorTest.cs (.../AssessmentSectionAssemblyCalculatorTest.cs) (revision 7b5cd0bee4661be52ad068e2c08a3bbf4d7d5b3b) @@ -324,6 +324,70 @@ } } + [Test] + [TestCase(AssessmentSectionAssemblyCategoryGroup.None, (AssessmentSectionAssemblyCategoryGroup) 99, TestName = "Invalid Input Failure Mechanisms With Probability")] + [TestCase((AssessmentSectionAssemblyCategoryGroup) 99, AssessmentSectionAssemblyCategoryGroup.None, TestName = "Invalid Input Failure Mechanisms Without Probability")] + public void AssembleAssessmentSection_WithInvalidInput_ThrowsAssessmentSectionAssemblyCalculatorException( + AssessmentSectionAssemblyCategoryGroup categoryGroupInput1, + AssessmentSectionAssemblyCategoryGroup categoryGroupInput2) + { + // Setup + var random = new Random(39); + var failureMechanismsWithProbability = new AssessmentSectionAssembly(random.NextDouble(), + categoryGroupInput1); + + using (new AssemblyToolKernelFactoryConfig()) + { + var factory = (TestAssemblyToolKernelFactory) AssemblyToolKernelFactory.Instance; + var calculator = new AssessmentSectionAssemblyCalculator(factory); + + // Call + TestDelegate test = () => calculator.AssembleAssessmentSection(categoryGroupInput2, failureMechanismsWithProbability); + + // Assert + var exception = Assert.Throws(test); + Exception innerException = exception.InnerException; + Assert.IsInstanceOf(innerException); + Assert.AreEqual(innerException.Message, exception.Message); + } + } + + [Test] + public void AssembleAssessmentSection_WithValidInput_InputCorrectlySetToKernel() + { + // Setup + var random = new Random(39); + var failureMechanismsWithProbability = new AssessmentSectionAssembly(random.NextDouble(), + random.NextEnumValue()); + var failureMechanismsWithoutProbability = random.NextEnumValue(); + + using (new AssemblyToolKernelFactoryConfig()) + { + var factory = (TestAssemblyToolKernelFactory) AssemblyToolKernelFactory.Instance; + AssessmentSectionAssemblyKernelStub kernel = factory.LastCreatedAssessmentSectionAssemblyKernel; + + var calculator = new AssessmentSectionAssemblyCalculator(factory); + + // Call + calculator.AssembleAssessmentSection(failureMechanismsWithoutProbability, failureMechanismsWithProbability); + + // Assert + AssessmentSectionAssemblyResult actualKernelInputNoFailureProbability = kernel.AssemblyResultNoFailureProbability; + AssessmentSectionAssemblyResult expectedKernelInputNoFailureProbability = + AssessmentSectionAssemblyInputCreator.CreateAssessementSectionAssemblyResult(failureMechanismsWithoutProbability); + Assert.AreEqual(expectedKernelInputNoFailureProbability.Category, actualKernelInputNoFailureProbability.Category); + Assert.AreEqual(expectedKernelInputNoFailureProbability.FailureProbability, + actualKernelInputNoFailureProbability.FailureProbability); + + AssessmentSectionAssemblyResult actualKernelInputFailureProbability = kernel.AssemblyResultWithFailureProbability; + AssessmentSectionAssemblyResult expectedKernelInputFailureProbability = + AssessmentSectionAssemblyInputCreator.CreateAssessementSectionAssemblyResult(failureMechanismsWithProbability); + Assert.AreEqual(expectedKernelInputFailureProbability.Category, actualKernelInputFailureProbability.Category); + Assert.AreEqual(expectedKernelInputFailureProbability.FailureProbability, + actualKernelInputFailureProbability.FailureProbability); + } + } + private static AssemblyCategoriesInput CreateAssemblyCategoriesInput() { var random = new Random(21);