Index: Riskeer/Integration/src/Riskeer.Integration.Forms/PropertyClasses/FailureMechanismSectionAssemblyGroupsProperties.cs =================================================================== diff -u -r52a2499c59be769767a8ad731519a185f62d73f3 -r95ae5d8c9277e01ba5c48d4bd036e095a751623e --- Riskeer/Integration/src/Riskeer.Integration.Forms/PropertyClasses/FailureMechanismSectionAssemblyGroupsProperties.cs (.../FailureMechanismSectionAssemblyGroupsProperties.cs) (revision 52a2499c59be769767a8ad731519a185f62d73f3) +++ Riskeer/Integration/src/Riskeer.Integration.Forms/PropertyClasses/FailureMechanismSectionAssemblyGroupsProperties.cs (.../FailureMechanismSectionAssemblyGroupsProperties.cs) (revision 95ae5d8c9277e01ba5c48d4bd036e095a751623e) @@ -29,6 +29,7 @@ using Riskeer.AssemblyTool.Data; using Riskeer.Common.Data.AssemblyTool; using Riskeer.Common.Data.Contribution; +using Riskeer.Common.Data.Exceptions; using Riskeer.Integration.Data; using RiskeerCommonFormsResources = Riskeer.Common.Forms.Properties.Resources; @@ -72,9 +73,20 @@ private FailureMechanismSectionAssemblyGroupProperties[] GetFailureMechanismAssemblyGroups() { FailureMechanismContribution contribution = data.FailureMechanismContribution; - return AssemblyToolGroupBoundariesFactory.CreateFailureMechanismSectionAssemblyGroupBoundaries(contribution.SignalingNorm, contribution.LowerLimitNorm) - .Select(category => new FailureMechanismSectionAssemblyGroupProperties(category)) - .ToArray(); + FailureMechanismSectionAssemblyGroupProperties[] dataToSet; + + try + { + dataToSet = AssemblyToolGroupBoundariesFactory.CreateFailureMechanismSectionAssemblyGroupBoundaries(contribution.SignalingNorm, contribution.LowerLimitNorm) + .Select(category => new FailureMechanismSectionAssemblyGroupProperties(category)) + .ToArray(); + } + catch (AssemblyException) + { + dataToSet = Array.Empty(); + } + + return dataToSet; } } } \ No newline at end of file Index: Riskeer/Integration/test/Riskeer.Integration.Forms.Test/PropertyClasses/FailureMechanismSectionAssemblyGroupsPropertiesTest.cs =================================================================== diff -u -r0b522a31f55a06325a2f4ec7bf4055b12d5a93fe -r95ae5d8c9277e01ba5c48d4bd036e095a751623e --- Riskeer/Integration/test/Riskeer.Integration.Forms.Test/PropertyClasses/FailureMechanismSectionAssemblyGroupsPropertiesTest.cs (.../FailureMechanismSectionAssemblyGroupsPropertiesTest.cs) (revision 0b522a31f55a06325a2f4ec7bf4055b12d5a93fe) +++ Riskeer/Integration/test/Riskeer.Integration.Forms.Test/PropertyClasses/FailureMechanismSectionAssemblyGroupsPropertiesTest.cs (.../FailureMechanismSectionAssemblyGroupsPropertiesTest.cs) (revision 95ae5d8c9277e01ba5c48d4bd036e095a751623e) @@ -20,11 +20,18 @@ // All rights reserved. using System; +using System.Collections.Generic; using System.ComponentModel; +using System.Linq; using Core.Common.TestUtil; using Core.Gui.Converters; using Core.Gui.TestUtil; using NUnit.Framework; +using Riskeer.AssemblyTool.Data; +using Riskeer.AssemblyTool.Forms; +using Riskeer.AssemblyTool.KernelWrapper.Calculators; +using Riskeer.AssemblyTool.KernelWrapper.TestUtil.Calculators; +using Riskeer.AssemblyTool.KernelWrapper.TestUtil.Calculators.Categories; using Riskeer.Common.Data.AssessmentSection; using Riskeer.Integration.Data; using Riskeer.Integration.Forms.PropertyClasses; @@ -80,5 +87,51 @@ "De duidingsklassen per vak voor dit toetsspoor.", true); } + + [Test] + public void GetFailureMechanismAssemblyGroups_AssemblyThrowsException_SetsEmptyProperties() + { + // Setup + using (new AssemblyToolCalculatorFactoryConfig()) + { + var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; + AssemblyGroupBoundariesCalculatorStub calculator = calculatorFactory.LastCreatedAssemblyGroupBoundariesCalculator; + calculator.ThrowExceptionOnCalculate = true; + + // Call + var properties = new FailureMechanismSectionAssemblyGroupsProperties(new AssessmentSection(AssessmentSectionComposition.Dike)); + + // Assert + Assert.IsEmpty(properties.FailureMechanismAssemblyGroups); + } + } + + [Test] + public void GetFailureMechanismAssemblyGroups_AssemblySucceeds_CorrectlySetsProperties() + { + // Setup + using (new AssemblyToolCalculatorFactoryConfig()) + { + var calculatorFactory = (TestAssemblyToolCalculatorFactory) AssemblyToolCalculatorFactory.Instance; + AssemblyGroupBoundariesCalculatorStub calculator = calculatorFactory.LastCreatedAssemblyGroupBoundariesCalculator; + + // Call + var properties = new FailureMechanismSectionAssemblyGroupsProperties(new AssessmentSection(AssessmentSectionComposition.Dike)); + + // Assert + FailureMechanismSectionAssemblyGroupProperties[] failureMechanismAssemblyGroups = properties.FailureMechanismAssemblyGroups; + IEnumerable output = calculator.FailureMechanismSectionAssemblyGroupBoundariesOutput; + Assert.AreEqual(output.Count(), failureMechanismAssemblyGroups.Length); + for (var i = 0; i < output.Count(); i++) + { + FailureMechanismSectionAssemblyGroupBoundaries category = output.ElementAt(i); + + FailureMechanismSectionAssemblyGroupProperties property = failureMechanismAssemblyGroups[i]; + Assert.AreEqual(DisplayFailureMechanismSectionAssemblyGroupConverter.Convert(category.Group), property.Group); + Assert.AreEqual(category.UpperBoundary, property.UpperBoundary); + Assert.AreEqual(category.LowerBoundary, property.LowerBoundary); + } + } + } } } \ No newline at end of file