Index: Ringtoets/Integration/src/Ringtoets.Integration.Data/StandAlone/AssemblyFactories/MacroStabilityOutwardsFailureMechanismAssemblyFactory.cs =================================================================== diff -u -r3f6e53d41b52485159c3c2b34693e30bfb294958 -r5074f618d0207c1a9cb63d2c8a4a1b92a944dc73 --- Ringtoets/Integration/src/Ringtoets.Integration.Data/StandAlone/AssemblyFactories/MacroStabilityOutwardsFailureMechanismAssemblyFactory.cs (.../MacroStabilityOutwardsFailureMechanismAssemblyFactory.cs) (revision 3f6e53d41b52485159c3c2b34693e30bfb294958) +++ Ringtoets/Integration/src/Ringtoets.Integration.Data/StandAlone/AssemblyFactories/MacroStabilityOutwardsFailureMechanismAssemblyFactory.cs (.../MacroStabilityOutwardsFailureMechanismAssemblyFactory.cs) (revision 5074f618d0207c1a9cb63d2c8a4a1b92a944dc73) @@ -32,6 +32,7 @@ using Ringtoets.Common.Data.Probability; using Ringtoets.Common.Primitives; using Ringtoets.Integration.Data.StandAlone.SectionResults; +using RingtoetsCommonDataResources = Ringtoets.Common.Data.Properties.Resources; namespace Ringtoets.Integration.Data.StandAlone.AssemblyFactories { @@ -289,23 +290,27 @@ return FailureMechanismAssemblyResultFactory.CreateNotApplicableCategory(); } - IEnumerable sectionAssemblies = - failureMechanism.SectionResults.Select(sectionResult => GetSectionAssemblyCategoryGroup(sectionResult, - failureMechanism, - assessmentSection)).ToArray(); - - IAssemblyToolCalculatorFactory calculatorFactory = AssemblyToolCalculatorFactory.Instance; - IFailureMechanismAssemblyCalculator calculator = - calculatorFactory.CreateFailureMechanismAssemblyCalculator(AssemblyToolKernelFactory.Instance); - try { + IEnumerable sectionAssemblies = + failureMechanism.SectionResults.Select(sectionResult => GetSectionAssemblyCategoryGroup(sectionResult, + failureMechanism, + assessmentSection)).ToArray(); + + IAssemblyToolCalculatorFactory calculatorFactory = AssemblyToolCalculatorFactory.Instance; + IFailureMechanismAssemblyCalculator calculator = + calculatorFactory.CreateFailureMechanismAssemblyCalculator(AssemblyToolKernelFactory.Instance); + return calculator.Assemble(sectionAssemblies); } catch (FailureMechanismAssemblyCalculatorException e) { throw new AssemblyException(e.Message, e); } + catch (AssemblyException e) + { + throw new AssemblyException(RingtoetsCommonDataResources.FailureMechanismAssemblyFactory_Error_while_assembling_failureMechanism, e); + } } private static AssemblyCategoriesInput CreateAssemblyCategoriesInput(MacroStabilityOutwardsFailureMechanism failureMechanism, Index: Ringtoets/Integration/test/Ringtoets.Integration.Data.Test/StandAlone/AssemblyFactories/MacroStabilityOutwardsFailureMechanismAssemblyFactoryTest.cs =================================================================== diff -u -r1b06b06acb5f70a4adc60c28ee9bcd3e9fd406a3 -r5074f618d0207c1a9cb63d2c8a4a1b92a944dc73 --- Ringtoets/Integration/test/Ringtoets.Integration.Data.Test/StandAlone/AssemblyFactories/MacroStabilityOutwardsFailureMechanismAssemblyFactoryTest.cs (.../MacroStabilityOutwardsFailureMechanismAssemblyFactoryTest.cs) (revision 1b06b06acb5f70a4adc60c28ee9bcd3e9fd406a3) +++ Ringtoets/Integration/test/Ringtoets.Integration.Data.Test/StandAlone/AssemblyFactories/MacroStabilityOutwardsFailureMechanismAssemblyFactoryTest.cs (.../MacroStabilityOutwardsFailureMechanismAssemblyFactoryTest.cs) (revision 5074f618d0207c1a9cb63d2c8a4a1b92a944dc73) @@ -1010,6 +1010,37 @@ } } + [Test] + public void AssembleFailureMechanism_FailureMechanismSectionCalculatorThrowsException_ThrowsAssemblyException() + { + // Setup + var failureMechanism = new MacroStabilityOutwardsFailureMechanism(); + failureMechanism.AddSection(FailureMechanismSectionTestFactory.CreateFailureMechanismSection()); + + var mocks = new MockRepository(); + IAssessmentSection assessmentSection = AssessmentSectionHelper.CreateAssessmentSectionStub(failureMechanism, mocks); + mocks.ReplayAll(); + + using (new AssemblyToolCalculatorFactoryConfig()) + { + var calculatorfactory = (TestAssemblyToolCalculatorFactory)AssemblyToolCalculatorFactory.Instance; + FailureMechanismSectionAssemblyCalculatorStub calculator = calculatorfactory.LastCreatedFailureMechanismSectionAssemblyCalculator; + calculator.ThrowExceptionOnCalculate = true; + + // Call + TestDelegate call = () => MacroStabilityOutwardsFailureMechanismAssemblyFactory.AssembleFailureMechanism( + failureMechanism, + assessmentSection); + + // Assert + var exception = Assert.Throws(call); + Exception innerException = exception.InnerException; + Assert.IsInstanceOf(innerException); + Assert.AreEqual("Voor een of meerdere vakken kan geen resultaat worden bepaald.", exception.Message); + mocks.VerifyAll(); + } + } + #endregion } } \ No newline at end of file