Index: Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Assembly/AssessmentSectionAssemblyCalculator.cs =================================================================== diff -u -r73961743fdbd1f57320393a37d4b551dc56ff47d -rda04f8c4fb1d538c00f175f74d4b26217f68d3d5 --- Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Assembly/AssessmentSectionAssemblyCalculator.cs (.../AssessmentSectionAssemblyCalculator.cs) (revision 73961743fdbd1f57320393a37d4b551dc56ff47d) +++ Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Assembly/AssessmentSectionAssemblyCalculator.cs (.../AssessmentSectionAssemblyCalculator.cs) (revision da04f8c4fb1d538c00f175f74d4b26217f68d3d5) @@ -52,31 +52,35 @@ this.factory = factory; } - public void AssembleFailureMechanisms(IEnumerable input, - AssemblyCategoriesInput assemblyCategoriesInput) + public AssessmentSectionAssembly AssembleFailureMechanisms(IEnumerable input, + AssemblyCategoriesInput assemblyCategoriesInput) { try { IAssessmentGradeAssembler kernel = factory.CreateAssessmentSectionAssemblyKernel(); - kernel.AssembleAssessmentSectionWbi2B1( + AssessmentSectionAssemblyResult output = kernel.AssembleAssessmentSectionWbi2B1( new AssessmentSection(1, assemblyCategoriesInput.SignalingNorm, assemblyCategoriesInput.LowerLimitNorm), input.Select(AssessmentSectionAssemblyInputCreator.CreateFailureMechanismAssemblyResult).ToArray(), false); + + return AssessmentSectionAssemblyCreator.CreateAssessmentSectionAssembly(output); } catch (Exception e) { throw new AssessmentSectionAssemblyCalculatorException(e.Message, e); } } - public void AssembleFailureMechanisms(IEnumerable input) + public AssessmentSectionAssemblyCategoryGroup AssembleFailureMechanisms(IEnumerable input) { try { IAssessmentGradeAssembler kernel = factory.CreateAssessmentSectionAssemblyKernel(); - kernel.AssembleAssessmentSectionWbi2A1( + EAssessmentGrade output = kernel.AssembleAssessmentSectionWbi2A1( input.Select(AssessmentSectionAssemblyInputCreator.CreateFailureMechanismAssemblyResult).ToArray(), false); + + return AssemblyCategoryCreator.CreateAssessmentSectionAssemblyCategory(output); } catch (Exception e) { Index: Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Assembly/IAssessmentSectionAssemblyCalculator.cs =================================================================== diff -u -r73961743fdbd1f57320393a37d4b551dc56ff47d -rda04f8c4fb1d538c00f175f74d4b26217f68d3d5 --- Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Assembly/IAssessmentSectionAssemblyCalculator.cs (.../IAssessmentSectionAssemblyCalculator.cs) (revision 73961743fdbd1f57320393a37d4b551dc56ff47d) +++ Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Assembly/IAssessmentSectionAssemblyCalculator.cs (.../IAssessmentSectionAssemblyCalculator.cs) (revision da04f8c4fb1d538c00f175f74d4b26217f68d3d5) @@ -35,18 +35,20 @@ /// The collection of failure mechanism assemblies to assemble for. /// The object containing the input parameters for /// performing the assembly. + /// An . /// Thrown when /// an error occurs when performing the assembly. - void AssembleFailureMechanisms(IEnumerable input, - AssemblyCategoriesInput assemblyCategoriesInput); + AssessmentSectionAssembly AssembleFailureMechanisms(IEnumerable input, + AssemblyCategoriesInput assemblyCategoriesInput); /// /// Assembles the failure mechanisms for the given . /// /// The collection of failure mechanism assembly category groups /// to assemble for. + /// An . /// Thrown when /// an error occurs when performing the assembly. - void AssembleFailureMechanisms(IEnumerable input); + AssessmentSectionAssemblyCategoryGroup AssembleFailureMechanisms(IEnumerable input); } } \ No newline at end of file Index: Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.Test/Calculators/Assembly/AssessmentSectionAssemblyCalculatorTest.cs =================================================================== diff -u -r73961743fdbd1f57320393a37d4b551dc56ff47d -rda04f8c4fb1d538c00f175f74d4b26217f68d3d5 --- Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.Test/Calculators/Assembly/AssessmentSectionAssemblyCalculatorTest.cs (.../AssessmentSectionAssemblyCalculatorTest.cs) (revision 73961743fdbd1f57320393a37d4b551dc56ff47d) +++ Ringtoets/AssemblyTool/test/Ringtoets.AssemblyTool.KernelWrapper.Test/Calculators/Assembly/AssessmentSectionAssemblyCalculatorTest.cs (.../AssessmentSectionAssemblyCalculatorTest.cs) (revision da04f8c4fb1d538c00f175f74d4b26217f68d3d5) @@ -28,6 +28,7 @@ using Rhino.Mocks; using Ringtoets.AssemblyTool.Data; using Ringtoets.AssemblyTool.KernelWrapper.Calculators.Assembly; +using Ringtoets.AssemblyTool.KernelWrapper.Creators; using Ringtoets.AssemblyTool.KernelWrapper.Kernels; using Ringtoets.AssemblyTool.KernelWrapper.TestUtil.Kernels; using Ringtoets.AssemblyTool.KernelWrapper.TestUtil.Kernels.Assembly; @@ -104,7 +105,8 @@ { var factory = (TestAssemblyToolKernelFactory) AssemblyToolKernelFactory.Instance; AssessmentSectionAssemblyKernelStub kernel = factory.LastCreatedAssessmentSectionAssemblyKernel; - kernel.AssessmentGradeResult = new Random(39).NextEnumValue(); + kernel.AssessmentSectionAssemblyResult = new AssessmentSectionAssemblyResult(random.NextEnumValue(), + random.NextDouble()); var calculator = new AssessmentSectionAssemblyCalculator(factory); @@ -126,6 +128,59 @@ } [Test] + public void AssembleFailureMechanismWithProbability_KernelWithCompleteOutput_OutputCorrectlyReturnedByCalculator() + { + // Setup + var random = new Random(39); + + using (new AssemblyToolKernelFactoryConfig()) + { + var factory = (TestAssemblyToolKernelFactory) AssemblyToolKernelFactory.Instance; + AssessmentSectionAssemblyKernelStub kernel = factory.LastCreatedAssessmentSectionAssemblyKernel; + kernel.AssessmentSectionAssemblyResult = new AssessmentSectionAssemblyResult(random.NextEnumValue(), + random.NextDouble()); + + var calculator = new AssessmentSectionAssemblyCalculator(factory); + + // Call + AssessmentSectionAssembly assembly = calculator.AssembleFailureMechanisms(Enumerable.Empty(), + CreateAssemblyCategoriesInput()); + + // Assert + AssessmentSectionAssemblyResult expectedResult = kernel.AssessmentSectionAssemblyResult; + Assert.AreEqual(expectedResult.FailureProbability, assembly.Probability); + Assert.AreEqual(AssemblyCategoryCreator.CreateAssessmentSectionAssemblyCategory(expectedResult.Category), assembly.Group); + } + } + + [Test] + public void AssembleFailureMechanismWithProbability_KernelWithInvalidOutput_ThrowsAssessmentSectionAssemblyCalculatorException() + { + // Setup + var random = new Random(39); + + using (new AssemblyToolKernelFactoryConfig()) + { + var factory = (TestAssemblyToolKernelFactory) AssemblyToolKernelFactory.Instance; + AssessmentSectionAssemblyKernelStub kernel = factory.LastCreatedAssessmentSectionAssemblyKernel; + kernel.AssessmentSectionAssemblyResult = new AssessmentSectionAssemblyResult((EAssessmentGrade) 99, + random.NextDouble()); + + var calculator = new AssessmentSectionAssemblyCalculator(factory); + + // Call + TestDelegate test = () => calculator.AssembleFailureMechanisms(Enumerable.Empty(), + CreateAssemblyCategoriesInput()); + + // Assert + var exception = Assert.Throws(test); + Exception innerException = exception.InnerException; + Assert.IsInstanceOf(innerException); + Assert.AreEqual(innerException.Message, exception.Message); + } + } + + [Test] public void AssembleFailureMechanismsWithProbability_KernelThrowsException_ThrowsAssessmentSectionAssemblyCalculatorException() { // Setup @@ -154,13 +209,13 @@ // Setup using (new AssemblyToolKernelFactoryConfig()) { - var factory = (TestAssemblyToolKernelFactory)AssemblyToolKernelFactory.Instance; + var factory = (TestAssemblyToolKernelFactory) AssemblyToolKernelFactory.Instance; var calculator = new AssessmentSectionAssemblyCalculator(factory); // Call TestDelegate test = () => calculator.AssembleFailureMechanisms(new[] { - (FailureMechanismAssemblyCategoryGroup)99 + (FailureMechanismAssemblyCategoryGroup) 99 }); // Assert @@ -180,7 +235,7 @@ using (new AssemblyToolKernelFactoryConfig()) { - var factory = (TestAssemblyToolKernelFactory)AssemblyToolKernelFactory.Instance; + var factory = (TestAssemblyToolKernelFactory) AssemblyToolKernelFactory.Instance; AssessmentSectionAssemblyKernelStub kernel = factory.LastCreatedAssessmentSectionAssemblyKernel; kernel.AssessmentGradeResult = new Random(39).NextEnumValue(); @@ -202,12 +257,57 @@ } [Test] + public void AssembleFailureMechanismWithoutProbability_KernelWithCompleteOutput_OutputCorrectlyReturnedByCalculator() + { + // Setup + var random = new Random(39); + + using (new AssemblyToolKernelFactoryConfig()) + { + var factory = (TestAssemblyToolKernelFactory) AssemblyToolKernelFactory.Instance; + AssessmentSectionAssemblyKernelStub kernel = factory.LastCreatedAssessmentSectionAssemblyKernel; + kernel.AssessmentGradeResult = random.NextEnumValue(); + + var calculator = new AssessmentSectionAssemblyCalculator(factory); + + // Call + AssessmentSectionAssemblyCategoryGroup assembly = calculator.AssembleFailureMechanisms(Enumerable.Empty()); + + // Assert + Assert.AreEqual(AssemblyCategoryCreator.CreateAssessmentSectionAssemblyCategory(kernel.AssessmentGradeResult), assembly); + } + } + + [Test] + public void AssembleFailureMechanismWithoutProbability_KernelWithInvalidOutput_ThrowsAssessmentSectionAssemblyCalculatorException() + { + // Setup + using (new AssemblyToolKernelFactoryConfig()) + { + var factory = (TestAssemblyToolKernelFactory) AssemblyToolKernelFactory.Instance; + AssessmentSectionAssemblyKernelStub kernel = factory.LastCreatedAssessmentSectionAssemblyKernel; + kernel.AssessmentGradeResult = (EAssessmentGrade) 99; + + var calculator = new AssessmentSectionAssemblyCalculator(factory); + + // Call + TestDelegate test = () => calculator.AssembleFailureMechanisms(Enumerable.Empty()); + + // Assert + var exception = Assert.Throws(test); + Exception innerException = exception.InnerException; + Assert.IsInstanceOf(innerException); + Assert.AreEqual(innerException.Message, exception.Message); + } + } + + [Test] public void AssembleFailureMechanismsWithoutProbability_KernelThrowsException_ThrowsAssessmentSectionAssemblyCalculatorException() { // Setup using (new AssemblyToolKernelFactoryConfig()) { - var factory = (TestAssemblyToolKernelFactory)AssemblyToolKernelFactory.Instance; + var factory = (TestAssemblyToolKernelFactory) AssemblyToolKernelFactory.Instance; AssessmentSectionAssemblyKernelStub kernel = factory.LastCreatedAssessmentSectionAssemblyKernel; kernel.ThrowException = true;