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;