Index: Ringtoets/Integration/src/Ringtoets.Integration.IO/Factories/ExportableFailureMechanismFactory.cs =================================================================== diff -u -rc2e1b46490dfdc848647c515e3ea04c1f7f69535 -ree587321dad3fd68330c5acc8e5401f918535d10 --- Ringtoets/Integration/src/Ringtoets.Integration.IO/Factories/ExportableFailureMechanismFactory.cs (.../ExportableFailureMechanismFactory.cs) (revision c2e1b46490dfdc848647c515e3ea04c1f7f69535) +++ Ringtoets/Integration/src/Ringtoets.Integration.IO/Factories/ExportableFailureMechanismFactory.cs (.../ExportableFailureMechanismFactory.cs) (revision ee587321dad3fd68330c5acc8e5401f918535d10) @@ -19,6 +19,9 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; +using System.Collections.Generic; +using Core.Common.Base.Geometry; using Ringtoets.AssemblyTool.Data; using Ringtoets.Integration.IO.Assembly; @@ -33,19 +36,36 @@ /// Creates a default instance of an /// with a probability based on its input parameters. /// + /// The section geometry. /// The of the failure mechanism. /// The of the failure mechanism. - /// The assembly method which is used to obtain the general assembly result of the failure mechanism. + /// The assembly method which is used to obtain the general assembly result of the failure mechanism. + /// The assembly method which is used to obtain the combined assembly result of a failure mechanism section. /// An with default values. + /// Thrown when is null. public static ExportableFailureMechanism CreateDefaultExportableFailureMechanismWithProbability( + IEnumerable failureMechanismSectionGeometry, ExportableFailureMechanismType failureMechanismCode, ExportableFailureMechanismGroup failureMechanismGroup, - ExportableAssemblyMethod assemblyMethod) + ExportableAssemblyMethod failureMechanismAssemblyMethod, + ExportableAssemblyMethod combinedSectionAssemblyResultMethod) { + if (failureMechanismSectionGeometry == null) + { + throw new ArgumentNullException(nameof(failureMechanismSectionGeometry)); + } + return new ExportableFailureMechanism( - new ExportableFailureMechanismAssemblyResultWithProbability(assemblyMethod, + new ExportableFailureMechanismAssemblyResultWithProbability(failureMechanismAssemblyMethod, FailureMechanismAssemblyCategoryGroup.NotApplicable, 0), + new[] + { + new ExportableAggregatedFailureMechanismSectionAssemblyWithCombinedProbabilityResult(CreateExportableFailureMechanismSection(failureMechanismSectionGeometry), + new ExportableSectionAssemblyResultWithProbability(combinedSectionAssemblyResultMethod, + FailureMechanismSectionAssemblyCategoryGroup.NotApplicable, + 0)) + }, failureMechanismCode, failureMechanismGroup); } @@ -69,5 +89,10 @@ failureMechanismCode, failureMechanismGroup); } + + private static ExportableFailureMechanismSection CreateExportableFailureMechanismSection(IEnumerable geometry) + { + return new ExportableFailureMechanismSection(geometry, 0, Math2D.Length(geometry)); + } } } \ No newline at end of file Index: Ringtoets/Integration/test/Ringtoets.Integration.IO.Test/Factories/ExportableFailureMechanismFactoryTest.cs =================================================================== diff -u -r68318584c702cb11e38cd84a31d18c951595dda0 -ree587321dad3fd68330c5acc8e5401f918535d10 --- Ringtoets/Integration/test/Ringtoets.Integration.IO.Test/Factories/ExportableFailureMechanismFactoryTest.cs (.../ExportableFailureMechanismFactoryTest.cs) (revision 68318584c702cb11e38cd84a31d18c951595dda0) +++ Ringtoets/Integration/test/Ringtoets.Integration.IO.Test/Factories/ExportableFailureMechanismFactoryTest.cs (.../ExportableFailureMechanismFactoryTest.cs) (revision ee587321dad3fd68330c5acc8e5401f918535d10) @@ -20,6 +20,9 @@ // All rights reserved. using System; +using System.Collections.Generic; +using System.Linq; +using Core.Common.Base.Geometry; using Core.Common.TestUtil; using NUnit.Framework; using Ringtoets.AssemblyTool.Data; @@ -32,28 +35,65 @@ public class ExportableFailureMechanismFactoryTest { [Test] - public void CreateDefaultExportableFailureMechanismWithProbability_Always_ReturnsExportableFailureMechanism() + public void CreateDefaultExportableFailureMechanismWithProbability_FailureMechanismSectionGeometryNull_ThrowsArgumentNullException() { + var random = new Random(21); + var group = random.NextEnumValue(); + var failureMechanismCode = random.NextEnumValue(); + var failureMechanismAssemblyMethod = random.NextEnumValue(); + var combinedResultAssemblyMethod = random.NextEnumValue(); + + // Call + TestDelegate call = () => ExportableFailureMechanismFactory.CreateDefaultExportableFailureMechanismWithProbability(null, + failureMechanismCode, + group, + failureMechanismAssemblyMethod, + combinedResultAssemblyMethod); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("failureMechanismSectionGeometry", exception.ParamName); + } + + [Test] + public void CreateDefaultExportableFailureMechanismWithProbability_WithValidArguments_ReturnsExportableFailureMechanism() + { // Setup var random = new Random(21); + IEnumerable failureMechanismSectionGeometry = CreateGeometry(); var group = random.NextEnumValue(); var failureMechanismCode = random.NextEnumValue(); - var assemblyMethod = random.NextEnumValue(); + var failureMechanismAssemblyMethod = random.NextEnumValue(); + var combinedResultAssemblyMethod = random.NextEnumValue(); // Call ExportableFailureMechanism exportableFailureMechanism = - ExportableFailureMechanismFactory.CreateDefaultExportableFailureMechanismWithProbability(failureMechanismCode, group, assemblyMethod); + ExportableFailureMechanismFactory.CreateDefaultExportableFailureMechanismWithProbability(failureMechanismSectionGeometry, + failureMechanismCode, + group, + failureMechanismAssemblyMethod, + combinedResultAssemblyMethod); // Assert Assert.AreEqual(group, exportableFailureMechanism.Group); Assert.AreEqual(failureMechanismCode, exportableFailureMechanism.Code); ExportableFailureMechanismAssemblyResultWithProbability failureMechanismAssemblyResult = exportableFailureMechanism.FailureMechanismAssembly; - Assert.AreEqual(assemblyMethod, failureMechanismAssemblyResult.AssemblyMethod); + Assert.AreEqual(failureMechanismAssemblyMethod, failureMechanismAssemblyResult.AssemblyMethod); Assert.AreEqual(FailureMechanismAssemblyCategoryGroup.NotApplicable, failureMechanismAssemblyResult.AssemblyCategory); Assert.AreEqual(0, failureMechanismAssemblyResult.Probability); - CollectionAssert.IsEmpty(exportableFailureMechanism.SectionAssemblyResults); + var exportableFailureMechanismSectionAssembly = + (ExportableAggregatedFailureMechanismSectionAssemblyWithCombinedProbabilityResult) exportableFailureMechanism.SectionAssemblyResults.Single(); + ExportableSectionAssemblyResultWithProbability combinedAssembly = exportableFailureMechanismSectionAssembly.CombinedAssembly; + Assert.AreEqual(combinedResultAssemblyMethod, combinedAssembly.AssemblyMethod); + Assert.AreEqual(FailureMechanismAssemblyCategoryGroup.NotApplicable, combinedAssembly.AssemblyCategory); + Assert.AreEqual(0, combinedAssembly.Probability); + + ExportableFailureMechanismSection failureMechanismSection = exportableFailureMechanismSectionAssembly.FailureMechanismSection; + Assert.AreSame(failureMechanismSectionGeometry, failureMechanismSection.Geometry); + Assert.AreEqual(0, failureMechanismSection.StartDistance); + Assert.AreEqual(Math2D.Length(failureMechanismSectionGeometry), failureMechanismSection.EndDistance); } [Test] @@ -79,5 +119,16 @@ CollectionAssert.IsEmpty(exportableFailureMechanism.SectionAssemblyResults); } + + private static IEnumerable CreateGeometry() + { + return new[] + { + new Point2D(1, 1), + new Point2D(2, 2), + new Point2D(3, 3), + new Point2D(4, 4) + }; + } } } \ No newline at end of file