Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/DikesDesign/SurfaceLineSlopeAdapterTest.cs
===================================================================
diff -u -r4000 -r4052
--- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/DikesDesign/SurfaceLineSlopeAdapterTest.cs (.../SurfaceLineSlopeAdapterTest.cs) (revision 4000)
+++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/DikesDesign/SurfaceLineSlopeAdapterTest.cs (.../SurfaceLineSlopeAdapterTest.cs) (revision 4052)
@@ -25,1331 +25,1330 @@
using Deltares.DamEngine.Data.Geotechnics;
using NUnit.Framework;
-namespace Deltares.DamEngine.Calculators.Tests.DikesDesign
+namespace Deltares.DamEngine.Calculators.Tests.DikesDesign;
+
+///
+/// Class for testing SurfaceLineSlopeAdapter
+///
+[TestFixture]
+public class SurfaceLineSlopeAdapterTest
{
+ private readonly Location location = new Location();
+
///
- /// Class for testing SurfaceLineSlopeAdapter
+ /// Tests the fixture tear down.
///
- [TestFixture]
- public class SurfaceLineSlopeAdapterTest
- {
- private readonly Location location = new Location();
+ [TearDown]
+ public void TestFixtureTearDown() {}
- ///
- /// Tests the fixture tear down.
- ///
- [TearDown]
- public void TestFixtureTearDown() {}
-
- private static SurfaceLine2 CreateSimpleDike()
+ private static SurfaceLine2 CreateSimpleDike()
+ {
+ var surfaceLine = new SurfaceLine2
{
- var surfaceLine = new SurfaceLine2
+ CharacteristicPoints =
{
- CharacteristicPoints =
- {
- GeometryMustContainPoint = true
- },
- Geometry = new GeometryPointString()
- };
- surfaceLine.EnsurePointOfType(0, 0, CharacteristicPointType.DikeToeAtRiver);
- surfaceLine.EnsurePointOfType(1, 1, CharacteristicPointType.DikeTopAtRiver);
- surfaceLine.EnsurePointOfType(2, 1, CharacteristicPointType.DikeTopAtPolder);
- surfaceLine.EnsurePointOfType(3, 0, CharacteristicPointType.DikeToeAtPolder);
- surfaceLine.EnsurePointOfType(100, 0, CharacteristicPointType.SurfaceLevelInside);
- return surfaceLine;
- }
+ GeometryMustContainPoint = true
+ },
+ Geometry = new GeometryPointString()
+ };
+ surfaceLine.EnsurePointOfType(0, 0, CharacteristicPointType.DikeToeAtRiver);
+ surfaceLine.EnsurePointOfType(1, 1, CharacteristicPointType.DikeTopAtRiver);
+ surfaceLine.EnsurePointOfType(2, 1, CharacteristicPointType.DikeTopAtPolder);
+ surfaceLine.EnsurePointOfType(3, 0, CharacteristicPointType.DikeToeAtPolder);
+ surfaceLine.EnsurePointOfType(100, 0, CharacteristicPointType.SurfaceLevelInside);
+ return surfaceLine;
+ }
- #region ConstructWithDeltaX
+ #region ConstructWithDeltaX
- [Test]
- public void ConstructNewSurfaceLineReturnsANewSurfaceLine()
+ [Test]
+ public void ConstructNewSurfaceLineReturnsANewSurfaceLine()
+ {
+ SurfaceLine2 surfaceLine = CreateSimpleDike();
+ var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
+ SurfaceLine2 constructNewSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(1);
+ Assert.IsNotNull(constructNewSurfaceLine);
+ }
+
+ [Test]
+ public void AdaptedSimpleDikeLineHasCorrectNewToeDikeAtPolder()
+ {
+ SurfaceLine2 surfaceLine = CreateSimpleDike();
+ var pointDikeToeAtPolder = new GeometryPoint
{
- SurfaceLine2 surfaceLine = CreateSimpleDike();
- var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
- SurfaceLine2 constructNewSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(1);
- Assert.IsNotNull(constructNewSurfaceLine);
- }
+ X = 3,
+ Z = 0
+ };
+ surfaceLine.EnsurePointOfType(pointDikeToeAtPolder.X, pointDikeToeAtPolder.Z, CharacteristicPointType.DikeToeAtPolder);
+ var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
+ SurfaceLine2 adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(1.0);
+ var expectedPointDikeToeAtPolder = new GeometryPoint
+ {
+ X = 4,
+ Z = 0
+ };
+ Assert.IsTrue(expectedPointDikeToeAtPolder.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder)));
+ }
- [Test]
- public void AdaptedSimpleDikeLineHasCorrectNewToeDikeAtPolder()
+ [Test]
+ public void AdaptedDikeWithShoulderHasCorrectPointsAfterToeSlope()
+ {
+ var surfaceLine = new SurfaceLine2
{
- SurfaceLine2 surfaceLine = CreateSimpleDike();
- var pointDikeToeAtPolder = new GeometryPoint
+ CharacteristicPoints =
{
- X = 3,
- Z = 0
- };
- surfaceLine.EnsurePointOfType(pointDikeToeAtPolder.X, pointDikeToeAtPolder.Z, CharacteristicPointType.DikeToeAtPolder);
- var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
- SurfaceLine2 adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(1.0);
- var expectedPointDikeToeAtPolder = new GeometryPoint
- {
- X = 4,
- Z = 0
- };
- Assert.IsTrue(expectedPointDikeToeAtPolder.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder)));
- }
+ GeometryMustContainPoint = true
+ },
+ Geometry = new GeometryPointString()
+ };
+ var pointShoulderBaseInside = new GeometryPoint
+ {
+ X = 9,
+ Z = 1
+ };
+ var pointShoulderTopInside = new GeometryPoint
+ {
+ X = 11,
+ Z = 1
+ };
+ var pointDikeToeAtPolder = new GeometryPoint
+ {
+ X = 14,
+ Z = 0
+ };
+ var pointSurfaceLevelInside = new GeometryPoint
+ {
+ X = 20,
+ Z = 0
+ };
+ surfaceLine.EnsurePointOfType(0, 0, CharacteristicPointType.DikeToeAtRiver);
+ surfaceLine.EnsurePointOfType(4, 3, CharacteristicPointType.DikeTopAtRiver);
+ surfaceLine.EnsurePointOfType(6, 3, CharacteristicPointType.DikeTopAtPolder);
+ surfaceLine.EnsurePointOfType(pointShoulderBaseInside.X, pointShoulderBaseInside.Z, CharacteristicPointType.ShoulderBaseInside);
+ surfaceLine.EnsurePointOfType(pointShoulderTopInside.X, pointShoulderTopInside.Z, CharacteristicPointType.ShoulderTopInside);
+ surfaceLine.EnsurePointOfType(pointDikeToeAtPolder.X, pointDikeToeAtPolder.Z, CharacteristicPointType.DikeToeAtPolder);
+ surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside);
+ var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
+ const double deltaX = 1.0;
+ SurfaceLine2 adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(deltaX);
+ var expectedPointShoulderBaseInside = new GeometryPoint
+ {
+ X = pointShoulderBaseInside.X + deltaX,
+ Z = pointShoulderBaseInside.Z
+ };
+ var expectedPointShoulderTopInside = new GeometryPoint
+ {
+ X = pointShoulderTopInside.X,
+ Z = pointShoulderTopInside.Z
+ };
+ var expectedPointDikeToeAtPolder = new GeometryPoint
+ {
+ X = pointDikeToeAtPolder.X,
+ Z = pointDikeToeAtPolder.Z
+ };
+ var expectedPointSurfaceLevelInside = new GeometryPoint
+ {
+ X = pointSurfaceLevelInside.X,
+ Z = pointSurfaceLevelInside.Z
+ };
+ Assert.IsTrue(expectedPointShoulderBaseInside.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderBaseInside)));
+ Assert.IsTrue(expectedPointShoulderTopInside.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderTopInside)));
+ Assert.IsTrue(expectedPointDikeToeAtPolder.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder)));
+ Assert.IsTrue(expectedPointSurfaceLevelInside.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.SurfaceLevelInside)));
+ }
- [Test]
- public void AdaptedDikeWithShoulderHasCorrectPointsAfterToeSlope()
+ [Test]
+ public void AdaptedDikeWithDitchHasCorrectPointsAfterToeSlope()
+ {
+ var surfaceLine = new SurfaceLine2
{
- var surfaceLine = new SurfaceLine2
+ CharacteristicPoints =
{
- CharacteristicPoints =
- {
- GeometryMustContainPoint = true
- },
- Geometry = new GeometryPointString()
- };
- var pointShoulderBaseInside = new GeometryPoint
- {
- X = 9,
- Z = 1
- };
- var pointShoulderTopInside = new GeometryPoint
- {
- X = 11,
- Z = 1
- };
- var pointDikeToeAtPolder = new GeometryPoint
- {
- X = 14,
- Z = 0
- };
- var pointSurfaceLevelInside = new GeometryPoint
- {
- X = 20,
- Z = 0
- };
- surfaceLine.EnsurePointOfType(0, 0, CharacteristicPointType.DikeToeAtRiver);
- surfaceLine.EnsurePointOfType(4, 3, CharacteristicPointType.DikeTopAtRiver);
- surfaceLine.EnsurePointOfType(6, 3, CharacteristicPointType.DikeTopAtPolder);
- surfaceLine.EnsurePointOfType(pointShoulderBaseInside.X, pointShoulderBaseInside.Z, CharacteristicPointType.ShoulderBaseInside);
- surfaceLine.EnsurePointOfType(pointShoulderTopInside.X, pointShoulderTopInside.Z, CharacteristicPointType.ShoulderTopInside);
- surfaceLine.EnsurePointOfType(pointDikeToeAtPolder.X, pointDikeToeAtPolder.Z, CharacteristicPointType.DikeToeAtPolder);
- surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside);
- var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
- const double deltaX = 1.0;
- SurfaceLine2 adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(deltaX);
- var expectedPointShoulderBaseInside = new GeometryPoint
- {
- X = pointShoulderBaseInside.X + deltaX,
- Z = pointShoulderBaseInside.Z
- };
- var expectedPointShoulderTopInside = new GeometryPoint
- {
- X = pointShoulderTopInside.X,
- Z = pointShoulderTopInside.Z
- };
- var expectedPointDikeToeAtPolder = new GeometryPoint
- {
- X = pointDikeToeAtPolder.X,
- Z = pointDikeToeAtPolder.Z
- };
- var expectedPointSurfaceLevelInside = new GeometryPoint
- {
- X = pointSurfaceLevelInside.X,
- Z = pointSurfaceLevelInside.Z
- };
- Assert.IsTrue(expectedPointShoulderBaseInside.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderBaseInside)));
- Assert.IsTrue(expectedPointShoulderTopInside.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderTopInside)));
- Assert.IsTrue(expectedPointDikeToeAtPolder.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder)));
- Assert.IsTrue(expectedPointSurfaceLevelInside.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.SurfaceLevelInside)));
- }
+ GeometryMustContainPoint = true
+ },
+ Geometry = new GeometryPointString()
+ };
+ var pointDikeToeAtPolder = new GeometryPoint
+ {
+ X = 14,
+ Z = 0
+ };
+ var pointDitchDikeSide = new GeometryPoint
+ {
+ X = 16,
+ Z = 0
+ };
+ var pointBottomDitchDikeSide = new GeometryPoint
+ {
+ X = 17,
+ Z = -1
+ };
+ var pointBottomDitchPolderSide = new GeometryPoint
+ {
+ X = 18,
+ Z = -1
+ };
+ var pointDitchPolderSide = new GeometryPoint
+ {
+ X = 19,
+ Z = 0
+ };
+ var pointSurfaceLevelInside = new GeometryPoint
+ {
+ X = 30,
+ Z = 0
+ };
+ surfaceLine.EnsurePointOfType(0, 0, CharacteristicPointType.DikeToeAtRiver);
+ surfaceLine.EnsurePointOfType(4, 3, CharacteristicPointType.DikeTopAtRiver);
+ surfaceLine.EnsurePointOfType(6, 3, CharacteristicPointType.DikeTopAtPolder);
+ surfaceLine.EnsurePointOfType(pointDikeToeAtPolder.X, pointDikeToeAtPolder.Z, CharacteristicPointType.DikeToeAtPolder);
+ surfaceLine.EnsurePointOfType(pointDitchDikeSide.X, pointDitchDikeSide.Z, CharacteristicPointType.DitchDikeSide);
+ surfaceLine.EnsurePointOfType(pointBottomDitchDikeSide.X, pointBottomDitchDikeSide.Z, CharacteristicPointType.BottomDitchDikeSide);
+ surfaceLine.EnsurePointOfType(pointBottomDitchPolderSide.X, pointBottomDitchPolderSide.Z, CharacteristicPointType.BottomDitchPolderSide);
+ surfaceLine.EnsurePointOfType(pointDitchPolderSide.X, pointDitchPolderSide.Z, CharacteristicPointType.DitchPolderSide);
+ surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside);
+ var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
+ const double deltaX = 1.0;
+ const double deltaXDitch = 3;
+ SurfaceLine2 adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(deltaX);
+ var expectedPointDikeToeAtPolder = new GeometryPoint
+ {
+ X = pointDikeToeAtPolder.X + deltaX,
+ Z = pointDikeToeAtPolder.Z
+ };
+ var expectedPointDitchDikeSide = new GeometryPoint
+ {
+ X = pointDitchDikeSide.X + deltaX + deltaXDitch,
+ Z = pointDitchDikeSide.Z
+ };
+ var expectedPointBottomDitchDikeSide = new GeometryPoint
+ {
+ X = pointBottomDitchDikeSide.X + deltaX + deltaXDitch,
+ Z = pointBottomDitchDikeSide.Z
+ };
+ var expectedPointBottomDitchPolderSide = new GeometryPoint
+ {
+ X = pointBottomDitchPolderSide.X + deltaX + deltaXDitch,
+ Z = pointBottomDitchPolderSide.Z
+ };
+ var expectedPointDitchPolderSide = new GeometryPoint
+ {
+ X = pointDitchPolderSide.X + deltaX + deltaXDitch,
+ Z = pointDitchPolderSide.Z
+ };
+ var expectedPointSurfaceLevelInside = new GeometryPoint
+ {
+ X = pointSurfaceLevelInside.X,
+ Z = pointSurfaceLevelInside.Z
+ };
+ Assert.IsTrue(expectedPointDikeToeAtPolder.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder)));
+ Assert.IsTrue(expectedPointDitchDikeSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DitchDikeSide)));
+ Assert.IsTrue(expectedPointBottomDitchDikeSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.BottomDitchDikeSide)));
+ Assert.IsTrue(expectedPointBottomDitchPolderSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.BottomDitchPolderSide)));
+ Assert.IsTrue(expectedPointDitchPolderSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DitchPolderSide)));
+ Assert.IsTrue(expectedPointSurfaceLevelInside.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.SurfaceLevelInside)));
+ }
- [Test]
- public void AdaptedDikeWithDitchHasCorrectPointsAfterToeSlope()
+ [Test]
+ public void AdaptedDikeWithShoulderAndDitchHasCorrectPointsAfterToeSlope()
+ {
+ var surfaceLine = new SurfaceLine2
{
- var surfaceLine = new SurfaceLine2
+ CharacteristicPoints =
{
- CharacteristicPoints =
- {
- GeometryMustContainPoint = true
- },
- Geometry = new GeometryPointString()
- };
- var pointDikeToeAtPolder = new GeometryPoint
- {
- X = 14,
- Z = 0
- };
- var pointDitchDikeSide = new GeometryPoint
- {
- X = 16,
- Z = 0
- };
- var pointBottomDitchDikeSide = new GeometryPoint
- {
- X = 17,
- Z = -1
- };
- var pointBottomDitchPolderSide = new GeometryPoint
- {
- X = 18,
- Z = -1
- };
- var pointDitchPolderSide = new GeometryPoint
- {
- X = 19,
- Z = 0
- };
- var pointSurfaceLevelInside = new GeometryPoint
- {
- X = 30,
- Z = 0
- };
- surfaceLine.EnsurePointOfType(0, 0, CharacteristicPointType.DikeToeAtRiver);
- surfaceLine.EnsurePointOfType(4, 3, CharacteristicPointType.DikeTopAtRiver);
- surfaceLine.EnsurePointOfType(6, 3, CharacteristicPointType.DikeTopAtPolder);
- surfaceLine.EnsurePointOfType(pointDikeToeAtPolder.X, pointDikeToeAtPolder.Z, CharacteristicPointType.DikeToeAtPolder);
- surfaceLine.EnsurePointOfType(pointDitchDikeSide.X, pointDitchDikeSide.Z, CharacteristicPointType.DitchDikeSide);
- surfaceLine.EnsurePointOfType(pointBottomDitchDikeSide.X, pointBottomDitchDikeSide.Z, CharacteristicPointType.BottomDitchDikeSide);
- surfaceLine.EnsurePointOfType(pointBottomDitchPolderSide.X, pointBottomDitchPolderSide.Z, CharacteristicPointType.BottomDitchPolderSide);
- surfaceLine.EnsurePointOfType(pointDitchPolderSide.X, pointDitchPolderSide.Z, CharacteristicPointType.DitchPolderSide);
- surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside);
- var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
- const double deltaX = 1.0;
- const double deltaXDitch = 3;
- SurfaceLine2 adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(deltaX);
- var expectedPointDikeToeAtPolder = new GeometryPoint
- {
- X = pointDikeToeAtPolder.X + deltaX,
- Z = pointDikeToeAtPolder.Z
- };
- var expectedPointDitchDikeSide = new GeometryPoint
- {
- X = pointDitchDikeSide.X + deltaX + deltaXDitch,
- Z = pointDitchDikeSide.Z
- };
- var expectedPointBottomDitchDikeSide = new GeometryPoint
- {
- X = pointBottomDitchDikeSide.X + deltaX + deltaXDitch,
- Z = pointBottomDitchDikeSide.Z
- };
- var expectedPointBottomDitchPolderSide = new GeometryPoint
- {
- X = pointBottomDitchPolderSide.X + deltaX + deltaXDitch,
- Z = pointBottomDitchPolderSide.Z
- };
- var expectedPointDitchPolderSide = new GeometryPoint
- {
- X = pointDitchPolderSide.X + deltaX + deltaXDitch,
- Z = pointDitchPolderSide.Z
- };
- var expectedPointSurfaceLevelInside = new GeometryPoint
- {
- X = pointSurfaceLevelInside.X,
- Z = pointSurfaceLevelInside.Z
- };
- Assert.IsTrue(expectedPointDikeToeAtPolder.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder)));
- Assert.IsTrue(expectedPointDitchDikeSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DitchDikeSide)));
- Assert.IsTrue(expectedPointBottomDitchDikeSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.BottomDitchDikeSide)));
- Assert.IsTrue(expectedPointBottomDitchPolderSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.BottomDitchPolderSide)));
- Assert.IsTrue(expectedPointDitchPolderSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DitchPolderSide)));
- Assert.IsTrue(expectedPointSurfaceLevelInside.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.SurfaceLevelInside)));
- }
+ GeometryMustContainPoint = true
+ },
+ Geometry = new GeometryPointString()
+ };
+ var pointShoulderBaseInside = new GeometryPoint
+ {
+ X = 9,
+ Z = 1
+ };
+ var pointShoulderTopInside = new GeometryPoint
+ {
+ X = 11,
+ Z = 1
+ };
+ var pointDikeToeAtPolder = new GeometryPoint
+ {
+ X = 14,
+ Z = 0
+ };
+ var pointDitchDikeSide = new GeometryPoint
+ {
+ X = 16,
+ Z = 0
+ };
+ var pointBottomDitchDikeSide = new GeometryPoint
+ {
+ X = 17,
+ Z = -1
+ };
+ var pointBottomDitchPolderSide = new GeometryPoint
+ {
+ X = 18,
+ Z = -1
+ };
+ var pointDitchPolderSide = new GeometryPoint
+ {
+ X = 19,
+ Z = 0
+ };
+ var pointSurfaceLevelInside = new GeometryPoint
+ {
+ X = 50,
+ Z = 0
+ };
+ surfaceLine.EnsurePointOfType(0, 0, CharacteristicPointType.DikeToeAtRiver);
+ surfaceLine.EnsurePointOfType(4, 3, CharacteristicPointType.DikeTopAtRiver);
+ surfaceLine.EnsurePointOfType(6, 3, CharacteristicPointType.DikeTopAtPolder);
+ surfaceLine.EnsurePointOfType(pointShoulderBaseInside.X, pointShoulderBaseInside.Z, CharacteristicPointType.ShoulderBaseInside);
+ surfaceLine.EnsurePointOfType(pointShoulderTopInside.X, pointShoulderTopInside.Z, CharacteristicPointType.ShoulderTopInside);
+ surfaceLine.EnsurePointOfType(pointDikeToeAtPolder.X, pointDikeToeAtPolder.Z, CharacteristicPointType.DikeToeAtPolder);
+ surfaceLine.EnsurePointOfType(pointDitchDikeSide.X, pointDitchDikeSide.Z, CharacteristicPointType.DitchDikeSide);
+ surfaceLine.EnsurePointOfType(pointBottomDitchDikeSide.X, pointBottomDitchDikeSide.Z, CharacteristicPointType.BottomDitchDikeSide);
+ surfaceLine.EnsurePointOfType(pointBottomDitchPolderSide.X, pointBottomDitchPolderSide.Z, CharacteristicPointType.BottomDitchPolderSide);
+ surfaceLine.EnsurePointOfType(pointDitchPolderSide.X, pointDitchPolderSide.Z, CharacteristicPointType.DitchPolderSide);
+ surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside);
+ var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
+ const double deltaX = 1.0;
+ SurfaceLine2 adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(deltaX);
+ var expectedPointShoulderBaseInside = new GeometryPoint
+ {
+ X = pointShoulderBaseInside.X + deltaX,
+ Z = pointShoulderBaseInside.Z
+ };
+ var expectedPointShoulderTopInside = new GeometryPoint
+ {
+ X = pointShoulderTopInside.X,
+ Z = pointShoulderTopInside.Z
+ };
+ var expectedPointDikeToeAtPolder = new GeometryPoint
+ {
+ X = pointDikeToeAtPolder.X,
+ Z = pointDikeToeAtPolder.Z
+ };
+ var expectedPointDitchDikeSide = new GeometryPoint
+ {
+ X = pointDitchDikeSide.X,
+ Z = pointDitchDikeSide.Z
+ };
+ var expectedPointBottomDitchDikeSide = new GeometryPoint
+ {
+ X = pointBottomDitchDikeSide.X,
+ Z = pointBottomDitchDikeSide.Z
+ };
+ var expectedPointBottomDitchPolderSide = new GeometryPoint
+ {
+ X = pointBottomDitchPolderSide.X,
+ Z = pointBottomDitchPolderSide.Z
+ };
+ var expectedPointDitchPolderSide = new GeometryPoint
+ {
+ X = pointDitchPolderSide.X,
+ Z = pointDitchPolderSide.Z
+ };
+ var expectedPointSurfaceLevelInside = new GeometryPoint
+ {
+ X = pointSurfaceLevelInside.X,
+ Z = pointSurfaceLevelInside.Z
+ };
+ Assert.IsTrue(expectedPointShoulderBaseInside.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderBaseInside)));
+ Assert.IsTrue(expectedPointShoulderTopInside.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderTopInside)));
+ Assert.IsTrue(expectedPointDikeToeAtPolder.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder)));
+ Assert.IsTrue(expectedPointDitchDikeSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DitchDikeSide)));
+ Assert.IsTrue(expectedPointBottomDitchDikeSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.BottomDitchDikeSide)));
+ Assert.IsTrue(expectedPointBottomDitchPolderSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.BottomDitchPolderSide)));
+ Assert.IsTrue(expectedPointDitchPolderSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DitchPolderSide)));
+ Assert.IsTrue(expectedPointSurfaceLevelInside.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.SurfaceLevelInside)));
+ }
- [Test]
- public void AdaptedDikeWithShoulderAndDitchHasCorrectPointsAfterToeSlope()
+ [Test]
+ public void AdaptedSimpleDikeLineWithInBetweenPointOnInsideSlopeHasCorrectNewToeDikeAtPolder()
+ {
+ SurfaceLine2 surfaceLine = CreateSimpleDike();
+ surfaceLine.EnsurePoint(2.5, 0.4); // in between point on inside slope
+ surfaceLine.SortPoints();
+ var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
+ SurfaceLine2 adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(1.0);
+ var expectedPointDikeToeAtPolder = new GeometryPoint
{
- var surfaceLine = new SurfaceLine2
- {
- CharacteristicPoints =
- {
- GeometryMustContainPoint = true
- },
- Geometry = new GeometryPointString()
- };
- var pointShoulderBaseInside = new GeometryPoint
- {
- X = 9,
- Z = 1
- };
- var pointShoulderTopInside = new GeometryPoint
- {
- X = 11,
- Z = 1
- };
- var pointDikeToeAtPolder = new GeometryPoint
- {
- X = 14,
- Z = 0
- };
- var pointDitchDikeSide = new GeometryPoint
- {
- X = 16,
- Z = 0
- };
- var pointBottomDitchDikeSide = new GeometryPoint
- {
- X = 17,
- Z = -1
- };
- var pointBottomDitchPolderSide = new GeometryPoint
- {
- X = 18,
- Z = -1
- };
- var pointDitchPolderSide = new GeometryPoint
- {
- X = 19,
- Z = 0
- };
- var pointSurfaceLevelInside = new GeometryPoint
- {
- X = 50,
- Z = 0
- };
- surfaceLine.EnsurePointOfType(0, 0, CharacteristicPointType.DikeToeAtRiver);
- surfaceLine.EnsurePointOfType(4, 3, CharacteristicPointType.DikeTopAtRiver);
- surfaceLine.EnsurePointOfType(6, 3, CharacteristicPointType.DikeTopAtPolder);
- surfaceLine.EnsurePointOfType(pointShoulderBaseInside.X, pointShoulderBaseInside.Z, CharacteristicPointType.ShoulderBaseInside);
- surfaceLine.EnsurePointOfType(pointShoulderTopInside.X, pointShoulderTopInside.Z, CharacteristicPointType.ShoulderTopInside);
- surfaceLine.EnsurePointOfType(pointDikeToeAtPolder.X, pointDikeToeAtPolder.Z, CharacteristicPointType.DikeToeAtPolder);
- surfaceLine.EnsurePointOfType(pointDitchDikeSide.X, pointDitchDikeSide.Z, CharacteristicPointType.DitchDikeSide);
- surfaceLine.EnsurePointOfType(pointBottomDitchDikeSide.X, pointBottomDitchDikeSide.Z, CharacteristicPointType.BottomDitchDikeSide);
- surfaceLine.EnsurePointOfType(pointBottomDitchPolderSide.X, pointBottomDitchPolderSide.Z, CharacteristicPointType.BottomDitchPolderSide);
- surfaceLine.EnsurePointOfType(pointDitchPolderSide.X, pointDitchPolderSide.Z, CharacteristicPointType.DitchPolderSide);
- surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside);
- var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
- const double deltaX = 1.0;
- SurfaceLine2 adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(deltaX);
- var expectedPointShoulderBaseInside = new GeometryPoint
- {
- X = pointShoulderBaseInside.X + deltaX,
- Z = pointShoulderBaseInside.Z
- };
- var expectedPointShoulderTopInside = new GeometryPoint
- {
- X = pointShoulderTopInside.X,
- Z = pointShoulderTopInside.Z
- };
- var expectedPointDikeToeAtPolder = new GeometryPoint
- {
- X = pointDikeToeAtPolder.X,
- Z = pointDikeToeAtPolder.Z
- };
- var expectedPointDitchDikeSide = new GeometryPoint
- {
- X = pointDitchDikeSide.X,
- Z = pointDitchDikeSide.Z
- };
- var expectedPointBottomDitchDikeSide = new GeometryPoint
- {
- X = pointBottomDitchDikeSide.X,
- Z = pointBottomDitchDikeSide.Z
- };
- var expectedPointBottomDitchPolderSide = new GeometryPoint
- {
- X = pointBottomDitchPolderSide.X,
- Z = pointBottomDitchPolderSide.Z
- };
- var expectedPointDitchPolderSide = new GeometryPoint
- {
- X = pointDitchPolderSide.X,
- Z = pointDitchPolderSide.Z
- };
- var expectedPointSurfaceLevelInside = new GeometryPoint
- {
- X = pointSurfaceLevelInside.X,
- Z = pointSurfaceLevelInside.Z
- };
- Assert.IsTrue(expectedPointShoulderBaseInside.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderBaseInside)));
- Assert.IsTrue(expectedPointShoulderTopInside.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderTopInside)));
- Assert.IsTrue(expectedPointDikeToeAtPolder.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder)));
- Assert.IsTrue(expectedPointDitchDikeSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DitchDikeSide)));
- Assert.IsTrue(expectedPointBottomDitchDikeSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.BottomDitchDikeSide)));
- Assert.IsTrue(expectedPointBottomDitchPolderSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.BottomDitchPolderSide)));
- Assert.IsTrue(expectedPointDitchPolderSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DitchPolderSide)));
- Assert.IsTrue(expectedPointSurfaceLevelInside.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.SurfaceLevelInside)));
- }
+ X = 4,
+ Z = 0
+ };
+ Assert.AreEqual(6, surfaceLine.Geometry.Count);
+ Assert.AreEqual(5, adaptedSurfaceLine.Geometry.Count); // in between point should be thrown away
+ Assert.IsTrue(expectedPointDikeToeAtPolder.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder)));
+ }
- [Test]
- public void AdaptedSimpleDikeLineWithInBetweenPointOnInsideSlopeHasCorrectNewToeDikeAtPolder()
+ [Test]
+ public void AdaptedSurfaceLineWithTrafficLoadPointsHasAdjustedPoints()
+ {
+ const double cTolerance = 0.0000001;
+
+ // Create the base surfaceline (dike with shoulder and ditch)
+ var surfaceLine = new SurfaceLine2
{
- SurfaceLine2 surfaceLine = CreateSimpleDike();
- surfaceLine.EnsurePoint(2.5, 0.4); // in between point on inside slope
- surfaceLine.SortPoints();
- var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
- SurfaceLine2 adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(1.0);
- var expectedPointDikeToeAtPolder = new GeometryPoint
+ CharacteristicPoints =
{
- X = 4,
- Z = 0
- };
- Assert.AreEqual(6, surfaceLine.Geometry.Count);
- Assert.AreEqual(5, adaptedSurfaceLine.Geometry.Count); // in between point should be thrown away
- Assert.IsTrue(expectedPointDikeToeAtPolder.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder)));
- }
-
- [Test]
- public void AdaptedSurfaceLineWithTrafficLoadPointsHasAdjustedPoints()
+ GeometryMustContainPoint = true
+ },
+ Geometry = new GeometryPointString()
+ };
+ var pointShoulderBaseInside = new GeometryPoint
{
- const double cTolerance = 0.0000001;
+ X = 9,
+ Z = 1
+ };
+ var pointShoulderTopInside = new GeometryPoint
+ {
+ X = 11,
+ Z = 1
+ };
+ var pointDikeToeAtPolder = new GeometryPoint
+ {
+ X = 14,
+ Z = 0
+ };
+ var pointDitchDikeSide = new GeometryPoint
+ {
+ X = 16,
+ Z = 0
+ };
+ var pointBottomDitchDikeSide = new GeometryPoint
+ {
+ X = 17,
+ Z = -1
+ };
+ var pointBottomDitchPolderSide = new GeometryPoint
+ {
+ X = 18,
+ Z = -1
+ };
+ var pointDitchPolderSide = new GeometryPoint
+ {
+ X = 19,
+ Z = 0
+ };
+ var pointSurfaceLevelInside = new GeometryPoint
+ {
+ X = 20,
+ Z = 0
+ };
+ surfaceLine.EnsurePointOfType(0, 0, CharacteristicPointType.DikeToeAtRiver);
+ surfaceLine.EnsurePointOfType(4, 3, CharacteristicPointType.DikeTopAtRiver);
+ surfaceLine.EnsurePointOfType(6, 3, CharacteristicPointType.DikeTopAtPolder);
+ surfaceLine.EnsurePointOfType(pointShoulderBaseInside.X, pointShoulderBaseInside.Z, CharacteristicPointType.ShoulderBaseInside);
+ surfaceLine.EnsurePointOfType(pointShoulderTopInside.X, pointShoulderTopInside.Z, CharacteristicPointType.ShoulderTopInside);
+ surfaceLine.EnsurePointOfType(pointDikeToeAtPolder.X, pointDikeToeAtPolder.Z, CharacteristicPointType.DikeToeAtPolder);
+ surfaceLine.EnsurePointOfType(pointDitchDikeSide.X, pointDitchDikeSide.Z, CharacteristicPointType.DitchDikeSide);
+ surfaceLine.EnsurePointOfType(pointBottomDitchDikeSide.X, pointBottomDitchDikeSide.Z, CharacteristicPointType.BottomDitchDikeSide);
+ surfaceLine.EnsurePointOfType(pointBottomDitchPolderSide.X, pointBottomDitchPolderSide.Z, CharacteristicPointType.BottomDitchPolderSide);
+ surfaceLine.EnsurePointOfType(pointDitchPolderSide.X, pointDitchPolderSide.Z, CharacteristicPointType.DitchPolderSide);
+ surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside);
+ var pointTrafficLoadOutside = new GeometryPoint
+ {
+ X = 7,
+ Z = 2.3333333333
+ };
+ var pointTrafficLoadInside = new GeometryPoint
+ {
+ X = 8,
+ Z = 1.6666666667
+ };
+ surfaceLine.EnsurePointOfType(pointTrafficLoadOutside.X, pointTrafficLoadOutside.Z, CharacteristicPointType.TrafficLoadOutside);
+ surfaceLine.EnsurePointOfType(pointTrafficLoadInside.X, pointTrafficLoadInside.Z, CharacteristicPointType.TrafficLoadInside);
+ surfaceLine.SortPoints();
+ var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
+ const double deltaX = 1.0;
+ SurfaceLine2 adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(deltaX);
+ var expectedPointTrafficLoadOutside = new GeometryPoint
+ {
+ X = 7,
+ Z = 2.5
+ };
+ var expectedPointTrafficLoadInside = new GeometryPoint
+ {
+ X = 8,
+ Z = 2.0
+ };
+ Assert.AreEqual(expectedPointTrafficLoadOutside.X, adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadOutside).X, cTolerance);
+ Assert.AreEqual(expectedPointTrafficLoadInside.X, adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadInside).X, cTolerance);
+ Assert.AreEqual(expectedPointTrafficLoadOutside.Z, adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadOutside).Z, cTolerance);
+ Assert.AreEqual(expectedPointTrafficLoadInside.Z, adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadInside).Z, cTolerance);
+ pointTrafficLoadOutside = new GeometryPoint
+ {
+ X = 9.5,
+ Z = 1.0
+ };
+ pointTrafficLoadInside = new GeometryPoint
+ {
+ X = 10.5,
+ Z = 1.0
+ };
+ surfaceLine.EnsurePointOfType(pointTrafficLoadOutside.X, pointTrafficLoadOutside.Z, CharacteristicPointType.TrafficLoadOutside);
+ surfaceLine.EnsurePointOfType(pointTrafficLoadInside.X, pointTrafficLoadInside.Z, CharacteristicPointType.TrafficLoadInside);
+ surfaceLine.SortPoints();
+ surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
+ adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(deltaX);
+ expectedPointTrafficLoadOutside = new GeometryPoint
+ {
+ X = 9.5,
+ Z = 1.25
+ };
+ expectedPointTrafficLoadInside = new GeometryPoint
+ {
+ X = 10.5,
+ Z = 1.0
+ };
+ Assert.AreEqual(expectedPointTrafficLoadOutside.X, adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadOutside).X, cTolerance);
+ Assert.AreEqual(expectedPointTrafficLoadInside.X, adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadInside).X, cTolerance);
+ Assert.AreEqual(expectedPointTrafficLoadOutside.Z, adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadOutside).Z, cTolerance);
+ Assert.AreEqual(expectedPointTrafficLoadInside.Z, adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadInside).Z, cTolerance);
+ }
- // Create the base surfaceline (dike with shoulder and ditch)
- var surfaceLine = new SurfaceLine2
- {
- CharacteristicPoints =
- {
- GeometryMustContainPoint = true
- },
- Geometry = new GeometryPointString()
- };
- var pointShoulderBaseInside = new GeometryPoint
- {
- X = 9,
- Z = 1
- };
- var pointShoulderTopInside = new GeometryPoint
- {
- X = 11,
- Z = 1
- };
- var pointDikeToeAtPolder = new GeometryPoint
- {
- X = 14,
- Z = 0
- };
- var pointDitchDikeSide = new GeometryPoint
- {
- X = 16,
- Z = 0
- };
- var pointBottomDitchDikeSide = new GeometryPoint
- {
- X = 17,
- Z = -1
- };
- var pointBottomDitchPolderSide = new GeometryPoint
- {
- X = 18,
- Z = -1
- };
- var pointDitchPolderSide = new GeometryPoint
- {
- X = 19,
- Z = 0
- };
- var pointSurfaceLevelInside = new GeometryPoint
- {
- X = 20,
- Z = 0
- };
- surfaceLine.EnsurePointOfType(0, 0, CharacteristicPointType.DikeToeAtRiver);
- surfaceLine.EnsurePointOfType(4, 3, CharacteristicPointType.DikeTopAtRiver);
- surfaceLine.EnsurePointOfType(6, 3, CharacteristicPointType.DikeTopAtPolder);
- surfaceLine.EnsurePointOfType(pointShoulderBaseInside.X, pointShoulderBaseInside.Z, CharacteristicPointType.ShoulderBaseInside);
- surfaceLine.EnsurePointOfType(pointShoulderTopInside.X, pointShoulderTopInside.Z, CharacteristicPointType.ShoulderTopInside);
- surfaceLine.EnsurePointOfType(pointDikeToeAtPolder.X, pointDikeToeAtPolder.Z, CharacteristicPointType.DikeToeAtPolder);
- surfaceLine.EnsurePointOfType(pointDitchDikeSide.X, pointDitchDikeSide.Z, CharacteristicPointType.DitchDikeSide);
- surfaceLine.EnsurePointOfType(pointBottomDitchDikeSide.X, pointBottomDitchDikeSide.Z, CharacteristicPointType.BottomDitchDikeSide);
- surfaceLine.EnsurePointOfType(pointBottomDitchPolderSide.X, pointBottomDitchPolderSide.Z, CharacteristicPointType.BottomDitchPolderSide);
- surfaceLine.EnsurePointOfType(pointDitchPolderSide.X, pointDitchPolderSide.Z, CharacteristicPointType.DitchPolderSide);
- surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside);
- var pointTrafficLoadOutside = new GeometryPoint
- {
- X = 7,
- Z = 2.3333333333
- };
- var pointTrafficLoadInside = new GeometryPoint
- {
- X = 8,
- Z = 1.6666666667
- };
- surfaceLine.EnsurePointOfType(pointTrafficLoadOutside.X, pointTrafficLoadOutside.Z, CharacteristicPointType.TrafficLoadOutside);
- surfaceLine.EnsurePointOfType(pointTrafficLoadInside.X, pointTrafficLoadInside.Z, CharacteristicPointType.TrafficLoadInside);
- surfaceLine.SortPoints();
- var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
- const double deltaX = 1.0;
- SurfaceLine2 adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(deltaX);
- var expectedPointTrafficLoadOutside = new GeometryPoint
- {
- X = 7,
- Z = 2.5
- };
- var expectedPointTrafficLoadInside = new GeometryPoint
- {
- X = 8,
- Z = 2.0
- };
- Assert.AreEqual(expectedPointTrafficLoadOutside.X, adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadOutside).X, cTolerance);
- Assert.AreEqual(expectedPointTrafficLoadInside.X, adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadInside).X, cTolerance);
- Assert.AreEqual(expectedPointTrafficLoadOutside.Z, adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadOutside).Z, cTolerance);
- Assert.AreEqual(expectedPointTrafficLoadInside.Z, adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadInside).Z, cTolerance);
- pointTrafficLoadOutside = new GeometryPoint
- {
- X = 9.5,
- Z = 1.0
- };
- pointTrafficLoadInside = new GeometryPoint
- {
- X = 10.5,
- Z = 1.0
- };
- surfaceLine.EnsurePointOfType(pointTrafficLoadOutside.X, pointTrafficLoadOutside.Z, CharacteristicPointType.TrafficLoadOutside);
- surfaceLine.EnsurePointOfType(pointTrafficLoadInside.X, pointTrafficLoadInside.Z, CharacteristicPointType.TrafficLoadInside);
- surfaceLine.SortPoints();
- surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
- adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(deltaX);
- expectedPointTrafficLoadOutside = new GeometryPoint
- {
- X = 9.5,
- Z = 1.25
- };
- expectedPointTrafficLoadInside = new GeometryPoint
- {
- X = 10.5,
- Z = 1.0
- };
- Assert.AreEqual(expectedPointTrafficLoadOutside.X, adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadOutside).X, cTolerance);
- Assert.AreEqual(expectedPointTrafficLoadInside.X, adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadInside).X, cTolerance);
- Assert.AreEqual(expectedPointTrafficLoadOutside.Z, adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadOutside).Z, cTolerance);
- Assert.AreEqual(expectedPointTrafficLoadInside.Z, adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadInside).Z, cTolerance);
- }
+ #endregion
- #endregion
+ #region ConstructWithSlopeTangent
- #region ConstructWithSlopeTangent
+ [Test]
+ public void IsExceptionThrownIfSlopeDoesNotIntersectSurfaceLine()
+ {
+ SurfaceLine2 surfaceLine = CreateSimpleDike();
+ var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
+ Assert.That(() => surfaceLineAdapter.ConstructNewSurfaceLineBySlope(0), Throws.InstanceOf());
+ }
- [Test]
- public void IsExceptionThrownIfSlopeDoesNotIntersectSurfaceLine()
- {
- SurfaceLine2 surfaceLine = CreateSimpleDike();
- var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
- Assert.That(() => surfaceLineAdapter.ConstructNewSurfaceLineBySlope(0), Throws.InstanceOf());
- }
+ [Test]
+ public void IsNotExceptionThrownIfSlopeEqualsTheCurrentSlope()
+ {
+ SurfaceLine2 surfaceLine = CreateSimpleDike();
+ var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
+ Assert.IsNotNull(surfaceLineAdapter.ConstructNewSurfaceLineBySlope(1.0));
+ }
- [Test]
- public void IsNotExceptionThrownIfSlopeEqualsTheCurrentSlope()
- {
- SurfaceLine2 surfaceLine = CreateSimpleDike();
- var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
- Assert.IsNotNull(surfaceLineAdapter.ConstructNewSurfaceLineBySlope(1.0));
- }
+ [Test]
+ public void ConstructNewSurfaceLineBySlopeReturnsANewSurfaceLine()
+ {
+ SurfaceLine2 surfaceLine = CreateSimpleDike();
+ var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
+ Assert.IsNotNull(surfaceLineAdapter.ConstructNewSurfaceLineBySlope(0.9));
+ }
- [Test]
- public void ConstructNewSurfaceLineBySlopeReturnsANewSurfaceLine()
+ [Test]
+ public void AdaptedSimpleDikeLineBySlopeHasCorrectNewToeDikeAtPolder()
+ {
+ SurfaceLine2 surfaceLine = CreateSimpleDike();
+ var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
+ const double slopeTangent = 1.0 / 3.0;
+ SurfaceLine2 adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent);
+ var expectedPointDikeToeAtPolder = new GeometryPoint
{
- SurfaceLine2 surfaceLine = CreateSimpleDike();
- var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
- Assert.IsNotNull(surfaceLineAdapter.ConstructNewSurfaceLineBySlope(0.9));
- }
+ X = 5,
+ Z = 0
+ };
+ Assert.IsTrue(expectedPointDikeToeAtPolder.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder)));
+ }
- [Test]
- public void AdaptedSimpleDikeLineBySlopeHasCorrectNewToeDikeAtPolder()
+ [Test]
+ public void AdaptedDikeWithShoulderBySlopeHasCorrectPointsAfterToeSlope()
+ {
+ var surfaceLine = new SurfaceLine2
{
- SurfaceLine2 surfaceLine = CreateSimpleDike();
- var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
- const double slopeTangent = 1.0 / 3.0;
- SurfaceLine2 adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent);
- var expectedPointDikeToeAtPolder = new GeometryPoint
+ CharacteristicPoints =
{
- X = 5,
- Z = 0
- };
- Assert.IsTrue(expectedPointDikeToeAtPolder.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder)));
- }
-
- [Test]
- public void AdaptedDikeWithShoulderBySlopeHasCorrectPointsAfterToeSlope()
+ GeometryMustContainPoint = true
+ },
+ Geometry = new GeometryPointString()
+ };
+ var pointShoulderBaseInside = new GeometryPoint
{
- var surfaceLine = new SurfaceLine2
- {
- CharacteristicPoints =
- {
- GeometryMustContainPoint = true
- },
- Geometry = new GeometryPointString()
- };
- var pointShoulderBaseInside = new GeometryPoint
- {
- X = 9,
- Z = 1
- };
- var pointShoulderTopInside = new GeometryPoint
- {
- X = 11,
- Z = 1
- };
- var pointDikeToeAtPolder = new GeometryPoint
- {
- X = 14,
- Z = 0
- };
- var pointSurfaceLevelInside = new GeometryPoint
- {
- X = 50,
- Z = 0
- };
- surfaceLine.EnsurePointOfType(0, 0, CharacteristicPointType.DikeToeAtRiver);
- surfaceLine.EnsurePointOfType(4, 3, CharacteristicPointType.DikeTopAtRiver);
- surfaceLine.EnsurePointOfType(6, 3, CharacteristicPointType.DikeTopAtPolder);
- surfaceLine.EnsurePointOfType(pointShoulderBaseInside.X, pointShoulderBaseInside.Z, CharacteristicPointType.ShoulderBaseInside);
- surfaceLine.EnsurePointOfType(pointShoulderTopInside.X, pointShoulderTopInside.Z, CharacteristicPointType.ShoulderTopInside);
- surfaceLine.EnsurePointOfType(pointDikeToeAtPolder.X, pointDikeToeAtPolder.Z, CharacteristicPointType.DikeToeAtPolder);
- surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside);
- var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
- const double slopeTangent = 1.0 / 4.0;
- SurfaceLine2 adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent);
- const double deltaX = 4.0;
- var expectedPointDikeToeAtPolder = new GeometryPoint
- {
- X = pointDikeToeAtPolder.X + deltaX,
- Z = pointDikeToeAtPolder.Z
- };
- var expectedPointSurfaceLevelInside = new GeometryPoint
- {
- X = pointSurfaceLevelInside.X,
- Z = pointSurfaceLevelInside.Z
- };
- Assert.IsFalse(adaptedSurfaceLine.HasAnnotation(CharacteristicPointType.ShoulderBaseInside));
- Assert.IsFalse(adaptedSurfaceLine.HasAnnotation(CharacteristicPointType.ShoulderTopInside));
- Assert.IsTrue(expectedPointDikeToeAtPolder.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder)));
- Assert.IsTrue(expectedPointSurfaceLevelInside.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.SurfaceLevelInside)));
- }
-
- [Test]
- public void AdaptedDikeWithDitchBySlopeHasCorrectPointsAfterToeSlope()
+ X = 9,
+ Z = 1
+ };
+ var pointShoulderTopInside = new GeometryPoint
{
- var surfaceLine = new SurfaceLine2
- {
- CharacteristicPoints =
- {
- GeometryMustContainPoint = true
- },
- Geometry = new GeometryPointString()
- };
- var pointDikeToeAtPolder = new GeometryPoint
- {
- X = 14,
- Z = 0
- };
- var pointDitchDikeSide = new GeometryPoint
- {
- X = 16,
- Z = 0
- };
- var pointBottomDitchDikeSide = new GeometryPoint
- {
- X = 17,
- Z = -1
- };
- var pointBottomDitchPolderSide = new GeometryPoint
- {
- X = 18,
- Z = -1
- };
- var pointDitchPolderSide = new GeometryPoint
- {
- X = 19,
- Z = 0
- };
- var pointSurfaceLevelInside = new GeometryPoint
- {
- X = 50,
- Z = 0
- };
- surfaceLine.EnsurePointOfType(0, 0, CharacteristicPointType.DikeToeAtRiver);
- surfaceLine.EnsurePointOfType(4, 3, CharacteristicPointType.DikeTopAtRiver);
- surfaceLine.EnsurePointOfType(6, 3, CharacteristicPointType.DikeTopAtPolder);
- surfaceLine.EnsurePointOfType(pointDikeToeAtPolder.X, pointDikeToeAtPolder.Z, CharacteristicPointType.DikeToeAtPolder);
- surfaceLine.EnsurePointOfType(pointDitchDikeSide.X, pointDitchDikeSide.Z, CharacteristicPointType.DitchDikeSide);
- surfaceLine.EnsurePointOfType(pointBottomDitchDikeSide.X, pointBottomDitchDikeSide.Z, CharacteristicPointType.BottomDitchDikeSide);
- surfaceLine.EnsurePointOfType(pointBottomDitchPolderSide.X, pointBottomDitchPolderSide.Z, CharacteristicPointType.BottomDitchPolderSide);
- surfaceLine.EnsurePointOfType(pointDitchPolderSide.X, pointDitchPolderSide.Z, CharacteristicPointType.DitchPolderSide);
- surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside);
- var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
- const double slopeTangent = 1.0 / 4.0;
- SurfaceLine2 adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent);
- const double deltaX = 4.0;
- const double deltaXDitch = 3;
- var expectedPointDikeToeAtPolder = new GeometryPoint
- {
- X = pointDikeToeAtPolder.X + deltaX,
- Z = pointDikeToeAtPolder.Z
- };
- var expectedPointDitchDikeSide = new GeometryPoint
- {
- X = pointDitchDikeSide.X + deltaX + deltaXDitch,
- Z = pointDitchDikeSide.Z
- };
- var expectedPointBottomDitchDikeSide = new GeometryPoint
- {
- X = pointBottomDitchDikeSide.X + deltaX + deltaXDitch,
- Z = pointBottomDitchDikeSide.Z
- };
- var expectedPointBottomDitchPolderSide = new GeometryPoint
- {
- X = pointBottomDitchPolderSide.X + deltaX + deltaXDitch,
- Z = pointBottomDitchPolderSide.Z
- };
- var expectedPointDitchPolderSide = new GeometryPoint
- {
- X = pointDitchPolderSide.X + deltaX + deltaXDitch,
- Z = pointDitchPolderSide.Z
- };
- var expectedPointSurfaceLevelInside = new GeometryPoint
- {
- X = pointSurfaceLevelInside.X,
- Z = pointSurfaceLevelInside.Z
- };
- Assert.IsTrue(expectedPointDikeToeAtPolder.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder)));
- Assert.IsTrue(expectedPointDitchDikeSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DitchDikeSide)));
- Assert.IsTrue(expectedPointBottomDitchDikeSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.BottomDitchDikeSide)));
- Assert.IsTrue(expectedPointBottomDitchPolderSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.BottomDitchPolderSide)));
- Assert.IsTrue(expectedPointDitchPolderSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DitchPolderSide)));
- Assert.IsTrue(expectedPointSurfaceLevelInside.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.SurfaceLevelInside)));
- }
+ X = 11,
+ Z = 1
+ };
+ var pointDikeToeAtPolder = new GeometryPoint
+ {
+ X = 14,
+ Z = 0
+ };
+ var pointSurfaceLevelInside = new GeometryPoint
+ {
+ X = 50,
+ Z = 0
+ };
+ surfaceLine.EnsurePointOfType(0, 0, CharacteristicPointType.DikeToeAtRiver);
+ surfaceLine.EnsurePointOfType(4, 3, CharacteristicPointType.DikeTopAtRiver);
+ surfaceLine.EnsurePointOfType(6, 3, CharacteristicPointType.DikeTopAtPolder);
+ surfaceLine.EnsurePointOfType(pointShoulderBaseInside.X, pointShoulderBaseInside.Z, CharacteristicPointType.ShoulderBaseInside);
+ surfaceLine.EnsurePointOfType(pointShoulderTopInside.X, pointShoulderTopInside.Z, CharacteristicPointType.ShoulderTopInside);
+ surfaceLine.EnsurePointOfType(pointDikeToeAtPolder.X, pointDikeToeAtPolder.Z, CharacteristicPointType.DikeToeAtPolder);
+ surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside);
+ var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
+ const double slopeTangent = 1.0 / 4.0;
+ SurfaceLine2 adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent);
+ const double deltaX = 4.0;
+ var expectedPointDikeToeAtPolder = new GeometryPoint
+ {
+ X = pointDikeToeAtPolder.X + deltaX,
+ Z = pointDikeToeAtPolder.Z
+ };
+ var expectedPointSurfaceLevelInside = new GeometryPoint
+ {
+ X = pointSurfaceLevelInside.X,
+ Z = pointSurfaceLevelInside.Z
+ };
+ Assert.IsFalse(adaptedSurfaceLine.HasAnnotation(CharacteristicPointType.ShoulderBaseInside));
+ Assert.IsFalse(adaptedSurfaceLine.HasAnnotation(CharacteristicPointType.ShoulderTopInside));
+ Assert.IsTrue(expectedPointDikeToeAtPolder.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder)));
+ Assert.IsTrue(expectedPointSurfaceLevelInside.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.SurfaceLevelInside)));
+ }
- [Test]
- public void IsExceptionThrownWhenSlopeDoesNotFit()
+ [Test]
+ public void AdaptedDikeWithDitchBySlopeHasCorrectPointsAfterToeSlope()
+ {
+ var surfaceLine = new SurfaceLine2
{
- var surfaceLine = new SurfaceLine2
+ CharacteristicPoints =
{
- CharacteristicPoints =
- {
- GeometryMustContainPoint = true
- },
- Geometry = new GeometryPointString()
- };
- var pointDikeToeAtPolder = new GeometryPoint
- {
- X = 14,
- Z = 0
- };
- var pointDitchDikeSide = new GeometryPoint
- {
- X = 16,
- Z = 0
- };
- var pointBottomDitchDikeSide = new GeometryPoint
- {
- X = 17,
- Z = -1
- };
- var pointBottomDitchPolderSide = new GeometryPoint
- {
- X = 18,
- Z = -1
- };
- var pointDitchPolderSide = new GeometryPoint
- {
- X = 19,
- Z = 0
- };
- var pointSurfaceLevelInside = new GeometryPoint
- {
- X = 20,
- Z = 0
- };
- surfaceLine.EnsurePointOfType(0, 0, CharacteristicPointType.DikeToeAtRiver);
- surfaceLine.EnsurePointOfType(4, 3, CharacteristicPointType.DikeTopAtRiver);
- surfaceLine.EnsurePointOfType(6, 3, CharacteristicPointType.DikeTopAtPolder);
- surfaceLine.EnsurePointOfType(pointDikeToeAtPolder.X, pointDikeToeAtPolder.Z, CharacteristicPointType.DikeToeAtPolder);
- surfaceLine.EnsurePointOfType(pointDitchDikeSide.X, pointDitchDikeSide.Z, CharacteristicPointType.DitchDikeSide);
- surfaceLine.EnsurePointOfType(pointBottomDitchDikeSide.X, pointBottomDitchDikeSide.Z, CharacteristicPointType.BottomDitchDikeSide);
- surfaceLine.EnsurePointOfType(pointBottomDitchPolderSide.X, pointBottomDitchPolderSide.Z, CharacteristicPointType.BottomDitchPolderSide);
- surfaceLine.EnsurePointOfType(pointDitchPolderSide.X, pointDitchPolderSide.Z, CharacteristicPointType.DitchPolderSide);
- surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside);
- var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
- const double slopeTangent = 1.0 / 4.0;
- Assert.That(() => surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent), Throws.InstanceOf());
- }
+ GeometryMustContainPoint = true
+ },
+ Geometry = new GeometryPointString()
+ };
+ var pointDikeToeAtPolder = new GeometryPoint
+ {
+ X = 14,
+ Z = 0
+ };
+ var pointDitchDikeSide = new GeometryPoint
+ {
+ X = 16,
+ Z = 0
+ };
+ var pointBottomDitchDikeSide = new GeometryPoint
+ {
+ X = 17,
+ Z = -1
+ };
+ var pointBottomDitchPolderSide = new GeometryPoint
+ {
+ X = 18,
+ Z = -1
+ };
+ var pointDitchPolderSide = new GeometryPoint
+ {
+ X = 19,
+ Z = 0
+ };
+ var pointSurfaceLevelInside = new GeometryPoint
+ {
+ X = 50,
+ Z = 0
+ };
+ surfaceLine.EnsurePointOfType(0, 0, CharacteristicPointType.DikeToeAtRiver);
+ surfaceLine.EnsurePointOfType(4, 3, CharacteristicPointType.DikeTopAtRiver);
+ surfaceLine.EnsurePointOfType(6, 3, CharacteristicPointType.DikeTopAtPolder);
+ surfaceLine.EnsurePointOfType(pointDikeToeAtPolder.X, pointDikeToeAtPolder.Z, CharacteristicPointType.DikeToeAtPolder);
+ surfaceLine.EnsurePointOfType(pointDitchDikeSide.X, pointDitchDikeSide.Z, CharacteristicPointType.DitchDikeSide);
+ surfaceLine.EnsurePointOfType(pointBottomDitchDikeSide.X, pointBottomDitchDikeSide.Z, CharacteristicPointType.BottomDitchDikeSide);
+ surfaceLine.EnsurePointOfType(pointBottomDitchPolderSide.X, pointBottomDitchPolderSide.Z, CharacteristicPointType.BottomDitchPolderSide);
+ surfaceLine.EnsurePointOfType(pointDitchPolderSide.X, pointDitchPolderSide.Z, CharacteristicPointType.DitchPolderSide);
+ surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside);
+ var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
+ const double slopeTangent = 1.0 / 4.0;
+ SurfaceLine2 adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent);
+ const double deltaX = 4.0;
+ const double deltaXDitch = 3;
+ var expectedPointDikeToeAtPolder = new GeometryPoint
+ {
+ X = pointDikeToeAtPolder.X + deltaX,
+ Z = pointDikeToeAtPolder.Z
+ };
+ var expectedPointDitchDikeSide = new GeometryPoint
+ {
+ X = pointDitchDikeSide.X + deltaX + deltaXDitch,
+ Z = pointDitchDikeSide.Z
+ };
+ var expectedPointBottomDitchDikeSide = new GeometryPoint
+ {
+ X = pointBottomDitchDikeSide.X + deltaX + deltaXDitch,
+ Z = pointBottomDitchDikeSide.Z
+ };
+ var expectedPointBottomDitchPolderSide = new GeometryPoint
+ {
+ X = pointBottomDitchPolderSide.X + deltaX + deltaXDitch,
+ Z = pointBottomDitchPolderSide.Z
+ };
+ var expectedPointDitchPolderSide = new GeometryPoint
+ {
+ X = pointDitchPolderSide.X + deltaX + deltaXDitch,
+ Z = pointDitchPolderSide.Z
+ };
+ var expectedPointSurfaceLevelInside = new GeometryPoint
+ {
+ X = pointSurfaceLevelInside.X,
+ Z = pointSurfaceLevelInside.Z
+ };
+ Assert.IsTrue(expectedPointDikeToeAtPolder.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder)));
+ Assert.IsTrue(expectedPointDitchDikeSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DitchDikeSide)));
+ Assert.IsTrue(expectedPointBottomDitchDikeSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.BottomDitchDikeSide)));
+ Assert.IsTrue(expectedPointBottomDitchPolderSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.BottomDitchPolderSide)));
+ Assert.IsTrue(expectedPointDitchPolderSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DitchPolderSide)));
+ Assert.IsTrue(expectedPointSurfaceLevelInside.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.SurfaceLevelInside)));
+ }
- [Test]
- public void AdaptedDikeWithShoulderAndDitchBySlopeHasCorrectPointsAfterSlopeIntersectsBeyondDikeToe()
+ [Test]
+ public void IsExceptionThrownWhenSlopeDoesNotFit()
+ {
+ var surfaceLine = new SurfaceLine2
{
- var surfaceLine = new SurfaceLine2
+ CharacteristicPoints =
{
- CharacteristicPoints =
- {
- GeometryMustContainPoint = true
- },
- Geometry = new GeometryPointString()
- };
- var pointShoulderBaseInside = new GeometryPoint
- {
- X = 9,
- Z = 1
- };
- var pointShoulderTopInside = new GeometryPoint
- {
- X = 11,
- Z = 1
- };
- var pointDikeToeAtPolder = new GeometryPoint
- {
- X = 14,
- Z = 0
- };
- var pointDitchDikeSide = new GeometryPoint
- {
- X = 16,
- Z = 0
- };
- var pointBottomDitchDikeSide = new GeometryPoint
- {
- X = 17,
- Z = -1
- };
- var pointBottomDitchPolderSide = new GeometryPoint
- {
- X = 18,
- Z = -1
- };
- var pointDitchPolderSide = new GeometryPoint
- {
- X = 19,
- Z = 0
- };
- var pointSurfaceLevelInside = new GeometryPoint
- {
- X = 50,
- Z = 0
- };
- surfaceLine.EnsurePointOfType(0, 0, CharacteristicPointType.DikeToeAtRiver);
- surfaceLine.EnsurePointOfType(4, 3, CharacteristicPointType.DikeTopAtRiver);
- surfaceLine.EnsurePointOfType(6, 3, CharacteristicPointType.DikeTopAtPolder);
- surfaceLine.EnsurePointOfType(pointShoulderBaseInside.X, pointShoulderBaseInside.Z, CharacteristicPointType.ShoulderBaseInside);
- surfaceLine.EnsurePointOfType(pointShoulderTopInside.X, pointShoulderTopInside.Z, CharacteristicPointType.ShoulderTopInside);
- surfaceLine.EnsurePointOfType(pointDikeToeAtPolder.X, pointDikeToeAtPolder.Z, CharacteristicPointType.DikeToeAtPolder);
- surfaceLine.EnsurePointOfType(pointDitchDikeSide.X, pointDitchDikeSide.Z, CharacteristicPointType.DitchDikeSide);
- surfaceLine.EnsurePointOfType(pointBottomDitchDikeSide.X, pointBottomDitchDikeSide.Z, CharacteristicPointType.BottomDitchDikeSide);
- surfaceLine.EnsurePointOfType(pointBottomDitchPolderSide.X, pointBottomDitchPolderSide.Z, CharacteristicPointType.BottomDitchPolderSide);
- surfaceLine.EnsurePointOfType(pointDitchPolderSide.X, pointDitchPolderSide.Z, CharacteristicPointType.DitchPolderSide);
- surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside);
- var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
- const double slopeTangent = 1.0 / 4.0;
- SurfaceLine2 adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent);
- const double deltaX = 4.0;
- const double deltaXDitch = 3;
- var expectedPointDikeToeAtPolder = new GeometryPoint
- {
- X = pointDikeToeAtPolder.X + deltaX,
- Z = pointDikeToeAtPolder.Z
- };
- var expectedPointDitchDikeSide = new GeometryPoint
- {
- X = pointDitchDikeSide.X + deltaX + deltaXDitch,
- Z = pointDitchDikeSide.Z
- };
- var expectedPointBottomDitchDikeSide = new GeometryPoint
- {
- X = pointBottomDitchDikeSide.X + deltaX + deltaXDitch,
- Z = pointBottomDitchDikeSide.Z
- };
- var expectedPointBottomDitchPolderSide = new GeometryPoint
- {
- X = pointBottomDitchPolderSide.X + deltaX + deltaXDitch,
- Z = pointBottomDitchPolderSide.Z
- };
- var expectedPointDitchPolderSide = new GeometryPoint
- {
- X = pointDitchPolderSide.X + deltaX + deltaXDitch,
- Z = pointDitchPolderSide.Z
- };
- var expectedPointSurfaceLevelInside = new GeometryPoint
- {
- X = pointSurfaceLevelInside.X,
- Z = pointSurfaceLevelInside.Z
- };
- Assert.IsFalse(adaptedSurfaceLine.HasAnnotation(CharacteristicPointType.ShoulderBaseInside));
- Assert.IsFalse(adaptedSurfaceLine.HasAnnotation(CharacteristicPointType.ShoulderTopInside));
- Assert.IsTrue(expectedPointDikeToeAtPolder.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder)));
- Assert.IsTrue(expectedPointDitchDikeSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DitchDikeSide)));
- Assert.IsTrue(expectedPointBottomDitchDikeSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.BottomDitchDikeSide)));
- Assert.IsTrue(expectedPointBottomDitchPolderSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.BottomDitchPolderSide)));
- Assert.IsTrue(expectedPointDitchPolderSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DitchPolderSide)));
- Assert.IsTrue(expectedPointSurfaceLevelInside.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.SurfaceLevelInside)));
- }
+ GeometryMustContainPoint = true
+ },
+ Geometry = new GeometryPointString()
+ };
+ var pointDikeToeAtPolder = new GeometryPoint
+ {
+ X = 14,
+ Z = 0
+ };
+ var pointDitchDikeSide = new GeometryPoint
+ {
+ X = 16,
+ Z = 0
+ };
+ var pointBottomDitchDikeSide = new GeometryPoint
+ {
+ X = 17,
+ Z = -1
+ };
+ var pointBottomDitchPolderSide = new GeometryPoint
+ {
+ X = 18,
+ Z = -1
+ };
+ var pointDitchPolderSide = new GeometryPoint
+ {
+ X = 19,
+ Z = 0
+ };
+ var pointSurfaceLevelInside = new GeometryPoint
+ {
+ X = 20,
+ Z = 0
+ };
+ surfaceLine.EnsurePointOfType(0, 0, CharacteristicPointType.DikeToeAtRiver);
+ surfaceLine.EnsurePointOfType(4, 3, CharacteristicPointType.DikeTopAtRiver);
+ surfaceLine.EnsurePointOfType(6, 3, CharacteristicPointType.DikeTopAtPolder);
+ surfaceLine.EnsurePointOfType(pointDikeToeAtPolder.X, pointDikeToeAtPolder.Z, CharacteristicPointType.DikeToeAtPolder);
+ surfaceLine.EnsurePointOfType(pointDitchDikeSide.X, pointDitchDikeSide.Z, CharacteristicPointType.DitchDikeSide);
+ surfaceLine.EnsurePointOfType(pointBottomDitchDikeSide.X, pointBottomDitchDikeSide.Z, CharacteristicPointType.BottomDitchDikeSide);
+ surfaceLine.EnsurePointOfType(pointBottomDitchPolderSide.X, pointBottomDitchPolderSide.Z, CharacteristicPointType.BottomDitchPolderSide);
+ surfaceLine.EnsurePointOfType(pointDitchPolderSide.X, pointDitchPolderSide.Z, CharacteristicPointType.DitchPolderSide);
+ surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside);
+ var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
+ const double slopeTangent = 1.0 / 4.0;
+ Assert.That(() => surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent), Throws.InstanceOf());
+ }
- [Test]
- public void AdaptedDikeWithShoulderAndDitchBySlopeHasCorrectPointsAfterSlopeIntersectsInShoulderBetweenBaseAndTop()
+ [Test]
+ public void AdaptedDikeWithShoulderAndDitchBySlopeHasCorrectPointsAfterSlopeIntersectsBeyondDikeToe()
+ {
+ var surfaceLine = new SurfaceLine2
{
- var surfaceLine = new SurfaceLine2
+ CharacteristicPoints =
{
- CharacteristicPoints =
- {
- GeometryMustContainPoint = true
- },
- Geometry = new GeometryPointString()
- };
- var pointShoulderBaseInside = new GeometryPoint
- {
- X = 9,
- Z = 1
- };
- var pointShoulderTopInside = new GeometryPoint
- {
- X = 11,
- Z = 1
- };
- var pointDikeToeAtPolder = new GeometryPoint
- {
- X = 14,
- Z = 0
- };
- var pointDitchDikeSide = new GeometryPoint
- {
- X = 16,
- Z = 0
- };
- var pointBottomDitchDikeSide = new GeometryPoint
- {
- X = 17,
- Z = -1
- };
- var pointBottomDitchPolderSide = new GeometryPoint
- {
- X = 18,
- Z = -1
- };
- var pointDitchPolderSide = new GeometryPoint
- {
- X = 19,
- Z = 0
- };
- var pointSurfaceLevelInside = new GeometryPoint
- {
- X = 50,
- Z = 0
- };
- surfaceLine.EnsurePointOfType(0, 0, CharacteristicPointType.DikeToeAtRiver);
- surfaceLine.EnsurePointOfType(4, 3, CharacteristicPointType.DikeTopAtRiver);
- surfaceLine.EnsurePointOfType(6, 3, CharacteristicPointType.DikeTopAtPolder);
- surfaceLine.EnsurePointOfType(pointShoulderBaseInside.X, pointShoulderBaseInside.Z, CharacteristicPointType.ShoulderBaseInside);
- surfaceLine.EnsurePointOfType(pointShoulderTopInside.X, pointShoulderTopInside.Z, CharacteristicPointType.ShoulderTopInside);
- surfaceLine.EnsurePointOfType(pointDikeToeAtPolder.X, pointDikeToeAtPolder.Z, CharacteristicPointType.DikeToeAtPolder);
- surfaceLine.EnsurePointOfType(pointDitchDikeSide.X, pointDitchDikeSide.Z, CharacteristicPointType.DitchDikeSide);
- surfaceLine.EnsurePointOfType(pointBottomDitchDikeSide.X, pointBottomDitchDikeSide.Z, CharacteristicPointType.BottomDitchDikeSide);
- surfaceLine.EnsurePointOfType(pointBottomDitchPolderSide.X, pointBottomDitchPolderSide.Z, CharacteristicPointType.BottomDitchPolderSide);
- surfaceLine.EnsurePointOfType(pointDitchPolderSide.X, pointDitchPolderSide.Z, CharacteristicPointType.DitchPolderSide);
- surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside);
- var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
- const double slopeTangent = 1.0 / 2.0;
- SurfaceLine2 adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent);
- const double deltaX = 1.0;
- var expectedShoulderBaseInside = new GeometryPoint
- {
- X = pointShoulderBaseInside.X + deltaX,
- Z = pointShoulderBaseInside.Z
- };
- var expectedShoulderTopInside = new GeometryPoint
- {
- X = pointShoulderTopInside.X,
- Z = pointShoulderTopInside.Z
- };
- var expectedPointDikeToeAtPolder = new GeometryPoint
- {
- X = pointDikeToeAtPolder.X,
- Z = pointDikeToeAtPolder.Z
- };
- var expectedPointDitchDikeSide = new GeometryPoint
- {
- X = pointDitchDikeSide.X,
- Z = pointDitchDikeSide.Z
- };
- var expectedPointBottomDitchDikeSide = new GeometryPoint
- {
- X = pointBottomDitchDikeSide.X,
- Z = pointBottomDitchDikeSide.Z
- };
- var expectedPointBottomDitchPolderSide = new GeometryPoint
- {
- X = pointBottomDitchPolderSide.X,
- Z = pointBottomDitchPolderSide.Z
- };
- var expectedPointDitchPolderSide = new GeometryPoint
- {
- X = pointDitchPolderSide.X,
- Z = pointDitchPolderSide.Z
- };
- var expectedPointSurfaceLevelInside = new GeometryPoint
- {
- X = pointSurfaceLevelInside.X,
- Z = pointSurfaceLevelInside.Z
- };
- Assert.IsTrue(expectedShoulderBaseInside.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderBaseInside)));
- Assert.IsTrue(expectedShoulderTopInside.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderTopInside)));
- Assert.IsTrue(expectedPointDikeToeAtPolder.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder)));
- Assert.IsTrue(expectedPointDitchDikeSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DitchDikeSide)));
- Assert.IsTrue(expectedPointBottomDitchDikeSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.BottomDitchDikeSide)));
- Assert.IsTrue(expectedPointBottomDitchPolderSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.BottomDitchPolderSide)));
- Assert.IsTrue(expectedPointDitchPolderSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DitchPolderSide)));
- Assert.IsTrue(expectedPointSurfaceLevelInside.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.SurfaceLevelInside)));
- }
+ GeometryMustContainPoint = true
+ },
+ Geometry = new GeometryPointString()
+ };
+ var pointShoulderBaseInside = new GeometryPoint
+ {
+ X = 9,
+ Z = 1
+ };
+ var pointShoulderTopInside = new GeometryPoint
+ {
+ X = 11,
+ Z = 1
+ };
+ var pointDikeToeAtPolder = new GeometryPoint
+ {
+ X = 14,
+ Z = 0
+ };
+ var pointDitchDikeSide = new GeometryPoint
+ {
+ X = 16,
+ Z = 0
+ };
+ var pointBottomDitchDikeSide = new GeometryPoint
+ {
+ X = 17,
+ Z = -1
+ };
+ var pointBottomDitchPolderSide = new GeometryPoint
+ {
+ X = 18,
+ Z = -1
+ };
+ var pointDitchPolderSide = new GeometryPoint
+ {
+ X = 19,
+ Z = 0
+ };
+ var pointSurfaceLevelInside = new GeometryPoint
+ {
+ X = 50,
+ Z = 0
+ };
+ surfaceLine.EnsurePointOfType(0, 0, CharacteristicPointType.DikeToeAtRiver);
+ surfaceLine.EnsurePointOfType(4, 3, CharacteristicPointType.DikeTopAtRiver);
+ surfaceLine.EnsurePointOfType(6, 3, CharacteristicPointType.DikeTopAtPolder);
+ surfaceLine.EnsurePointOfType(pointShoulderBaseInside.X, pointShoulderBaseInside.Z, CharacteristicPointType.ShoulderBaseInside);
+ surfaceLine.EnsurePointOfType(pointShoulderTopInside.X, pointShoulderTopInside.Z, CharacteristicPointType.ShoulderTopInside);
+ surfaceLine.EnsurePointOfType(pointDikeToeAtPolder.X, pointDikeToeAtPolder.Z, CharacteristicPointType.DikeToeAtPolder);
+ surfaceLine.EnsurePointOfType(pointDitchDikeSide.X, pointDitchDikeSide.Z, CharacteristicPointType.DitchDikeSide);
+ surfaceLine.EnsurePointOfType(pointBottomDitchDikeSide.X, pointBottomDitchDikeSide.Z, CharacteristicPointType.BottomDitchDikeSide);
+ surfaceLine.EnsurePointOfType(pointBottomDitchPolderSide.X, pointBottomDitchPolderSide.Z, CharacteristicPointType.BottomDitchPolderSide);
+ surfaceLine.EnsurePointOfType(pointDitchPolderSide.X, pointDitchPolderSide.Z, CharacteristicPointType.DitchPolderSide);
+ surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside);
+ var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
+ const double slopeTangent = 1.0 / 4.0;
+ SurfaceLine2 adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent);
+ const double deltaX = 4.0;
+ const double deltaXDitch = 3;
+ var expectedPointDikeToeAtPolder = new GeometryPoint
+ {
+ X = pointDikeToeAtPolder.X + deltaX,
+ Z = pointDikeToeAtPolder.Z
+ };
+ var expectedPointDitchDikeSide = new GeometryPoint
+ {
+ X = pointDitchDikeSide.X + deltaX + deltaXDitch,
+ Z = pointDitchDikeSide.Z
+ };
+ var expectedPointBottomDitchDikeSide = new GeometryPoint
+ {
+ X = pointBottomDitchDikeSide.X + deltaX + deltaXDitch,
+ Z = pointBottomDitchDikeSide.Z
+ };
+ var expectedPointBottomDitchPolderSide = new GeometryPoint
+ {
+ X = pointBottomDitchPolderSide.X + deltaX + deltaXDitch,
+ Z = pointBottomDitchPolderSide.Z
+ };
+ var expectedPointDitchPolderSide = new GeometryPoint
+ {
+ X = pointDitchPolderSide.X + deltaX + deltaXDitch,
+ Z = pointDitchPolderSide.Z
+ };
+ var expectedPointSurfaceLevelInside = new GeometryPoint
+ {
+ X = pointSurfaceLevelInside.X,
+ Z = pointSurfaceLevelInside.Z
+ };
+ Assert.IsFalse(adaptedSurfaceLine.HasAnnotation(CharacteristicPointType.ShoulderBaseInside));
+ Assert.IsFalse(adaptedSurfaceLine.HasAnnotation(CharacteristicPointType.ShoulderTopInside));
+ Assert.IsTrue(expectedPointDikeToeAtPolder.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder)));
+ Assert.IsTrue(expectedPointDitchDikeSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DitchDikeSide)));
+ Assert.IsTrue(expectedPointBottomDitchDikeSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.BottomDitchDikeSide)));
+ Assert.IsTrue(expectedPointBottomDitchPolderSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.BottomDitchPolderSide)));
+ Assert.IsTrue(expectedPointDitchPolderSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DitchPolderSide)));
+ Assert.IsTrue(expectedPointSurfaceLevelInside.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.SurfaceLevelInside)));
+ }
- [Test]
- public void AdaptedDikeWithShoulderAndDitchBySlopeHasCorrectPointsAfterSlopeIntersectsOnShoulderTop()
+ [Test]
+ public void AdaptedDikeWithShoulderAndDitchBySlopeHasCorrectPointsAfterSlopeIntersectsInShoulderBetweenBaseAndTop()
+ {
+ var surfaceLine = new SurfaceLine2
{
- var surfaceLine = new SurfaceLine2
+ CharacteristicPoints =
{
- CharacteristicPoints =
- {
- GeometryMustContainPoint = true
- },
- Geometry = new GeometryPointString()
- };
- var pointShoulderBaseInside = new GeometryPoint
- {
- X = 9,
- Z = 1
- };
- var pointShoulderTopInside = new GeometryPoint
- {
- X = 10,
- Z = 1
- };
- var pointDikeToeAtPolder = new GeometryPoint
- {
- X = 14,
- Z = 0
- };
- var pointDitchDikeSide = new GeometryPoint
- {
- X = 16,
- Z = 0
- };
- var pointBottomDitchDikeSide = new GeometryPoint
- {
- X = 17,
- Z = -1
- };
- var pointBottomDitchPolderSide = new GeometryPoint
- {
- X = 18,
- Z = -1
- };
- var pointDitchPolderSide = new GeometryPoint
- {
- X = 19,
- Z = 0
- };
- var pointSurfaceLevelInside = new GeometryPoint
- {
- X = 50,
- Z = 0
- };
- surfaceLine.EnsurePointOfType(0, 0, CharacteristicPointType.DikeToeAtRiver);
- surfaceLine.EnsurePointOfType(4, 3, CharacteristicPointType.DikeTopAtRiver);
- surfaceLine.EnsurePointOfType(6, 3, CharacteristicPointType.DikeTopAtPolder);
- surfaceLine.EnsurePointOfType(pointShoulderBaseInside.X, pointShoulderBaseInside.Z, CharacteristicPointType.ShoulderBaseInside);
- surfaceLine.EnsurePointOfType(pointShoulderTopInside.X, pointShoulderTopInside.Z, CharacteristicPointType.ShoulderTopInside);
- surfaceLine.EnsurePointOfType(pointDikeToeAtPolder.X, pointDikeToeAtPolder.Z, CharacteristicPointType.DikeToeAtPolder);
- surfaceLine.EnsurePointOfType(pointDitchDikeSide.X, pointDitchDikeSide.Z, CharacteristicPointType.DitchDikeSide);
- surfaceLine.EnsurePointOfType(pointBottomDitchDikeSide.X, pointBottomDitchDikeSide.Z, CharacteristicPointType.BottomDitchDikeSide);
- surfaceLine.EnsurePointOfType(pointBottomDitchPolderSide.X, pointBottomDitchPolderSide.Z, CharacteristicPointType.BottomDitchPolderSide);
- surfaceLine.EnsurePointOfType(pointDitchPolderSide.X, pointDitchPolderSide.Z, CharacteristicPointType.DitchPolderSide);
- surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside);
- var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
- const double slopeTangent = 1.0 / 2.0;
- SurfaceLine2 adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent);
- var expectedNewPoint = new GeometryPoint
- {
- X = pointShoulderTopInside.X,
- Z = pointShoulderTopInside.Z
- };
- var expectedPointDikeToeAtPolder = new GeometryPoint
- {
- X = pointDikeToeAtPolder.X,
- Z = pointDikeToeAtPolder.Z
- };
- var expectedPointDitchDikeSide = new GeometryPoint
- {
- X = pointDitchDikeSide.X,
- Z = pointDitchDikeSide.Z
- };
- var expectedPointBottomDitchDikeSide = new GeometryPoint
- {
- X = pointBottomDitchDikeSide.X,
- Z = pointBottomDitchDikeSide.Z
- };
- var expectedPointBottomDitchPolderSide = new GeometryPoint
- {
- X = pointBottomDitchPolderSide.X,
- Z = pointBottomDitchPolderSide.Z
- };
- var expectedPointDitchPolderSide = new GeometryPoint
- {
- X = pointDitchPolderSide.X,
- Z = pointDitchPolderSide.Z
- };
- var expectedPointSurfaceLevelInside = new GeometryPoint
- {
- X = pointSurfaceLevelInside.X,
- Z = pointSurfaceLevelInside.Z
- };
- Assert.IsFalse(adaptedSurfaceLine.HasAnnotation(CharacteristicPointType.ShoulderBaseInside));
- Assert.IsFalse(adaptedSurfaceLine.HasAnnotation(CharacteristicPointType.ShoulderTopInside));
- Assert.IsTrue(adaptedSurfaceLine.Geometry.GetPointAt(expectedNewPoint.X, expectedNewPoint.Z) != null);
- Assert.IsTrue(expectedPointDikeToeAtPolder.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder)));
- Assert.IsTrue(expectedPointDitchDikeSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DitchDikeSide)));
- Assert.IsTrue(expectedPointBottomDitchDikeSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.BottomDitchDikeSide)));
- Assert.IsTrue(expectedPointBottomDitchPolderSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.BottomDitchPolderSide)));
- Assert.IsTrue(expectedPointDitchPolderSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DitchPolderSide)));
- Assert.IsTrue(expectedPointSurfaceLevelInside.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.SurfaceLevelInside)));
- }
+ GeometryMustContainPoint = true
+ },
+ Geometry = new GeometryPointString()
+ };
+ var pointShoulderBaseInside = new GeometryPoint
+ {
+ X = 9,
+ Z = 1
+ };
+ var pointShoulderTopInside = new GeometryPoint
+ {
+ X = 11,
+ Z = 1
+ };
+ var pointDikeToeAtPolder = new GeometryPoint
+ {
+ X = 14,
+ Z = 0
+ };
+ var pointDitchDikeSide = new GeometryPoint
+ {
+ X = 16,
+ Z = 0
+ };
+ var pointBottomDitchDikeSide = new GeometryPoint
+ {
+ X = 17,
+ Z = -1
+ };
+ var pointBottomDitchPolderSide = new GeometryPoint
+ {
+ X = 18,
+ Z = -1
+ };
+ var pointDitchPolderSide = new GeometryPoint
+ {
+ X = 19,
+ Z = 0
+ };
+ var pointSurfaceLevelInside = new GeometryPoint
+ {
+ X = 50,
+ Z = 0
+ };
+ surfaceLine.EnsurePointOfType(0, 0, CharacteristicPointType.DikeToeAtRiver);
+ surfaceLine.EnsurePointOfType(4, 3, CharacteristicPointType.DikeTopAtRiver);
+ surfaceLine.EnsurePointOfType(6, 3, CharacteristicPointType.DikeTopAtPolder);
+ surfaceLine.EnsurePointOfType(pointShoulderBaseInside.X, pointShoulderBaseInside.Z, CharacteristicPointType.ShoulderBaseInside);
+ surfaceLine.EnsurePointOfType(pointShoulderTopInside.X, pointShoulderTopInside.Z, CharacteristicPointType.ShoulderTopInside);
+ surfaceLine.EnsurePointOfType(pointDikeToeAtPolder.X, pointDikeToeAtPolder.Z, CharacteristicPointType.DikeToeAtPolder);
+ surfaceLine.EnsurePointOfType(pointDitchDikeSide.X, pointDitchDikeSide.Z, CharacteristicPointType.DitchDikeSide);
+ surfaceLine.EnsurePointOfType(pointBottomDitchDikeSide.X, pointBottomDitchDikeSide.Z, CharacteristicPointType.BottomDitchDikeSide);
+ surfaceLine.EnsurePointOfType(pointBottomDitchPolderSide.X, pointBottomDitchPolderSide.Z, CharacteristicPointType.BottomDitchPolderSide);
+ surfaceLine.EnsurePointOfType(pointDitchPolderSide.X, pointDitchPolderSide.Z, CharacteristicPointType.DitchPolderSide);
+ surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside);
+ var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
+ const double slopeTangent = 1.0 / 2.0;
+ SurfaceLine2 adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent);
+ const double deltaX = 1.0;
+ var expectedShoulderBaseInside = new GeometryPoint
+ {
+ X = pointShoulderBaseInside.X + deltaX,
+ Z = pointShoulderBaseInside.Z
+ };
+ var expectedShoulderTopInside = new GeometryPoint
+ {
+ X = pointShoulderTopInside.X,
+ Z = pointShoulderTopInside.Z
+ };
+ var expectedPointDikeToeAtPolder = new GeometryPoint
+ {
+ X = pointDikeToeAtPolder.X,
+ Z = pointDikeToeAtPolder.Z
+ };
+ var expectedPointDitchDikeSide = new GeometryPoint
+ {
+ X = pointDitchDikeSide.X,
+ Z = pointDitchDikeSide.Z
+ };
+ var expectedPointBottomDitchDikeSide = new GeometryPoint
+ {
+ X = pointBottomDitchDikeSide.X,
+ Z = pointBottomDitchDikeSide.Z
+ };
+ var expectedPointBottomDitchPolderSide = new GeometryPoint
+ {
+ X = pointBottomDitchPolderSide.X,
+ Z = pointBottomDitchPolderSide.Z
+ };
+ var expectedPointDitchPolderSide = new GeometryPoint
+ {
+ X = pointDitchPolderSide.X,
+ Z = pointDitchPolderSide.Z
+ };
+ var expectedPointSurfaceLevelInside = new GeometryPoint
+ {
+ X = pointSurfaceLevelInside.X,
+ Z = pointSurfaceLevelInside.Z
+ };
+ Assert.IsTrue(expectedShoulderBaseInside.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderBaseInside)));
+ Assert.IsTrue(expectedShoulderTopInside.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderTopInside)));
+ Assert.IsTrue(expectedPointDikeToeAtPolder.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder)));
+ Assert.IsTrue(expectedPointDitchDikeSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DitchDikeSide)));
+ Assert.IsTrue(expectedPointBottomDitchDikeSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.BottomDitchDikeSide)));
+ Assert.IsTrue(expectedPointBottomDitchPolderSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.BottomDitchPolderSide)));
+ Assert.IsTrue(expectedPointDitchPolderSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DitchPolderSide)));
+ Assert.IsTrue(expectedPointSurfaceLevelInside.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.SurfaceLevelInside)));
+ }
- [Test]
- public void AdaptedDikeWithShoulderAndDitchBySlopeHasCorrectPointsAfterSlopeIntersectsInShoulderBetweenTopAndDikeToe()
+ [Test]
+ public void AdaptedDikeWithShoulderAndDitchBySlopeHasCorrectPointsAfterSlopeIntersectsOnShoulderTop()
+ {
+ var surfaceLine = new SurfaceLine2
{
- var surfaceLine = new SurfaceLine2
+ CharacteristicPoints =
{
- CharacteristicPoints =
- {
- GeometryMustContainPoint = true
- },
- Geometry = new GeometryPointString()
- };
- var pointShoulderBaseInside = new GeometryPoint
- {
- X = 7,
- Z = 1
- };
- var pointShoulderTopInside = new GeometryPoint
- {
- X = 8,
- Z = 0
- };
- var pointDikeToeAtPolder = new GeometryPoint
- {
- X = 14,
- Z = 0
- };
- var pointDitchDikeSide = new GeometryPoint
- {
- X = 16,
- Z = 0
- };
- var pointBottomDitchDikeSide = new GeometryPoint
- {
- X = 17,
- Z = -1
- };
- var pointBottomDitchPolderSide = new GeometryPoint
- {
- X = 18,
- Z = -1
- };
- var pointDitchPolderSide = new GeometryPoint
- {
- X = 19,
- Z = 0
- };
- var pointSurfaceLevelInside = new GeometryPoint
- {
- X = 50,
- Z = 0
- };
- surfaceLine.EnsurePointOfType(0, 0, CharacteristicPointType.DikeToeAtRiver);
- surfaceLine.EnsurePointOfType(4, 3, CharacteristicPointType.DikeTopAtRiver);
- surfaceLine.EnsurePointOfType(6, 3, CharacteristicPointType.DikeTopAtPolder);
- surfaceLine.EnsurePointOfType(pointShoulderBaseInside.X, pointShoulderBaseInside.Z, CharacteristicPointType.ShoulderBaseInside);
- surfaceLine.EnsurePointOfType(pointShoulderTopInside.X, pointShoulderTopInside.Z, CharacteristicPointType.ShoulderTopInside);
- surfaceLine.EnsurePointOfType(pointDikeToeAtPolder.X, pointDikeToeAtPolder.Z, CharacteristicPointType.DikeToeAtPolder);
- surfaceLine.EnsurePointOfType(pointDitchDikeSide.X, pointDitchDikeSide.Z, CharacteristicPointType.DitchDikeSide);
- surfaceLine.EnsurePointOfType(pointBottomDitchDikeSide.X, pointBottomDitchDikeSide.Z, CharacteristicPointType.BottomDitchDikeSide);
- surfaceLine.EnsurePointOfType(pointBottomDitchPolderSide.X, pointBottomDitchPolderSide.Z, CharacteristicPointType.BottomDitchPolderSide);
- surfaceLine.EnsurePointOfType(pointDitchPolderSide.X, pointDitchPolderSide.Z, CharacteristicPointType.DitchPolderSide);
- surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside);
- var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
- const double slopeTangent = 1.0 / 2.0;
- SurfaceLine2 adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent);
- const double deltaX = 4.0; // from pointShoulderTopInside
- var expectedNewPoint = new GeometryPoint
- {
- X = pointShoulderTopInside.X + deltaX,
- Z = pointShoulderTopInside.Z
- };
- var expectedPointDikeToeAtPolder = new GeometryPoint
- {
- X = pointDikeToeAtPolder.X,
- Z = pointDikeToeAtPolder.Z
- };
- var expectedPointDitchDikeSide = new GeometryPoint
- {
- X = pointDitchDikeSide.X,
- Z = pointDitchDikeSide.Z
- };
- var expectedPointBottomDitchDikeSide = new GeometryPoint
- {
- X = pointBottomDitchDikeSide.X,
- Z = pointBottomDitchDikeSide.Z
- };
- var expectedPointBottomDitchPolderSide = new GeometryPoint
- {
- X = pointBottomDitchPolderSide.X,
- Z = pointBottomDitchPolderSide.Z
- };
- var expectedPointDitchPolderSide = new GeometryPoint
- {
- X = pointDitchPolderSide.X,
- Z = pointDitchPolderSide.Z
- };
- var expectedPointSurfaceLevelInside = new GeometryPoint
- {
- X = pointSurfaceLevelInside.X,
- Z = pointSurfaceLevelInside.Z
- };
- Assert.IsFalse(adaptedSurfaceLine.HasAnnotation(CharacteristicPointType.ShoulderBaseInside));
- Assert.IsFalse(adaptedSurfaceLine.HasAnnotation(CharacteristicPointType.ShoulderTopInside));
- Assert.IsTrue(adaptedSurfaceLine.Geometry.GetPointAt(expectedNewPoint.X, expectedNewPoint.Z) != null);
- Assert.IsTrue(expectedPointDikeToeAtPolder.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder)));
- Assert.IsTrue(expectedPointDitchDikeSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DitchDikeSide)));
- Assert.IsTrue(expectedPointBottomDitchDikeSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.BottomDitchDikeSide)));
- Assert.IsTrue(expectedPointBottomDitchPolderSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.BottomDitchPolderSide)));
- Assert.IsTrue(expectedPointDitchPolderSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DitchPolderSide)));
- Assert.IsTrue(expectedPointSurfaceLevelInside.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.SurfaceLevelInside)));
- }
+ GeometryMustContainPoint = true
+ },
+ Geometry = new GeometryPointString()
+ };
+ var pointShoulderBaseInside = new GeometryPoint
+ {
+ X = 9,
+ Z = 1
+ };
+ var pointShoulderTopInside = new GeometryPoint
+ {
+ X = 10,
+ Z = 1
+ };
+ var pointDikeToeAtPolder = new GeometryPoint
+ {
+ X = 14,
+ Z = 0
+ };
+ var pointDitchDikeSide = new GeometryPoint
+ {
+ X = 16,
+ Z = 0
+ };
+ var pointBottomDitchDikeSide = new GeometryPoint
+ {
+ X = 17,
+ Z = -1
+ };
+ var pointBottomDitchPolderSide = new GeometryPoint
+ {
+ X = 18,
+ Z = -1
+ };
+ var pointDitchPolderSide = new GeometryPoint
+ {
+ X = 19,
+ Z = 0
+ };
+ var pointSurfaceLevelInside = new GeometryPoint
+ {
+ X = 50,
+ Z = 0
+ };
+ surfaceLine.EnsurePointOfType(0, 0, CharacteristicPointType.DikeToeAtRiver);
+ surfaceLine.EnsurePointOfType(4, 3, CharacteristicPointType.DikeTopAtRiver);
+ surfaceLine.EnsurePointOfType(6, 3, CharacteristicPointType.DikeTopAtPolder);
+ surfaceLine.EnsurePointOfType(pointShoulderBaseInside.X, pointShoulderBaseInside.Z, CharacteristicPointType.ShoulderBaseInside);
+ surfaceLine.EnsurePointOfType(pointShoulderTopInside.X, pointShoulderTopInside.Z, CharacteristicPointType.ShoulderTopInside);
+ surfaceLine.EnsurePointOfType(pointDikeToeAtPolder.X, pointDikeToeAtPolder.Z, CharacteristicPointType.DikeToeAtPolder);
+ surfaceLine.EnsurePointOfType(pointDitchDikeSide.X, pointDitchDikeSide.Z, CharacteristicPointType.DitchDikeSide);
+ surfaceLine.EnsurePointOfType(pointBottomDitchDikeSide.X, pointBottomDitchDikeSide.Z, CharacteristicPointType.BottomDitchDikeSide);
+ surfaceLine.EnsurePointOfType(pointBottomDitchPolderSide.X, pointBottomDitchPolderSide.Z, CharacteristicPointType.BottomDitchPolderSide);
+ surfaceLine.EnsurePointOfType(pointDitchPolderSide.X, pointDitchPolderSide.Z, CharacteristicPointType.DitchPolderSide);
+ surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside);
+ var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
+ const double slopeTangent = 1.0 / 2.0;
+ SurfaceLine2 adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent);
+ var expectedNewPoint = new GeometryPoint
+ {
+ X = pointShoulderTopInside.X,
+ Z = pointShoulderTopInside.Z
+ };
+ var expectedPointDikeToeAtPolder = new GeometryPoint
+ {
+ X = pointDikeToeAtPolder.X,
+ Z = pointDikeToeAtPolder.Z
+ };
+ var expectedPointDitchDikeSide = new GeometryPoint
+ {
+ X = pointDitchDikeSide.X,
+ Z = pointDitchDikeSide.Z
+ };
+ var expectedPointBottomDitchDikeSide = new GeometryPoint
+ {
+ X = pointBottomDitchDikeSide.X,
+ Z = pointBottomDitchDikeSide.Z
+ };
+ var expectedPointBottomDitchPolderSide = new GeometryPoint
+ {
+ X = pointBottomDitchPolderSide.X,
+ Z = pointBottomDitchPolderSide.Z
+ };
+ var expectedPointDitchPolderSide = new GeometryPoint
+ {
+ X = pointDitchPolderSide.X,
+ Z = pointDitchPolderSide.Z
+ };
+ var expectedPointSurfaceLevelInside = new GeometryPoint
+ {
+ X = pointSurfaceLevelInside.X,
+ Z = pointSurfaceLevelInside.Z
+ };
+ Assert.IsFalse(adaptedSurfaceLine.HasAnnotation(CharacteristicPointType.ShoulderBaseInside));
+ Assert.IsFalse(adaptedSurfaceLine.HasAnnotation(CharacteristicPointType.ShoulderTopInside));
+ Assert.IsTrue(adaptedSurfaceLine.Geometry.GetPointAt(expectedNewPoint.X, expectedNewPoint.Z) != null);
+ Assert.IsTrue(expectedPointDikeToeAtPolder.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder)));
+ Assert.IsTrue(expectedPointDitchDikeSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DitchDikeSide)));
+ Assert.IsTrue(expectedPointBottomDitchDikeSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.BottomDitchDikeSide)));
+ Assert.IsTrue(expectedPointBottomDitchPolderSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.BottomDitchPolderSide)));
+ Assert.IsTrue(expectedPointDitchPolderSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DitchPolderSide)));
+ Assert.IsTrue(expectedPointSurfaceLevelInside.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.SurfaceLevelInside)));
+ }
- [Test]
- public void AdaptedSimpleDikeLineWithInBetweenPointOnInsideSlopeBySlopeHasCorrectNewToeDikeAtPolder()
+ [Test]
+ public void AdaptedDikeWithShoulderAndDitchBySlopeHasCorrectPointsAfterSlopeIntersectsInShoulderBetweenTopAndDikeToe()
+ {
+ var surfaceLine = new SurfaceLine2
{
- SurfaceLine2 surfaceLine = CreateSimpleDike();
- GeometryPoint pointDikeToeAtPolder = surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder);
- surfaceLine.EnsurePoint(2.5, 0.4); // in between point on inside slope
- surfaceLine.SortPoints();
- var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
- const double slopeTangent = 1.0 / 4.0;
- SurfaceLine2 adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent);
- const double deltaX = 3.0;
- var expectedPointDikeToeAtPolder = new GeometryPoint
+ CharacteristicPoints =
{
- X = pointDikeToeAtPolder.X + deltaX,
- Z = pointDikeToeAtPolder.Z
- };
- Assert.AreEqual(6, surfaceLine.Geometry.Count);
- Assert.AreEqual(5, adaptedSurfaceLine.Geometry.Count); // in between point should be thrown away
- Assert.IsTrue(expectedPointDikeToeAtPolder.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder)));
- }
+ GeometryMustContainPoint = true
+ },
+ Geometry = new GeometryPointString()
+ };
+ var pointShoulderBaseInside = new GeometryPoint
+ {
+ X = 7,
+ Z = 1
+ };
+ var pointShoulderTopInside = new GeometryPoint
+ {
+ X = 8,
+ Z = 0
+ };
+ var pointDikeToeAtPolder = new GeometryPoint
+ {
+ X = 14,
+ Z = 0
+ };
+ var pointDitchDikeSide = new GeometryPoint
+ {
+ X = 16,
+ Z = 0
+ };
+ var pointBottomDitchDikeSide = new GeometryPoint
+ {
+ X = 17,
+ Z = -1
+ };
+ var pointBottomDitchPolderSide = new GeometryPoint
+ {
+ X = 18,
+ Z = -1
+ };
+ var pointDitchPolderSide = new GeometryPoint
+ {
+ X = 19,
+ Z = 0
+ };
+ var pointSurfaceLevelInside = new GeometryPoint
+ {
+ X = 50,
+ Z = 0
+ };
+ surfaceLine.EnsurePointOfType(0, 0, CharacteristicPointType.DikeToeAtRiver);
+ surfaceLine.EnsurePointOfType(4, 3, CharacteristicPointType.DikeTopAtRiver);
+ surfaceLine.EnsurePointOfType(6, 3, CharacteristicPointType.DikeTopAtPolder);
+ surfaceLine.EnsurePointOfType(pointShoulderBaseInside.X, pointShoulderBaseInside.Z, CharacteristicPointType.ShoulderBaseInside);
+ surfaceLine.EnsurePointOfType(pointShoulderTopInside.X, pointShoulderTopInside.Z, CharacteristicPointType.ShoulderTopInside);
+ surfaceLine.EnsurePointOfType(pointDikeToeAtPolder.X, pointDikeToeAtPolder.Z, CharacteristicPointType.DikeToeAtPolder);
+ surfaceLine.EnsurePointOfType(pointDitchDikeSide.X, pointDitchDikeSide.Z, CharacteristicPointType.DitchDikeSide);
+ surfaceLine.EnsurePointOfType(pointBottomDitchDikeSide.X, pointBottomDitchDikeSide.Z, CharacteristicPointType.BottomDitchDikeSide);
+ surfaceLine.EnsurePointOfType(pointBottomDitchPolderSide.X, pointBottomDitchPolderSide.Z, CharacteristicPointType.BottomDitchPolderSide);
+ surfaceLine.EnsurePointOfType(pointDitchPolderSide.X, pointDitchPolderSide.Z, CharacteristicPointType.DitchPolderSide);
+ surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside);
+ var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
+ const double slopeTangent = 1.0 / 2.0;
+ SurfaceLine2 adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent);
+ const double deltaX = 4.0; // from pointShoulderTopInside
+ var expectedNewPoint = new GeometryPoint
+ {
+ X = pointShoulderTopInside.X + deltaX,
+ Z = pointShoulderTopInside.Z
+ };
+ var expectedPointDikeToeAtPolder = new GeometryPoint
+ {
+ X = pointDikeToeAtPolder.X,
+ Z = pointDikeToeAtPolder.Z
+ };
+ var expectedPointDitchDikeSide = new GeometryPoint
+ {
+ X = pointDitchDikeSide.X,
+ Z = pointDitchDikeSide.Z
+ };
+ var expectedPointBottomDitchDikeSide = new GeometryPoint
+ {
+ X = pointBottomDitchDikeSide.X,
+ Z = pointBottomDitchDikeSide.Z
+ };
+ var expectedPointBottomDitchPolderSide = new GeometryPoint
+ {
+ X = pointBottomDitchPolderSide.X,
+ Z = pointBottomDitchPolderSide.Z
+ };
+ var expectedPointDitchPolderSide = new GeometryPoint
+ {
+ X = pointDitchPolderSide.X,
+ Z = pointDitchPolderSide.Z
+ };
+ var expectedPointSurfaceLevelInside = new GeometryPoint
+ {
+ X = pointSurfaceLevelInside.X,
+ Z = pointSurfaceLevelInside.Z
+ };
+ Assert.IsFalse(adaptedSurfaceLine.HasAnnotation(CharacteristicPointType.ShoulderBaseInside));
+ Assert.IsFalse(adaptedSurfaceLine.HasAnnotation(CharacteristicPointType.ShoulderTopInside));
+ Assert.IsTrue(adaptedSurfaceLine.Geometry.GetPointAt(expectedNewPoint.X, expectedNewPoint.Z) != null);
+ Assert.IsTrue(expectedPointDikeToeAtPolder.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder)));
+ Assert.IsTrue(expectedPointDitchDikeSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DitchDikeSide)));
+ Assert.IsTrue(expectedPointBottomDitchDikeSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.BottomDitchDikeSide)));
+ Assert.IsTrue(expectedPointBottomDitchPolderSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.BottomDitchPolderSide)));
+ Assert.IsTrue(expectedPointDitchPolderSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DitchPolderSide)));
+ Assert.IsTrue(expectedPointSurfaceLevelInside.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.SurfaceLevelInside)));
+ }
- [Test]
- public void AdaptedSurfaceLineWithTrafficLoadPointsBySlopeHasAdjustedPoints()
+ [Test]
+ public void AdaptedSimpleDikeLineWithInBetweenPointOnInsideSlopeBySlopeHasCorrectNewToeDikeAtPolder()
+ {
+ SurfaceLine2 surfaceLine = CreateSimpleDike();
+ GeometryPoint pointDikeToeAtPolder = surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder);
+ surfaceLine.EnsurePoint(2.5, 0.4); // in between point on inside slope
+ surfaceLine.SortPoints();
+ var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
+ const double slopeTangent = 1.0 / 4.0;
+ SurfaceLine2 adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent);
+ const double deltaX = 3.0;
+ var expectedPointDikeToeAtPolder = new GeometryPoint
{
- const double cTolerance = 0.0000001;
+ X = pointDikeToeAtPolder.X + deltaX,
+ Z = pointDikeToeAtPolder.Z
+ };
+ Assert.AreEqual(6, surfaceLine.Geometry.Count);
+ Assert.AreEqual(5, adaptedSurfaceLine.Geometry.Count); // in between point should be thrown away
+ Assert.IsTrue(expectedPointDikeToeAtPolder.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder)));
+ }
- // Create the base surfaceline (dike with shoulder and ditch)
- var surfaceLine = new SurfaceLine2
- {
- CharacteristicPoints =
- {
- GeometryMustContainPoint = true
- },
- Geometry = new GeometryPointString()
- };
- var pointShoulderBaseInside = new GeometryPoint
- {
- X = 9,
- Z = 1
- };
- var pointShoulderTopInside = new GeometryPoint
- {
- X = 11,
- Z = 1
- };
- var pointDikeToeAtPolder = new GeometryPoint
- {
- X = 14,
- Z = 0
- };
- var pointDitchDikeSide = new GeometryPoint
- {
- X = 16,
- Z = 0
- };
- var pointBottomDitchDikeSide = new GeometryPoint
- {
- X = 17,
- Z = -1
- };
- var pointBottomDitchPolderSide = new GeometryPoint
- {
- X = 18,
- Z = -1
- };
- var pointDitchPolderSide = new GeometryPoint
- {
- X = 19,
- Z = 0
- };
- var pointSurfaceLevelInside = new GeometryPoint
- {
- X = 50,
- Z = 0
- };
- surfaceLine.EnsurePointOfType(0, 0, CharacteristicPointType.DikeToeAtRiver);
- surfaceLine.EnsurePointOfType(4, 3, CharacteristicPointType.DikeTopAtRiver);
- surfaceLine.EnsurePointOfType(6, 3, CharacteristicPointType.DikeTopAtPolder);
- surfaceLine.EnsurePointOfType(pointShoulderBaseInside.X, pointShoulderBaseInside.Z, CharacteristicPointType.ShoulderBaseInside);
- surfaceLine.EnsurePointOfType(pointShoulderTopInside.X, pointShoulderTopInside.Z, CharacteristicPointType.ShoulderTopInside);
- surfaceLine.EnsurePointOfType(pointDikeToeAtPolder.X, pointDikeToeAtPolder.Z, CharacteristicPointType.DikeToeAtPolder);
- surfaceLine.EnsurePointOfType(pointDitchDikeSide.X, pointDitchDikeSide.Z, CharacteristicPointType.DitchDikeSide);
- surfaceLine.EnsurePointOfType(pointBottomDitchDikeSide.X, pointBottomDitchDikeSide.Z, CharacteristicPointType.BottomDitchDikeSide);
- surfaceLine.EnsurePointOfType(pointBottomDitchPolderSide.X, pointBottomDitchPolderSide.Z, CharacteristicPointType.BottomDitchPolderSide);
- surfaceLine.EnsurePointOfType(pointDitchPolderSide.X, pointDitchPolderSide.Z, CharacteristicPointType.DitchPolderSide);
- surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside);
- var pointTrafficLoadOutside = new GeometryPoint
- {
- X = 7,
- Z = 2.3333333333
- };
- var pointTrafficLoadInside = new GeometryPoint
- {
- X = 8,
- Z = 1.6666666667
- };
- surfaceLine.EnsurePointOfType(pointTrafficLoadOutside.X, pointTrafficLoadOutside.Z, CharacteristicPointType.TrafficLoadOutside);
- surfaceLine.EnsurePointOfType(pointTrafficLoadInside.X, pointTrafficLoadInside.Z, CharacteristicPointType.TrafficLoadInside);
- surfaceLine.SortPoints();
- var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
- const double slopeTangent = 1.0 / 4.0;
- SurfaceLine2 adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent);
- var expectedPointTrafficLoadOutside = new GeometryPoint
- {
- X = 7,
- Z = 2.75
- };
- var expectedPointTrafficLoadInside = new GeometryPoint
- {
- X = 8,
- Z = 2.5
- };
- Assert.AreEqual(expectedPointTrafficLoadOutside.X, adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadOutside).X, cTolerance);
- Assert.AreEqual(expectedPointTrafficLoadInside.X, adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadInside).X, cTolerance);
- Assert.AreEqual(expectedPointTrafficLoadOutside.Z, adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadOutside).Z, cTolerance);
- Assert.AreEqual(expectedPointTrafficLoadInside.Z, adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadInside).Z, cTolerance);
- pointTrafficLoadOutside = new GeometryPoint
- {
- X = 10.0,
- Z = 1.0
- };
- pointTrafficLoadInside = new GeometryPoint
- {
- X = 13,
- Z = 1.0 / 3.0
- };
- surfaceLine.EnsurePointOfType(pointTrafficLoadOutside.X, pointTrafficLoadOutside.Z, CharacteristicPointType.TrafficLoadOutside);
- surfaceLine.EnsurePointOfType(pointTrafficLoadInside.X, pointTrafficLoadInside.Z, CharacteristicPointType.TrafficLoadInside);
- surfaceLine.SortPoints();
- surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
- adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent);
- expectedPointTrafficLoadOutside = new GeometryPoint
- {
- X = 10.0,
- Z = 2.0
- };
- expectedPointTrafficLoadInside = new GeometryPoint
- {
- X = 13,
- Z = 1.25
- };
- Assert.AreEqual(expectedPointTrafficLoadOutside.X, adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadOutside).X, cTolerance);
- Assert.AreEqual(expectedPointTrafficLoadInside.X, adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadInside).X, cTolerance);
- Assert.AreEqual(expectedPointTrafficLoadOutside.Z, adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadOutside).Z, cTolerance);
- Assert.AreEqual(expectedPointTrafficLoadInside.Z, adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadInside).Z, cTolerance);
- }
+ [Test]
+ public void AdaptedSurfaceLineWithTrafficLoadPointsBySlopeHasAdjustedPoints()
+ {
+ const double cTolerance = 0.0000001;
- #endregion
+ // Create the base surfaceline (dike with shoulder and ditch)
+ var surfaceLine = new SurfaceLine2
+ {
+ CharacteristicPoints =
+ {
+ GeometryMustContainPoint = true
+ },
+ Geometry = new GeometryPointString()
+ };
+ var pointShoulderBaseInside = new GeometryPoint
+ {
+ X = 9,
+ Z = 1
+ };
+ var pointShoulderTopInside = new GeometryPoint
+ {
+ X = 11,
+ Z = 1
+ };
+ var pointDikeToeAtPolder = new GeometryPoint
+ {
+ X = 14,
+ Z = 0
+ };
+ var pointDitchDikeSide = new GeometryPoint
+ {
+ X = 16,
+ Z = 0
+ };
+ var pointBottomDitchDikeSide = new GeometryPoint
+ {
+ X = 17,
+ Z = -1
+ };
+ var pointBottomDitchPolderSide = new GeometryPoint
+ {
+ X = 18,
+ Z = -1
+ };
+ var pointDitchPolderSide = new GeometryPoint
+ {
+ X = 19,
+ Z = 0
+ };
+ var pointSurfaceLevelInside = new GeometryPoint
+ {
+ X = 50,
+ Z = 0
+ };
+ surfaceLine.EnsurePointOfType(0, 0, CharacteristicPointType.DikeToeAtRiver);
+ surfaceLine.EnsurePointOfType(4, 3, CharacteristicPointType.DikeTopAtRiver);
+ surfaceLine.EnsurePointOfType(6, 3, CharacteristicPointType.DikeTopAtPolder);
+ surfaceLine.EnsurePointOfType(pointShoulderBaseInside.X, pointShoulderBaseInside.Z, CharacteristicPointType.ShoulderBaseInside);
+ surfaceLine.EnsurePointOfType(pointShoulderTopInside.X, pointShoulderTopInside.Z, CharacteristicPointType.ShoulderTopInside);
+ surfaceLine.EnsurePointOfType(pointDikeToeAtPolder.X, pointDikeToeAtPolder.Z, CharacteristicPointType.DikeToeAtPolder);
+ surfaceLine.EnsurePointOfType(pointDitchDikeSide.X, pointDitchDikeSide.Z, CharacteristicPointType.DitchDikeSide);
+ surfaceLine.EnsurePointOfType(pointBottomDitchDikeSide.X, pointBottomDitchDikeSide.Z, CharacteristicPointType.BottomDitchDikeSide);
+ surfaceLine.EnsurePointOfType(pointBottomDitchPolderSide.X, pointBottomDitchPolderSide.Z, CharacteristicPointType.BottomDitchPolderSide);
+ surfaceLine.EnsurePointOfType(pointDitchPolderSide.X, pointDitchPolderSide.Z, CharacteristicPointType.DitchPolderSide);
+ surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside);
+ var pointTrafficLoadOutside = new GeometryPoint
+ {
+ X = 7,
+ Z = 2.3333333333
+ };
+ var pointTrafficLoadInside = new GeometryPoint
+ {
+ X = 8,
+ Z = 1.6666666667
+ };
+ surfaceLine.EnsurePointOfType(pointTrafficLoadOutside.X, pointTrafficLoadOutside.Z, CharacteristicPointType.TrafficLoadOutside);
+ surfaceLine.EnsurePointOfType(pointTrafficLoadInside.X, pointTrafficLoadInside.Z, CharacteristicPointType.TrafficLoadInside);
+ surfaceLine.SortPoints();
+ var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
+ const double slopeTangent = 1.0 / 4.0;
+ SurfaceLine2 adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent);
+ var expectedPointTrafficLoadOutside = new GeometryPoint
+ {
+ X = 7,
+ Z = 2.75
+ };
+ var expectedPointTrafficLoadInside = new GeometryPoint
+ {
+ X = 8,
+ Z = 2.5
+ };
+ Assert.AreEqual(expectedPointTrafficLoadOutside.X, adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadOutside).X, cTolerance);
+ Assert.AreEqual(expectedPointTrafficLoadInside.X, adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadInside).X, cTolerance);
+ Assert.AreEqual(expectedPointTrafficLoadOutside.Z, adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadOutside).Z, cTolerance);
+ Assert.AreEqual(expectedPointTrafficLoadInside.Z, adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadInside).Z, cTolerance);
+ pointTrafficLoadOutside = new GeometryPoint
+ {
+ X = 10.0,
+ Z = 1.0
+ };
+ pointTrafficLoadInside = new GeometryPoint
+ {
+ X = 13,
+ Z = 1.0 / 3.0
+ };
+ surfaceLine.EnsurePointOfType(pointTrafficLoadOutside.X, pointTrafficLoadOutside.Z, CharacteristicPointType.TrafficLoadOutside);
+ surfaceLine.EnsurePointOfType(pointTrafficLoadInside.X, pointTrafficLoadInside.Z, CharacteristicPointType.TrafficLoadInside);
+ surfaceLine.SortPoints();
+ surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0);
+ adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent);
+ expectedPointTrafficLoadOutside = new GeometryPoint
+ {
+ X = 10.0,
+ Z = 2.0
+ };
+ expectedPointTrafficLoadInside = new GeometryPoint
+ {
+ X = 13,
+ Z = 1.25
+ };
+ Assert.AreEqual(expectedPointTrafficLoadOutside.X, adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadOutside).X, cTolerance);
+ Assert.AreEqual(expectedPointTrafficLoadInside.X, adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadInside).X, cTolerance);
+ Assert.AreEqual(expectedPointTrafficLoadOutside.Z, adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadOutside).Z, cTolerance);
+ Assert.AreEqual(expectedPointTrafficLoadInside.Z, adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadInside).Z, cTolerance);
}
+
+ #endregion
}
\ No newline at end of file