Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/DikesDesign/SurfaceLineSlopeAdapterTest.cs =================================================================== diff -u -r3893 -r4000 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/DikesDesign/SurfaceLineSlopeAdapterTest.cs (.../SurfaceLineSlopeAdapterTest.cs) (revision 3893) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/DikesDesign/SurfaceLineSlopeAdapterTest.cs (.../SurfaceLineSlopeAdapterTest.cs) (revision 4000) @@ -39,15 +39,16 @@ /// Tests the fixture tear down. /// [TearDown] - public void TestFixtureTearDown() - { - } + public void TestFixtureTearDown() {} private static SurfaceLine2 CreateSimpleDike() { var surfaceLine = new SurfaceLine2 { - CharacteristicPoints = { GeometryMustContainPoint = true }, + CharacteristicPoints = + { + GeometryMustContainPoint = true + }, Geometry = new GeometryPointString() }; surfaceLine.EnsurePointOfType(0, 0, CharacteristicPointType.DikeToeAtRiver); @@ -63,22 +64,29 @@ [Test] public void ConstructNewSurfaceLineReturnsANewSurfaceLine() { - var surfaceLine = CreateSimpleDike(); + SurfaceLine2 surfaceLine = CreateSimpleDike(); var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); - var constructNewSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(1); + SurfaceLine2 constructNewSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(1); Assert.IsNotNull(constructNewSurfaceLine); } - [Test] public void AdaptedSimpleDikeLineHasCorrectNewToeDikeAtPolder() { - var surfaceLine = CreateSimpleDike(); - var pointDikeToeAtPolder = new GeometryPoint { X = 3, Z = 0 }; + SurfaceLine2 surfaceLine = CreateSimpleDike(); + var pointDikeToeAtPolder = new GeometryPoint + { + X = 3, + Z = 0 + }; surfaceLine.EnsurePointOfType(pointDikeToeAtPolder.X, pointDikeToeAtPolder.Z, CharacteristicPointType.DikeToeAtPolder); var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); - var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(1.0); - var expectedPointDikeToeAtPolder = new GeometryPoint { X = 4, Z = 0 }; + SurfaceLine2 adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(1.0); + var expectedPointDikeToeAtPolder = new GeometryPoint + { + X = 4, + Z = 0 + }; Assert.IsTrue(expectedPointDikeToeAtPolder.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder))); } @@ -93,10 +101,26 @@ }, 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 }; + 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); @@ -106,11 +130,27 @@ surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); const double deltaX = 1.0; - var 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 }; + 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))); @@ -128,12 +168,36 @@ }, 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 }; + 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); @@ -146,13 +210,37 @@ var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); const double deltaX = 1.0; const double deltaXDitch = 3; - var 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 }; + 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))); @@ -172,14 +260,46 @@ }, 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 }; + 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); @@ -193,15 +313,47 @@ surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); const double deltaX = 1.0; - var 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 }; + 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))); @@ -215,12 +367,16 @@ [Test] public void AdaptedSimpleDikeLineWithInBetweenPointOnInsideSlopeHasCorrectNewToeDikeAtPolder() { - var surfaceLine = CreateSimpleDike(); + SurfaceLine2 surfaceLine = CreateSimpleDike(); surfaceLine.EnsurePoint(2.5, 0.4); // in between point on inside slope surfaceLine.SortPoints(); var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); - var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(1.0); - var expectedPointDikeToeAtPolder = new GeometryPoint { X = 4, Z = 0 }; + SurfaceLine2 adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(1.0); + var expectedPointDikeToeAtPolder = new GeometryPoint + { + 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))); @@ -240,14 +396,46 @@ }, 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 }; + 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); @@ -259,71 +447,107 @@ 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 }; + 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); - GeometryPoint expectedPointTrafficLoadOutside = new GeometryPoint { X = 7, Z = 2.5 }; - GeometryPoint expectedPointTrafficLoadInside = new GeometryPoint { X = 8, Z = 2.0 }; + 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 }; + 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 }; + 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 #region ConstructWithSlopeTangent [Test] public void IsExceptionThrownIfSlopeDoesNotIntersectSurfaceLine() { - var surfaceLine = CreateSimpleDike(); + SurfaceLine2 surfaceLine = CreateSimpleDike(); var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); Assert.That(() => surfaceLineAdapter.ConstructNewSurfaceLineBySlope(0), Throws.InstanceOf()); } [Test] public void IsNotExceptionThrownIfSlopeEqualsTheCurrentSlope() { - var surfaceLine = CreateSimpleDike(); + SurfaceLine2 surfaceLine = CreateSimpleDike(); var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); Assert.IsNotNull(surfaceLineAdapter.ConstructNewSurfaceLineBySlope(1.0)); } [Test] public void ConstructNewSurfaceLineBySlopeReturnsANewSurfaceLine() { - var surfaceLine = CreateSimpleDike(); + SurfaceLine2 surfaceLine = CreateSimpleDike(); var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); Assert.IsNotNull(surfaceLineAdapter.ConstructNewSurfaceLineBySlope(0.9)); } - [Test] public void AdaptedSimpleDikeLineBySlopeHasCorrectNewToeDikeAtPolder() { - var surfaceLine = CreateSimpleDike(); + SurfaceLine2 surfaceLine = CreateSimpleDike(); var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); const double slopeTangent = 1.0 / 3.0; - var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent); - var expectedPointDikeToeAtPolder = new GeometryPoint { X = 5, Z = 0 }; + SurfaceLine2 adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent); + var expectedPointDikeToeAtPolder = new GeometryPoint + { + X = 5, + Z = 0 + }; Assert.IsTrue(expectedPointDikeToeAtPolder.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder))); } @@ -338,10 +562,26 @@ }, 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 }; + 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); @@ -351,10 +591,18 @@ surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); const double slopeTangent = 1.0 / 4.0; - var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent); + 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 }; + 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))); @@ -372,12 +620,36 @@ }, 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 }; + 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); @@ -389,15 +661,39 @@ surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); const double slopeTangent = 1.0 / 4.0; - var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent); + 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 }; + 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))); @@ -417,12 +713,36 @@ }, 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 }; + 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); @@ -448,14 +768,46 @@ }, 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 }; + 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); @@ -469,15 +821,39 @@ surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); const double slopeTangent = 1.0 / 4.0; - var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent); + 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 }; + 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))); @@ -499,14 +875,46 @@ }, 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 }; + 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); @@ -520,16 +928,48 @@ surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); const double slopeTangent = 1.0 / 2.0; - var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent); + 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 }; + 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))); @@ -551,14 +991,46 @@ }, 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 }; + 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); @@ -572,14 +1044,42 @@ surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); const double slopeTangent = 1.0 / 2.0; - var 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 }; + 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); @@ -602,14 +1102,46 @@ }, 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 }; + 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); @@ -623,15 +1155,43 @@ surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); var surfaceLineAdapter = new SurfaceLineSlopeAdapter(surfaceLine, location, 0); const double slopeTangent = 1.0 / 2.0; - var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent); + 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 }; + 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); @@ -642,19 +1202,23 @@ Assert.IsTrue(expectedPointDitchPolderSide.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DitchPolderSide))); Assert.IsTrue(expectedPointSurfaceLevelInside.LocationEquals(adaptedSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.SurfaceLevelInside))); } - + [Test] public void AdaptedSimpleDikeLineWithInBetweenPointOnInsideSlopeBySlopeHasCorrectNewToeDikeAtPolder() { - var surfaceLine = CreateSimpleDike(); - var pointDikeToeAtPolder = surfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder); + 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; - var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent); + SurfaceLine2 adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent); const double deltaX = 3.0; - var expectedPointDikeToeAtPolder = new GeometryPoint { X = pointDikeToeAtPolder.X + deltaX, Z = pointDikeToeAtPolder.Z }; + var expectedPointDikeToeAtPolder = new GeometryPoint + { + 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))); @@ -674,14 +1238,46 @@ }, 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 }; + 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); @@ -693,34 +1289,67 @@ 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 }; + 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; - var adaptedSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLineBySlope(slopeTangent); - var expectedPointTrafficLoadOutside = new GeometryPoint { X = 7, Z = 2.75 }; - var expectedPointTrafficLoadInside = new GeometryPoint { X = 8, Z = 2.5 }; + 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 }; + 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 }; + 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