Index: Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Categories/IAssemblyCategoriesCalculator.cs =================================================================== diff -u -rb46cba3269d292e5ca3374ec0f75810686cf3ec6 -r77413ce11244a9aa8a12fd50aa8cee99bfe54476 --- Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Categories/IAssemblyCategoriesCalculator.cs (.../IAssemblyCategoriesCalculator.cs) (revision b46cba3269d292e5ca3374ec0f75810686cf3ec6) +++ Ringtoets/AssemblyTool/src/Ringtoets.AssemblyTool.KernelWrapper/Calculators/Categories/IAssemblyCategoriesCalculator.cs (.../IAssemblyCategoriesCalculator.cs) (revision 77413ce11244a9aa8a12fd50aa8cee99bfe54476) @@ -57,7 +57,7 @@ double signalingNorm, double lowerLimitNorm, double probabilityDistributionFactor, double n); /// - /// Performs the calculation for getting the failure mechanism section categories. + /// Performs the calculation for getting the geotechnic failure mechanism section categories. /// /// The signaling norm to calculate with. /// The lower limit norm to calculate with. Index: Ringtoets/Common/src/Ringtoets.Common.Data/AssemblyTool/AssemblyToolCategoriesFactory.cs =================================================================== diff -u -r18fd05a902f0f8a73d93947f0737a91ad86aa0af -r77413ce11244a9aa8a12fd50aa8cee99bfe54476 --- Ringtoets/Common/src/Ringtoets.Common.Data/AssemblyTool/AssemblyToolCategoriesFactory.cs (.../AssemblyToolCategoriesFactory.cs) (revision 18fd05a902f0f8a73d93947f0737a91ad86aa0af) +++ Ringtoets/Common/src/Ringtoets.Common.Data/AssemblyTool/AssemblyToolCategoriesFactory.cs (.../AssemblyToolCategoriesFactory.cs) (revision 77413ce11244a9aa8a12fd50aa8cee99bfe54476) @@ -41,7 +41,7 @@ /// An of . /// Thrown when an error occurred while creating the categories. public static IEnumerable CreateAssessmentSectionAssemblyCategories(double signalingNorm, double lowerLimitNorm) - { + { IAssemblyCategoriesCalculator calculator = AssemblyToolCalculatorFactory.Instance.CreateAssemblyCategoriesCalculator( AssemblyToolKernelFactory.Instance); @@ -54,5 +54,69 @@ throw new AssemblyFactoryException(e.Message, e); } } + + /// + /// Creates the failure mechanism section assembly categories. + /// + /// The signaling norm to use in the calculation. + /// The lower limit norm to use in the calculation. + /// The probability distribution factor to calculate with. + /// The n to calculate with. + /// An with categories of + /// . + /// Thrown when an error occurred while creating the categories. + public static IEnumerable CreateFailureMechanismSectionAssemblyCategories( + double signalingNorm, + double lowerLimitNorm, + double probabilityDistributionFactor, + double n) + { + IAssemblyCategoriesCalculator calculator = AssemblyToolCalculatorFactory.Instance.CreateAssemblyCategoriesCalculator( + AssemblyToolKernelFactory.Instance); + + try + { + return calculator.CalculateFailureMechanismSectionCategories(signalingNorm, + lowerLimitNorm, + probabilityDistributionFactor, + n); + } + catch (AssemblyCategoriesCalculatorException e) + { + throw new AssemblyFactoryException(e.Message, e); + } + } + + /// + /// Creates the geotechnic failure mechanism section assembly categories. + /// + /// The signaling norm to use in the calculation. + /// The lower limit norm to use in the calculation. + /// The probability distribution factor to calculate with. + /// The n to calculate with. + /// An with categories of + /// . + /// Thrown when an error occurred while creating the categories. + public static IEnumerable CreateGeotechnicFailureMechanismSectionAssemblyCategories( + double signalingNorm, + double lowerLimitNorm, + double probabilityDistributionFactor, + double n) + { + IAssemblyCategoriesCalculator calculator = AssemblyToolCalculatorFactory.Instance.CreateAssemblyCategoriesCalculator( + AssemblyToolKernelFactory.Instance); + + try + { + return calculator.CalculateGeotechnicFailureMechanismSectionCategories(signalingNorm, + lowerLimitNorm, + probabilityDistributionFactor, + n); + } + catch (AssemblyCategoriesCalculatorException e) + { + throw new AssemblyFactoryException(e.Message, e); + } + } } } \ No newline at end of file Index: Ringtoets/Common/test/Ringtoets.Common.Data.Test/AssemblyTool/AssemblyToolCategoriesFactoryTest.cs =================================================================== diff -u -r18fd05a902f0f8a73d93947f0737a91ad86aa0af -r77413ce11244a9aa8a12fd50aa8cee99bfe54476 --- Ringtoets/Common/test/Ringtoets.Common.Data.Test/AssemblyTool/AssemblyToolCategoriesFactoryTest.cs (.../AssemblyToolCategoriesFactoryTest.cs) (revision 18fd05a902f0f8a73d93947f0737a91ad86aa0af) +++ Ringtoets/Common/test/Ringtoets.Common.Data.Test/AssemblyTool/AssemblyToolCategoriesFactoryTest.cs (.../AssemblyToolCategoriesFactoryTest.cs) (revision 77413ce11244a9aa8a12fd50aa8cee99bfe54476) @@ -102,5 +102,167 @@ Assert.AreEqual(exception.InnerException.Message, exception.Message); } } + + [Test] + public void CreateFailureMechanismSectionAssemblyCategories_WithInput_SetsInputOnCalculator() + { + // Setup + var random = new Random(11); + double signalingNorm = random.NextDouble(); + double lowerLimitNorm = random.NextDouble(); + double probabilityDistributionFactor = random.NextDouble(); + double n = random.NextDouble(); + + using (new AssemblyToolCalculatorFactoryConfig()) + { + var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; + AssemblyCategoriesCalculatorStub calculator = calculatorFactory.LastCreatedAssemblyCategoriesCalculator; + + // Call + AssemblyToolCategoriesFactory.CreateFailureMechanismSectionAssemblyCategories(signalingNorm, + lowerLimitNorm, + probabilityDistributionFactor, + n); + + // Assert + Assert.AreEqual(signalingNorm, calculator.SignalingNorm); + Assert.AreEqual(lowerLimitNorm, calculator.LowerLimitNorm); + Assert.AreEqual(probabilityDistributionFactor, calculator.ProbabilityDistributionFactor); + Assert.AreEqual(n, calculator.N); + } + } + + [Test] + public void CreateFailureMechanismSectionAssemblyCategories_CalculatorRan_ReturnsOutput() + { + // Setup + var random = new Random(11); + double signalingNorm = random.NextDouble(); + double lowerLimitNorm = random.NextDouble(); + double probabilityDistributionFactor = random.NextDouble(); + double n = random.NextDouble(); + + using (new AssemblyToolCalculatorFactoryConfig()) + { + var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; + AssemblyCategoriesCalculatorStub calculator = calculatorFactory.LastCreatedAssemblyCategoriesCalculator; + + // Call + FailureMechanismSectionAssemblyCategory[] output = AssemblyToolCategoriesFactory.CreateFailureMechanismSectionAssemblyCategories( + signalingNorm, + lowerLimitNorm, + probabilityDistributionFactor, + n).ToArray(); + + // Assert + FailureMechanismSectionAssemblyCategory[] calculatorOutput = calculator.FailureMechanismSectionCategoriesOutput.ToArray(); + + Assert.AreEqual(calculatorOutput.Length, output.Length); + CollectionAssert.AreEqual(calculatorOutput.Select(co => co.LowerBoundary), output.Select(o => o.LowerBoundary)); + CollectionAssert.AreEqual(calculatorOutput.Select(co => co.UpperBoundary), output.Select(o => o.UpperBoundary)); + CollectionAssert.AreEqual(calculatorOutput.Select(co => co.Group), output.Select(o => o.Group)); + } + } + + [Test] + public void CreateFailureMechanismSectionAssemblyCategories_CalculatorThrowsException_ThrowsAssemblyFactoryException() + { + // Setup + using (new AssemblyToolCalculatorFactoryConfig()) + { + var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; + AssemblyCategoriesCalculatorStub calculator = calculatorFactory.LastCreatedAssemblyCategoriesCalculator; + calculator.ThrowExceptionOnCalculate = true; + + // Call + TestDelegate test = () => AssemblyToolCategoriesFactory.CreateFailureMechanismSectionAssemblyCategories(0, 0, 0, 0); + + // Assert + var exception = Assert.Throws(test); + Assert.IsInstanceOf(exception.InnerException); + Assert.AreEqual(exception.InnerException.Message, exception.Message); + } + } + + [Test] + public void CreateGeotechnicFailureMechanismSectionAssemblyCategories_WithInput_SetsInputOnCalculator() + { + // Setup + var random = new Random(11); + double signalingNorm = random.NextDouble(); + double lowerLimitNorm = random.NextDouble(); + double probabilityDistributionFactor = random.NextDouble(); + double n = random.NextDouble(); + + using (new AssemblyToolCalculatorFactoryConfig()) + { + var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; + AssemblyCategoriesCalculatorStub calculator = calculatorFactory.LastCreatedAssemblyCategoriesCalculator; + + // Call + AssemblyToolCategoriesFactory.CreateGeotechnicFailureMechanismSectionAssemblyCategories(signalingNorm, + lowerLimitNorm, + probabilityDistributionFactor, + n); + + // Assert + Assert.AreEqual(signalingNorm, calculator.SignalingNorm); + Assert.AreEqual(lowerLimitNorm, calculator.LowerLimitNorm); + Assert.AreEqual(probabilityDistributionFactor, calculator.ProbabilityDistributionFactor); + Assert.AreEqual(n, calculator.N); + } + } + + [Test] + public void CreateGeotechnicFailureMechanismSectionAssemblyCategories_CalculatorRan_ReturnsOutput() + { + // Setup + var random = new Random(11); + double signalingNorm = random.NextDouble(); + double lowerLimitNorm = random.NextDouble(); + double probabilityDistributionFactor = random.NextDouble(); + double n = random.NextDouble(); + + using (new AssemblyToolCalculatorFactoryConfig()) + { + var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; + AssemblyCategoriesCalculatorStub calculator = calculatorFactory.LastCreatedAssemblyCategoriesCalculator; + + // Call + FailureMechanismSectionAssemblyCategory[] output = AssemblyToolCategoriesFactory.CreateGeotechnicFailureMechanismSectionAssemblyCategories( + signalingNorm, + lowerLimitNorm, + probabilityDistributionFactor, + n).ToArray(); + + // Assert + FailureMechanismSectionAssemblyCategory[] calculatorOutput = calculator.FailureMechanismSectionCategoriesOutput.ToArray(); + + Assert.AreEqual(calculatorOutput.Length, output.Length); + CollectionAssert.AreEqual(calculatorOutput.Select(co => co.LowerBoundary), output.Select(o => o.LowerBoundary)); + CollectionAssert.AreEqual(calculatorOutput.Select(co => co.UpperBoundary), output.Select(o => o.UpperBoundary)); + CollectionAssert.AreEqual(calculatorOutput.Select(co => co.Group), output.Select(o => o.Group)); + } + } + + [Test] + public void CreateGeotechnicFailureMechanismSectionAssemblyCategories_CalculatorThrowsException_ThrowsAssemblyFactoryException() + { + // Setup + using (new AssemblyToolCalculatorFactoryConfig()) + { + var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; + AssemblyCategoriesCalculatorStub calculator = calculatorFactory.LastCreatedAssemblyCategoriesCalculator; + calculator.ThrowExceptionOnCalculate = true; + + // Call + TestDelegate test = () => AssemblyToolCategoriesFactory.CreateGeotechnicFailureMechanismSectionAssemblyCategories(0, 0, 0, 0); + + // Assert + var exception = Assert.Throws(test); + Assert.IsInstanceOf(exception.InnerException); + Assert.AreEqual(exception.InnerException.Message, exception.Message); + } + } } } \ No newline at end of file