Index: Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil.Test/FailureMechanismTestHelperTest.cs =================================================================== diff -u -r2a81f01756e227d5ce93717b21b87e8a5cd5fcbb -r3533052223d8c2df570b7d847c37a38b9f69ecde --- Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil.Test/FailureMechanismTestHelperTest.cs (.../FailureMechanismTestHelperTest.cs) (revision 2a81f01756e227d5ce93717b21b87e8a5cd5fcbb) +++ Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil.Test/FailureMechanismTestHelperTest.cs (.../FailureMechanismTestHelperTest.cs) (revision 3533052223d8c2df570b7d847c37a38b9f69ecde) @@ -23,6 +23,7 @@ using System.Collections.Generic; using System.Linq; using NUnit.Framework; +using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.FailureMechanism; namespace Ringtoets.Common.Data.TestUtil.Test @@ -63,5 +64,25 @@ Assert.IsEmpty(failureMechanism.FailureMechanismSectionSourcePath); Assert.AreEqual(nrOfSections, failureMechanism.Sections.Count()); } + + [Test] + public void AddSectionsBasedOnReferenceLine_WithArguments_AddsSectionsToFailureMechanism() + { + // Setup + var random = new Random(21); + int nrOfSections = random.Next(1, 10); + var failureMechanism = new TestFailureMechanism(); + ReferenceLine referenceLine = ReferenceLineTestFactory.CreateReferenceLineWithGeometry(); + + // Call + FailureMechanismTestHelper.AddSectionsBasedOnReferenceLine(referenceLine, failureMechanism, nrOfSections); + + // Assert + Assert.IsEmpty(failureMechanism.FailureMechanismSectionSourcePath); + Assert.AreEqual(nrOfSections, failureMechanism.Sections.Count()); + Assert.AreEqual(referenceLine.Points.First(), failureMechanism.Sections.First().StartPoint); + Assert.AreEqual(referenceLine.Points.Last().X, failureMechanism.Sections.Last().EndPoint.X, 1e-6); + Assert.AreEqual(referenceLine.Points.Last().Y, failureMechanism.Sections.Last().EndPoint.Y, 1e-6); + } } } \ No newline at end of file Index: Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil/FailureMechanismTestHelper.cs =================================================================== diff -u -r2a81f01756e227d5ce93717b21b87e8a5cd5fcbb -r3533052223d8c2df570b7d847c37a38b9f69ecde --- Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil/FailureMechanismTestHelper.cs (.../FailureMechanismTestHelper.cs) (revision 2a81f01756e227d5ce93717b21b87e8a5cd5fcbb) +++ Ringtoets/Common/test/Ringtoets.Common.Data.TestUtil/FailureMechanismTestHelper.cs (.../FailureMechanismTestHelper.cs) (revision 3533052223d8c2df570b7d847c37a38b9f69ecde) @@ -21,7 +21,9 @@ using System; using System.Collections.Generic; +using System.Linq; using Core.Common.Base.Geometry; +using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.FailureMechanism; namespace Ringtoets.Common.Data.TestUtil @@ -53,8 +55,23 @@ /// The number of sections to add to the . public static void AddSections(IFailureMechanism failureMechanism, int numberOfSections) { - var startPoint = new Point2D(-1, -1); - var endPoint = new Point2D(15, 15); + AddSections(failureMechanism, numberOfSections, new Point2D(-1, -1), new Point2D(15, 15)); + } + + /// + /// Adds a number of failure mechanism sections to + /// based on the geometry and . + /// + /// The reference line to get the geometry from. + /// The failure mechanism to add sections to. + /// The number of sections to add to the . + public static void AddSectionsBasedOnReferenceLine(ReferenceLine referenceLine, IFailureMechanism failureMechanism, int numberOfSections) + { + AddSections(failureMechanism, numberOfSections, referenceLine.Points.First(), referenceLine.Points.Last()); + } + + private static void AddSections(IFailureMechanism failureMechanism, int numberOfSections, Point2D startPoint, Point2D endPoint) + { double endPointStepsX = (endPoint.X - startPoint.X) / numberOfSections; double endPointStepsY = (endPoint.Y - startPoint.Y) / numberOfSections;