Index: Riskeer/Integration/src/Riskeer.Integration.IO/Factories/ExportableCombinedSectionAssemblyFactory.cs =================================================================== diff -u -r6987efa7ae64f10c5c00802ca6b3ba0c08cd5ab7 -r8207feaf9b12bc87b924cde143f7af6a8eac0f0b --- Riskeer/Integration/src/Riskeer.Integration.IO/Factories/ExportableCombinedSectionAssemblyFactory.cs (.../ExportableCombinedSectionAssemblyFactory.cs) (revision 6987efa7ae64f10c5c00802ca6b3ba0c08cd5ab7) +++ Riskeer/Integration/src/Riskeer.Integration.IO/Factories/ExportableCombinedSectionAssemblyFactory.cs (.../ExportableCombinedSectionAssemblyFactory.cs) (revision 8207feaf9b12bc87b924cde143f7af6a8eac0f0b) @@ -29,6 +29,7 @@ using Riskeer.Common.Data.FailureMechanism; using Riskeer.Integration.Data; using Riskeer.Integration.Data.Assembly; +using Riskeer.Integration.IO.Exceptions; using Riskeer.Integration.Util; namespace Riskeer.Integration.IO.Factories @@ -47,6 +48,8 @@ /// The the section results belong to. /// A collection of . /// Thrown when any parameter is null. + /// Thrown when + /// is invalid and cannot be exported. public static IEnumerable CreateExportableCombinedSectionAssemblyCollection( IEnumerable combinedSectionAssemblyResults, AssessmentSection assessmentSection) @@ -64,6 +67,12 @@ var sectionResults = new List(); foreach (CombinedFailureMechanismSectionAssemblyResult assemblyResult in combinedSectionAssemblyResults) { + if (assemblyResult.TotalResult == FailureMechanismSectionAssemblyGroup.NoResult + || assemblyResult.TotalResult == FailureMechanismSectionAssemblyGroup.Dominant) + { + throw new AssemblyFactoryException("The assembly result is invalid and cannot be created."); + } + var exportableSection = new ExportableCombinedFailureMechanismSection( "id", FailureMechanismSectionHelper.GetFailureMechanismSectionGeometry( assessmentSection.ReferenceLine, assemblyResult.SectionStart, assemblyResult.SectionEnd), Index: Riskeer/Integration/test/Riskeer.Integration.IO.Test/Factories/ExportableCombinedSectionAssemblyFactoryTest.cs =================================================================== diff -u -r6987efa7ae64f10c5c00802ca6b3ba0c08cd5ab7 -r8207feaf9b12bc87b924cde143f7af6a8eac0f0b --- Riskeer/Integration/test/Riskeer.Integration.IO.Test/Factories/ExportableCombinedSectionAssemblyFactoryTest.cs (.../ExportableCombinedSectionAssemblyFactoryTest.cs) (revision 6987efa7ae64f10c5c00802ca6b3ba0c08cd5ab7) +++ Riskeer/Integration/test/Riskeer.Integration.IO.Test/Factories/ExportableCombinedSectionAssemblyFactoryTest.cs (.../ExportableCombinedSectionAssemblyFactoryTest.cs) (revision 8207feaf9b12bc87b924cde143f7af6a8eac0f0b) @@ -32,6 +32,7 @@ using Riskeer.Common.Data.FailureMechanism; using Riskeer.Integration.Data; using Riskeer.Integration.Data.Assembly; +using Riskeer.Integration.IO.Exceptions; using Riskeer.Integration.IO.Factories; using Riskeer.Integration.Util; @@ -65,6 +66,31 @@ } [Test] + [TestCase(FailureMechanismSectionAssemblyGroup.NoResult)] + [TestCase(FailureMechanismSectionAssemblyGroup.Dominant)] + public void CreateExportableCombinedSectionAssemblyCollection_WithInvalidAssemblyResults_ThrowsAssemblyFactoryException( + FailureMechanismSectionAssemblyGroup assemblyGroup) + { + // Setup + var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); + + var random = new Random(21); + CombinedFailureMechanismSectionAssemblyResult[] assemblyResults = + { + new CombinedFailureMechanismSectionAssemblyResult(random.NextDouble(), random.NextDouble(), assemblyGroup, + random.NextEnumValue(), random.NextEnumValue(), random.NextEnumValue(), + new CombinedFailureMechanismSectionAssemblyResult.ConstructionProperties()) + }; + + // Call + void Call() => ExportableCombinedSectionAssemblyFactory.CreateExportableCombinedSectionAssemblyCollection(assemblyResults, assessmentSection); + + // Assert + var exception = Assert.Throws(Call); + Assert.AreEqual("The assembly result is invalid and cannot be created.", exception.Message); + } + + [Test] [TestCase(true)] [TestCase(false)] public void CreateExportableCombinedSectionAssemblyCollection_WithAssemblyResults_ReturnsExportableCombinedSectionAssemblyCollection(bool hasAssemblyGroupResults)