Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/DikesDesign/SurfaceLineHeightAdapterTest.cs =================================================================== diff -u -r3893 -r4000 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/DikesDesign/SurfaceLineHeightAdapterTest.cs (.../SurfaceLineHeightAdapterTest.cs) (revision 3893) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/DikesDesign/SurfaceLineHeightAdapterTest.cs (.../SurfaceLineHeightAdapterTest.cs) (revision 4000) @@ -51,7 +51,7 @@ surfaceLine.EnsurePointOfType(3, 0, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(100, 0, CharacteristicPointType.SurfaceLevelInside); var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); - var constructNewSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(1); + SurfaceLine2 constructNewSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(1); Assert.IsNotNull(constructNewSurfaceLine); } @@ -68,10 +68,26 @@ }; var location = new Location(); const double newDikeHeight = 6.0; - var pointAtToeRiver = new GeometryPoint { X = 17, Z = 0 }; - var pointAtTopRiver = new GeometryPoint { X = 34.5, Z = 5 }; - var pointAtTopPolder = new GeometryPoint { X = 35, Z = 5 }; - var pointAtToePolder = new GeometryPoint { X = 36, Z = 0 }; + var pointAtToeRiver = new GeometryPoint + { + X = 17, + Z = 0 + }; + var pointAtTopRiver = new GeometryPoint + { + X = 34.5, + Z = 5 + }; + var pointAtTopPolder = new GeometryPoint + { + X = 35, + Z = 5 + }; + var pointAtToePolder = new GeometryPoint + { + X = 36, + Z = 0 + }; surfaceLine.EnsurePointOfType(pointAtToeRiver.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtRiver); surfaceLine.EnsurePointOfType(pointAtTopRiver.X, pointAtTopRiver.Z, CharacteristicPointType.DikeTopAtRiver); @@ -80,9 +96,9 @@ surfaceLine.EnsurePointOfType(100, 0, CharacteristicPointType.SurfaceLevelInside); var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); - var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); + SurfaceLine2 newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); { - var newPointAtToeRiver = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtRiver); + GeometryPoint newPointAtToeRiver = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtRiver); Assert.IsTrue(newPointAtToeRiver.LocationEquals(pointAtToeRiver)); Assert.IsTrue(newSurfaceLine.Geometry.Points.Any(p => p.LocationEquals(pointAtToeRiver))); } @@ -99,21 +115,37 @@ }, Geometry = new GeometryPointString() }; - var surfaceLine = line; + SurfaceLine2 surfaceLine = line; var location = new Location(); const double cToleranceSlope = 0.0001; const double newDikeHeight = 6.0; - var pointAtToeRiver = new GeometryPoint { X = 17, Z = 0 }; - var pointAtTopRiver = new GeometryPoint { X = 34.5, Z = 5 }; - var pointAtTopPolder = new GeometryPoint { X = 35, Z = 5 }; - var pointAtToePolder = new GeometryPoint { X = 36, Z = 0 }; + var pointAtToeRiver = new GeometryPoint + { + X = 17, + Z = 0 + }; + var pointAtTopRiver = new GeometryPoint + { + X = 34.5, + Z = 5 + }; + var pointAtTopPolder = new GeometryPoint + { + X = 35, + Z = 5 + }; + var pointAtToePolder = new GeometryPoint + { + X = 36, + Z = 0 + }; surfaceLine.EnsurePointOfType(100, 0, CharacteristicPointType.SurfaceLevelInside); surfaceLine.EnsurePointOfType(pointAtToeRiver.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtRiver); surfaceLine.EnsurePointOfType(pointAtTopRiver.X, pointAtTopRiver.Z, CharacteristicPointType.DikeTopAtRiver); surfaceLine.EnsurePointOfType(pointAtTopPolder.X, pointAtTopPolder.Z, CharacteristicPointType.DikeTopAtPolder); surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); - var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); + SurfaceLine2 newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); double oldSlope = TanSlopeInside(surfaceLine); double newSlope = TanSlopeInside(newSurfaceLine); Assert.AreEqual(oldSlope, newSlope, cToleranceSlope); @@ -132,19 +164,39 @@ }; var location = new Location(); const double newDikeHeight = 2.0; - var pointAtToeRiver = new GeometryPoint { X = 0, Z = 0 }; - var pointAtTopRiver = new GeometryPoint { X = 1, Z = 1 }; - var pointAtTopPolder = new GeometryPoint { X = 2, Z = 1 }; - var pointAtToePolder = new GeometryPoint { X = 3, Z = 0 }; + var pointAtToeRiver = new GeometryPoint + { + X = 0, + Z = 0 + }; + var pointAtTopRiver = new GeometryPoint + { + X = 1, + Z = 1 + }; + var pointAtTopPolder = new GeometryPoint + { + X = 2, + Z = 1 + }; + var pointAtToePolder = new GeometryPoint + { + X = 3, + Z = 0 + }; surfaceLine.EnsurePointOfType(pointAtToeRiver.X, pointAtToeRiver.Z, CharacteristicPointType.DikeToeAtRiver); surfaceLine.EnsurePointOfType(pointAtTopRiver.X, pointAtTopRiver.Z, CharacteristicPointType.DikeTopAtRiver); surfaceLine.EnsurePointOfType(pointAtTopPolder.X, pointAtTopPolder.Z, CharacteristicPointType.DikeTopAtPolder); surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(100, 0, CharacteristicPointType.SurfaceLevelInside); var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); - var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); - var actualPoint = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver); - var expectedPoint = new GeometryPoint { X = 2, Z = 2 }; + SurfaceLine2 newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); + GeometryPoint actualPoint = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver); + var expectedPoint = new GeometryPoint + { + X = 2, + Z = 2 + }; Assert.IsTrue(expectedPoint.LocationEquals(actualPoint)); } @@ -161,17 +213,33 @@ }; var location = new Location(); const double newDikeHeight = 2.0; - var pointAtToeRiver = new GeometryPoint { X = 0, Z = 0 }; - var pointAtTopRiver = new GeometryPoint { X = 1, Z = 1 }; - var pointAtTopPolder = new GeometryPoint { X = 2, Z = 1 }; - var pointAtToePolder = new GeometryPoint { X = 3, Z = 0 }; + var pointAtToeRiver = new GeometryPoint + { + X = 0, + Z = 0 + }; + var pointAtTopRiver = new GeometryPoint + { + X = 1, + Z = 1 + }; + var pointAtTopPolder = new GeometryPoint + { + X = 2, + Z = 1 + }; + var pointAtToePolder = new GeometryPoint + { + X = 3, + Z = 0 + }; surfaceLine.EnsurePointOfType(pointAtToeRiver.X, pointAtToeRiver.Z, CharacteristicPointType.DikeToeAtRiver); surfaceLine.EnsurePointOfType(pointAtTopRiver.X, pointAtTopRiver.Z, CharacteristicPointType.DikeTopAtRiver); surfaceLine.EnsurePointOfType(pointAtTopPolder.X, pointAtTopPolder.Z, CharacteristicPointType.DikeTopAtPolder); surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(100, 0, CharacteristicPointType.SurfaceLevelInside); var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); - var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); + SurfaceLine2 newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); Assert.IsFalse(newSurfaceLine.Geometry.Points.Any(p => p.LocationEquals(pointAtTopRiver))); } @@ -186,22 +254,42 @@ }, Geometry = new GeometryPointString() }; - var surfaceLine = line; + SurfaceLine2 surfaceLine = line; var location = new Location(); const double newDikeHeight = 2.0; - var pointAtToeRiver = new GeometryPoint { X = 0, Z = 0 }; - var pointAtTopRiver = new GeometryPoint { X = 1, Z = 1 }; - var pointAtTopPolder = new GeometryPoint { X = 2, Z = 1 }; - var pointAtToePolder = new GeometryPoint { X = 3, Z = 0 }; + var pointAtToeRiver = new GeometryPoint + { + X = 0, + Z = 0 + }; + var pointAtTopRiver = new GeometryPoint + { + X = 1, + Z = 1 + }; + var pointAtTopPolder = new GeometryPoint + { + X = 2, + Z = 1 + }; + var pointAtToePolder = new GeometryPoint + { + X = 3, + Z = 0 + }; surfaceLine.EnsurePointOfType(pointAtToeRiver.X, pointAtToeRiver.Z, CharacteristicPointType.DikeToeAtRiver); surfaceLine.EnsurePointOfType(pointAtTopRiver.X, pointAtTopRiver.Z, CharacteristicPointType.DikeTopAtRiver); surfaceLine.EnsurePointOfType(pointAtTopPolder.X, pointAtTopPolder.Z, CharacteristicPointType.DikeTopAtPolder); surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(100, 0, CharacteristicPointType.SurfaceLevelInside); var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); - var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); - var actualPoint = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder); - var expectedPoint = new GeometryPoint { X = 3, Z = 2 }; + SurfaceLine2 newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); + GeometryPoint actualPoint = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder); + var expectedPoint = new GeometryPoint + { + X = 3, + Z = 2 + }; Assert.IsTrue(expectedPoint.LocationEquals(actualPoint)); } @@ -218,17 +306,33 @@ }; var location = new Location(); const double newDikeHeight = 2.0; - var pointAtToeRiver = new GeometryPoint { X = 0, Z = 0 }; - var pointAtTopRiver = new GeometryPoint { X = 1, Z = 1 }; - var pointAtTopPolder = new GeometryPoint { X = 2, Z = 1 }; - var pointAtToePolder = new GeometryPoint { X = 3, Z = 0 }; + var pointAtToeRiver = new GeometryPoint + { + X = 0, + Z = 0 + }; + var pointAtTopRiver = new GeometryPoint + { + X = 1, + Z = 1 + }; + var pointAtTopPolder = new GeometryPoint + { + X = 2, + Z = 1 + }; + var pointAtToePolder = new GeometryPoint + { + X = 3, + Z = 0 + }; surfaceLine.EnsurePointOfType(pointAtToeRiver.X, pointAtToeRiver.Z, CharacteristicPointType.DikeToeAtRiver); surfaceLine.EnsurePointOfType(pointAtTopRiver.X, pointAtTopRiver.Z, CharacteristicPointType.DikeTopAtRiver); surfaceLine.EnsurePointOfType(pointAtTopPolder.X, pointAtTopPolder.Z, CharacteristicPointType.DikeTopAtPolder); surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(100, 0, CharacteristicPointType.SurfaceLevelInside); var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); - var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); + SurfaceLine2 newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); Assert.IsFalse(newSurfaceLine.Geometry.Points.Any(p => p.LocationEquals(pointAtTopPolder))); } @@ -245,19 +349,38 @@ }; var location = new Location(); const double newDikeHeight = 2.0; - var pointAtToeRiver = new GeometryPoint { X = 0, Z = 0 }; - var pointAtTopRiver = new GeometryPoint { X = 2, Z = 1 }; - var pointAtTopPolder = new GeometryPoint { X = 3, Z = 1 }; - var pointAtToePolder = new GeometryPoint { X = 7, Z = 0 }; + var pointAtToeRiver = new GeometryPoint + { + X = 0, + Z = 0 + }; + var pointAtTopRiver = new GeometryPoint + { + X = 2, + Z = 1 + }; + var pointAtTopPolder = new GeometryPoint + { + X = 3, + Z = 1 + }; + var pointAtToePolder = new GeometryPoint + { + X = 7, + Z = 0 + }; surfaceLine.EnsurePointOfType(pointAtToeRiver.X, pointAtToeRiver.Z, CharacteristicPointType.DikeToeAtRiver); surfaceLine.EnsurePointOfType(pointAtTopRiver.X, pointAtTopRiver.Z, CharacteristicPointType.DikeTopAtRiver); surfaceLine.EnsurePointOfType(pointAtTopPolder.X, pointAtTopPolder.Z, CharacteristicPointType.DikeTopAtPolder); surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(100, 0, CharacteristicPointType.SurfaceLevelInside); var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); - var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); - var actualPoint = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder); - var expectedPoint = new GeometryPoint { X = 13 }; + SurfaceLine2 newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); + GeometryPoint actualPoint = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder); + var expectedPoint = new GeometryPoint + { + X = 13 + }; Assert.IsTrue(expectedPoint.LocationEquals(actualPoint)); double oldSlope = TanSlopeInside(surfaceLine); double newSlope = TanSlopeInside(newSurfaceLine); @@ -285,9 +408,13 @@ surfaceLine.EnsurePointOfType(5, 0, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(100, 0, CharacteristicPointType.SurfaceLevelInside); var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); - var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); - var expectedPoint = new GeometryPoint() { X = 7, Z = 0 }; // - var actualPoint = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder); + SurfaceLine2 newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); + var expectedPoint = new GeometryPoint + { + X = 7, + Z = 0 + }; // + GeometryPoint actualPoint = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder); Assert.IsTrue(expectedPoint.LocationEquals(actualPoint)); } @@ -304,13 +431,41 @@ }; var location = new Location(); const double newDikeHeight = 3.0; - var pointAtToeRiver = new GeometryPoint { X = 0, Z = 0 }; - var pointAtTopRiver = new GeometryPoint { X = 1, Z = 1 }; - var pointAtTopPolder = new GeometryPoint { X = 2, Z = 1 }; - var pointAtShoulderInsteek = new GeometryPoint { X = 3, Z = 0.5 }; - var pointAtShoulderTop = new GeometryPoint { X = 4, Z = 0.5 }; - var pointAtToePolder = new GeometryPoint { X = 5, Z = 0 }; - var pointAtSurfaceLevelInside = new GeometryPoint { X = 100, Z = 0 }; + var pointAtToeRiver = new GeometryPoint + { + X = 0, + Z = 0 + }; + var pointAtTopRiver = new GeometryPoint + { + X = 1, + Z = 1 + }; + var pointAtTopPolder = new GeometryPoint + { + X = 2, + Z = 1 + }; + var pointAtShoulderInsteek = new GeometryPoint + { + X = 3, + Z = 0.5 + }; + var pointAtShoulderTop = new GeometryPoint + { + X = 4, + Z = 0.5 + }; + var pointAtToePolder = new GeometryPoint + { + X = 5, + Z = 0 + }; + var pointAtSurfaceLevelInside = new GeometryPoint + { + X = 100, + Z = 0 + }; surfaceLine.EnsurePointOfType(pointAtToeRiver.X, pointAtToeRiver.Z, CharacteristicPointType.DikeToeAtRiver); surfaceLine.EnsurePointOfType(pointAtTopRiver.X, pointAtTopRiver.Z, CharacteristicPointType.DikeTopAtRiver); surfaceLine.EnsurePointOfType(pointAtTopPolder.X, pointAtTopPolder.Z, CharacteristicPointType.DikeTopAtPolder); @@ -319,12 +474,12 @@ surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); - var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); + SurfaceLine2 newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); Assert.IsNull(newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderTopInside)); Assert.IsNull(newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderBaseInside)); Assert.IsFalse(newSurfaceLine.Geometry.Points.Any(p => p.LocationEquals(pointAtShoulderInsteek))); Assert.IsFalse(newSurfaceLine.Geometry.Points.Any(p => p.LocationEquals(pointAtShoulderTop))); - var newPointAtToePolder = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder); + GeometryPoint newPointAtToePolder = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder); Assert.AreEqual(3, newSurfaceLine.GetPointSegmentIncluding(pointAtTopRiver.X, newPointAtToePolder.X).Count()); Assert.AreEqual(5, newSurfaceLine.Geometry.Points.Count); } @@ -342,13 +497,41 @@ }; var location = new Location(); const double newDikeHeight = 1.5; - var pointAtToeRiver = new GeometryPoint { X = 0, Z = 0 }; - var pointAtTopRiver = new GeometryPoint { X = 1, Z = 1 }; - var pointAtTopPolder = new GeometryPoint { X = 2, Z = 1 }; - var pointAtShoulderInsteek = new GeometryPoint { X = 3, Z = 0.5 }; - var pointAtShoulderTop = new GeometryPoint { X = 5, Z = 0.5 }; - var pointAtToePolder = new GeometryPoint { X = 6, Z = 0 }; - var pointAtSurfaceLevelInside = new GeometryPoint { X = 100, Z = 0 }; + var pointAtToeRiver = new GeometryPoint + { + X = 0, + Z = 0 + }; + var pointAtTopRiver = new GeometryPoint + { + X = 1, + Z = 1 + }; + var pointAtTopPolder = new GeometryPoint + { + X = 2, + Z = 1 + }; + var pointAtShoulderInsteek = new GeometryPoint + { + X = 3, + Z = 0.5 + }; + var pointAtShoulderTop = new GeometryPoint + { + X = 5, + Z = 0.5 + }; + var pointAtToePolder = new GeometryPoint + { + X = 6, + Z = 0 + }; + var pointAtSurfaceLevelInside = new GeometryPoint + { + X = 100, + Z = 0 + }; surfaceLine.EnsurePointOfType(pointAtToeRiver.X, pointAtToeRiver.Z, CharacteristicPointType.DikeToeAtRiver); surfaceLine.EnsurePointOfType(pointAtTopRiver.X, pointAtTopRiver.Z, CharacteristicPointType.DikeTopAtRiver); surfaceLine.EnsurePointOfType(pointAtTopPolder.X, pointAtTopPolder.Z, CharacteristicPointType.DikeTopAtPolder); @@ -357,7 +540,7 @@ surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); - var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); + SurfaceLine2 newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); Assert.IsTrue(pointAtToePolder.LocationEquals(newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder))); } @@ -374,13 +557,41 @@ }; var location = new Location(); const double newDikeHeight = 3.0; - var pointAtToeRiver = new GeometryPoint { X = 0, Z = 0 }; - var pointAtTopRiver = new GeometryPoint { X = 1, Z = 2 }; - var pointAtTopPolder = new GeometryPoint { X = 2, Z = 2 }; - var pointAtShoulderInsteek = new GeometryPoint { X = 3, Z = 1 }; - var pointAtShoulderTop = new GeometryPoint { X = 5, Z = 1 }; - var pointAtToePolder = new GeometryPoint { X = 6, Z = 2 }; - var pointAtSurfaceLevelInside = new GeometryPoint { X = 100, Z = 0 }; + var pointAtToeRiver = new GeometryPoint + { + X = 0, + Z = 0 + }; + var pointAtTopRiver = new GeometryPoint + { + X = 1, + Z = 2 + }; + var pointAtTopPolder = new GeometryPoint + { + X = 2, + Z = 2 + }; + var pointAtShoulderInsteek = new GeometryPoint + { + X = 3, + Z = 1 + }; + var pointAtShoulderTop = new GeometryPoint + { + X = 5, + Z = 1 + }; + var pointAtToePolder = new GeometryPoint + { + X = 6, + Z = 2 + }; + var pointAtSurfaceLevelInside = new GeometryPoint + { + X = 100, + Z = 0 + }; surfaceLine.EnsurePointOfType(pointAtToeRiver.X, pointAtToeRiver.Z, CharacteristicPointType.DikeToeAtRiver); surfaceLine.EnsurePointOfType(pointAtTopRiver.X, pointAtTopRiver.Z, CharacteristicPointType.DikeTopAtRiver); surfaceLine.EnsurePointOfType(pointAtTopPolder.X, pointAtTopPolder.Z, CharacteristicPointType.DikeTopAtPolder); @@ -389,7 +600,7 @@ surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); - var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); + SurfaceLine2 newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); Assert.IsTrue(pointAtShoulderTop.LocationEquals(newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderTopInside))); } @@ -406,13 +617,41 @@ }; var location = new Location(); const double newDikeHeight = 3.0; - var pointAtToeRiver = new GeometryPoint { X = 0, Z = 0 }; - var pointAtTopRiver = new GeometryPoint { X = 1, Z = 2 }; - var pointAtTopPolder = new GeometryPoint { X = 2, Z = 2 }; - var pointAtShoulderInsteek = new GeometryPoint { X = 3, Z = 1 }; - var pointAtShoulderTop = new GeometryPoint { X = 5, Z = 1 }; - var pointAtToePolder = new GeometryPoint { X = 6, Z = 0 }; - var pointAtSurfaceLevelInside = new GeometryPoint { X = 100, Z = 0 }; + var pointAtToeRiver = new GeometryPoint + { + X = 0, + Z = 0 + }; + var pointAtTopRiver = new GeometryPoint + { + X = 1, + Z = 2 + }; + var pointAtTopPolder = new GeometryPoint + { + X = 2, + Z = 2 + }; + var pointAtShoulderInsteek = new GeometryPoint + { + X = 3, + Z = 1 + }; + var pointAtShoulderTop = new GeometryPoint + { + X = 5, + Z = 1 + }; + var pointAtToePolder = new GeometryPoint + { + X = 6, + Z = 0 + }; + var pointAtSurfaceLevelInside = new GeometryPoint + { + X = 100, + Z = 0 + }; surfaceLine.EnsurePointOfType(pointAtToeRiver.X, pointAtToeRiver.Z, CharacteristicPointType.DikeToeAtRiver); surfaceLine.EnsurePointOfType(pointAtTopRiver.X, pointAtTopRiver.Z, CharacteristicPointType.DikeTopAtRiver); surfaceLine.EnsurePointOfType(pointAtTopPolder.X, pointAtTopPolder.Z, CharacteristicPointType.DikeTopAtPolder); @@ -421,25 +660,30 @@ surfaceLine.EnsurePointOfType(pointAtToePolder.X, pointAtToePolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(pointAtSurfaceLevelInside.X, pointAtSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); - var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); - var expectedPoint = new GeometryPoint { X = 4.5, Z = 1 }; - var actualPoint = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderBaseInside); + SurfaceLine2 newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); + var expectedPoint = new GeometryPoint + { + X = 4.5, + Z = 1 + }; + GeometryPoint actualPoint = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderBaseInside); Assert.IsTrue(expectedPoint.LocationEquals(actualPoint)); } [Test] public void AdaptedSurfaceLineWithSoulderAndDitchShouldNotCreateInvalidSurfaceLine() { - var surfaceLine = FactoryForSurfaceLines.CreateRealisticSurfaceLineForHeightAdapter(); + SurfaceLine2 surfaceLine = FactoryForSurfaceLines.CreateRealisticSurfaceLineForHeightAdapter(); var location = new Location(); const double newDikeHeight = 19.2; - var validationError = surfaceLine.Validate().FirstOrDefault(vr => vr.MessageType == ValidationResultType.Error); + ValidationResult validationError = surfaceLine.Validate().FirstOrDefault(vr => vr.MessageType == ValidationResultType.Error); if (validationError != null) { throw new SurfaceLineException(validationError.Text); } + var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); - var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); + SurfaceLine2 newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); validationError = newSurfaceLine.Validate().FirstOrDefault(vr => vr.MessageType == ValidationResultType.Error); if (validationError != null) { @@ -453,12 +697,12 @@ [Test] public void AdaptedSurfaceLineWithTrafficLoadPointsShouldAdjustThosePoints1() { - var surfaceLine = FactoryForSurfaceLines.CreateRealisticSurfaceLineForHeightAdapter(); + SurfaceLine2 surfaceLine = FactoryForSurfaceLines.CreateRealisticSurfaceLineForHeightAdapter(); var location = new Location(); const double cTolerance = 0.0000001; const double newDikeHeight = 19.2; var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); - var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); + SurfaceLine2 newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); Assert.AreEqual(newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder).Z, newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadOutside).Z, cTolerance); Assert.AreEqual(newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder).Z, newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadInside).Z, cTolerance); } @@ -479,12 +723,36 @@ }; var location = new Location(); const double newDikeHeight = 1.2; - var pointDikeToeAtRiver = new GeometryPoint { X = 0, Z = 0 }; - var pointDikeTopAtRiver = new GeometryPoint { X = 1, Z = 1 }; - var pointTrafficLoadOutside = new GeometryPoint { X = 1.1, Z = 1 }; - var pointTrafficLoadInside = new GeometryPoint { X = 1.9, Z = 1 }; - var pointDikeTopAtPolder = new GeometryPoint { X = 2, Z = 1 }; - var pointDikeToeAtPolder = new GeometryPoint { X = 3, Z = 0 }; + var pointDikeToeAtRiver = new GeometryPoint + { + X = 0, + Z = 0 + }; + var pointDikeTopAtRiver = new GeometryPoint + { + X = 1, + Z = 1 + }; + var pointTrafficLoadOutside = new GeometryPoint + { + X = 1.1, + Z = 1 + }; + var pointTrafficLoadInside = new GeometryPoint + { + X = 1.9, + Z = 1 + }; + var pointDikeTopAtPolder = new GeometryPoint + { + X = 2, + Z = 1 + }; + var pointDikeToeAtPolder = new GeometryPoint + { + X = 3, + Z = 0 + }; surfaceLine.EnsurePointOfType(pointDikeToeAtRiver.X, pointDikeToeAtRiver.Z, CharacteristicPointType.DikeToeAtRiver); surfaceLine.EnsurePointOfType(pointDikeTopAtRiver.X, pointDikeTopAtRiver.Z, CharacteristicPointType.DikeTopAtRiver); surfaceLine.EnsurePointOfType(pointTrafficLoadOutside.X, pointTrafficLoadOutside.Z, CharacteristicPointType.TrafficLoadOutside); @@ -493,48 +761,12 @@ surfaceLine.EnsurePointOfType(pointDikeToeAtPolder.X, pointDikeToeAtPolder.Z, CharacteristicPointType.DikeToeAtPolder); surfaceLine.EnsurePointOfType(100, 0, CharacteristicPointType.SurfaceLevelInside); var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); - var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); + SurfaceLine2 newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); Assert.AreEqual(newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder).Z, newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadOutside).Z); Assert.AreEqual(newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder).Z, newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.TrafficLoadInside).Z); } /// - /// Create dike with skewed dike table and points between characteristic points - /// - /// - private SurfaceLine2 CreateSurfaceLineWithSkwewedDikeTableAndInBetweenPoints() - { - var surfaceLine = new SurfaceLine2 - { - CharacteristicPoints = { GeometryMustContainPoint = true }, - Geometry = new GeometryPointString() - }; - var point1 = new GeometryPoint { X = 0, Z = 0 }; - var pointDikeToeAtRiver = new GeometryPoint { X = 2, Z = 0 }; - var point2 = new GeometryPoint { X = 4, Z = 1 }; - var pointDikeTopAtRiver = new GeometryPoint { X = 6, Z = 3 }; - var point3 = new GeometryPoint { X = 7, Z = 3 }; - var pointDikeTopAtPolder = new GeometryPoint { X = 8, Z = 3.5 }; - var point4 = new GeometryPoint { X = 10, Z = 1.5 }; - var pointDikeToeAtPolder = new GeometryPoint { X = 12, Z = 0.5 }; - var point5 = new GeometryPoint { X = 13, Z = 0 }; - var pointSurfaceLevelInside = new GeometryPoint { X = 100, Z = 0 }; - - surfaceLine.EnsurePointOfType(pointDikeToeAtRiver.X, pointDikeToeAtRiver.Z, CharacteristicPointType.DikeToeAtRiver); - surfaceLine.EnsurePointOfType(pointDikeTopAtRiver.X, pointDikeTopAtRiver.Z, CharacteristicPointType.DikeTopAtRiver); - surfaceLine.EnsurePointOfType(pointDikeTopAtPolder.X, pointDikeTopAtPolder.Z, CharacteristicPointType.DikeTopAtPolder); - surfaceLine.EnsurePointOfType(pointDikeToeAtPolder.X, pointDikeToeAtPolder.Z, CharacteristicPointType.DikeToeAtPolder); - surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); - surfaceLine.EnsurePoint(point1.X, point1.Z); - surfaceLine.EnsurePoint(point2.X, point2.Z); - surfaceLine.EnsurePoint(point3.X, point3.Z); - surfaceLine.EnsurePoint(point4.X, point4.Z); - surfaceLine.EnsurePoint(point5.X, point5.Z); - surfaceLine.SortPoints(); - return surfaceLine; - } - - /// /// Test if dike with skewed dike table and points between characteristic points is constructed correctly with new height /// [Test] @@ -546,7 +778,7 @@ const double newDikeHeight = 4.0; Assert.AreEqual(10, surfaceLine.Geometry.Points.Count); var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); - var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); + SurfaceLine2 newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); Assert.AreEqual(6, newSurfaceLine.Geometry.Points.Count); Assert.AreEqual(7.3333, newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver).X, cTolerance); Assert.AreEqual(4.0000, newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver).Z, cTolerance); @@ -581,15 +813,27 @@ location.UseNewDikeTopWidth = true; location.NewDikeTopWidth = 1; var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); - var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); - var expectedNewTopRiver = new GeometryPoint() { X = 2, Z = 2 }; - var actualNewTopRiver = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver); + SurfaceLine2 newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); + var expectedNewTopRiver = new GeometryPoint + { + X = 2, + Z = 2 + }; + GeometryPoint actualNewTopRiver = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver); Assert.IsTrue(expectedNewTopRiver.LocationEquals(actualNewTopRiver)); - var expectedNewTopPolder = new GeometryPoint() { X = 3, Z = 2 }; - var actualNewTopPolder = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder); + var expectedNewTopPolder = new GeometryPoint + { + X = 3, + Z = 2 + }; + GeometryPoint actualNewTopPolder = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder); Assert.IsTrue(expectedNewTopPolder.LocationEquals(actualNewTopPolder)); - var expectedShoulderBaseInside = new GeometryPoint() { X = 5, Z = 0 }; - var actualShoulderBaseInside = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderBaseInside); + var expectedShoulderBaseInside = new GeometryPoint + { + X = 5, + Z = 0 + }; + GeometryPoint actualShoulderBaseInside = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderBaseInside); Assert.IsTrue(expectedShoulderBaseInside.LocationEquals(actualShoulderBaseInside)); Assert.AreEqual(9, newSurfaceLine.Geometry.Points.Count); } @@ -617,18 +861,34 @@ location.UseNewDikeTopWidth = true; location.NewDikeTopWidth = 0.8; var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); - var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); - var expectedNewTopRiver = new GeometryPoint() { X = 2, Z = 2 }; - var actualNewTopRiver = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver); + SurfaceLine2 newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); + var expectedNewTopRiver = new GeometryPoint + { + X = 2, + Z = 2 + }; + GeometryPoint actualNewTopRiver = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver); Assert.IsTrue(expectedNewTopRiver.LocationEquals(actualNewTopRiver)); - var expectedNewTopPolder = new GeometryPoint() { X = 2.8, Z = 2 }; - var actualNewTopPolder = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder); + var expectedNewTopPolder = new GeometryPoint + { + X = 2.8, + Z = 2 + }; + GeometryPoint actualNewTopPolder = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder); Assert.IsTrue(expectedNewTopPolder.LocationEquals(actualNewTopPolder)); - var expectedNewPoint = new GeometryPoint() { X = 3.8, Z = 1 }; - var actualNewPoint = newSurfaceLine.Geometry.Points[4]; + var expectedNewPoint = new GeometryPoint + { + X = 3.8, + Z = 1 + }; + GeometryPoint actualNewPoint = newSurfaceLine.Geometry.Points[4]; Assert.IsTrue(expectedNewPoint.LocationEquals(actualNewPoint)); - var expectedShoulderBaseInside = new GeometryPoint() { X = 5, Z = 0 }; - var actualShoulderBaseInside = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderBaseInside); + var expectedShoulderBaseInside = new GeometryPoint + { + X = 5, + Z = 0 + }; + GeometryPoint actualShoulderBaseInside = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderBaseInside); Assert.IsTrue(expectedShoulderBaseInside.LocationEquals(actualShoulderBaseInside)); Assert.AreEqual(10, newSurfaceLine.Geometry.Points.Count); } @@ -656,15 +916,27 @@ location.UseNewDikeTopWidth = true; location.NewDikeTopWidth = 3; var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); - var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); - var expectedNewTopRiver = new GeometryPoint() { X = 2, Z = 2 }; - var actualNewTopRiver = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver); + SurfaceLine2 newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); + var expectedNewTopRiver = new GeometryPoint + { + X = 2, + Z = 2 + }; + GeometryPoint actualNewTopRiver = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver); Assert.IsTrue(expectedNewTopRiver.LocationEquals(actualNewTopRiver)); - var expectedNewTopPolder = new GeometryPoint() { X = 5, Z = 2 }; - var actualNewTopPolder = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder); + var expectedNewTopPolder = new GeometryPoint + { + X = 5, + Z = 2 + }; + GeometryPoint actualNewTopPolder = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder); Assert.IsTrue(expectedNewTopPolder.LocationEquals(actualNewTopPolder)); - var expectedToeInside = new GeometryPoint() { X = 8, Z = -1 }; - var actualToeInside = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder); + var expectedToeInside = new GeometryPoint + { + X = 8, + Z = -1 + }; + GeometryPoint actualToeInside = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder); Assert.IsTrue(expectedToeInside.LocationEquals(actualToeInside)); Assert.AreEqual(5, newSurfaceLine.Geometry.Points.Count); } @@ -692,15 +964,27 @@ location.UseNewDikeTopWidth = true; location.NewDikeTopWidth = 2; var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); - var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); - var expectedNewTopRiver = new GeometryPoint() { X = 2, Z = 2 }; - var actualNewTopRiver = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver); + SurfaceLine2 newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); + var expectedNewTopRiver = new GeometryPoint + { + X = 2, + Z = 2 + }; + GeometryPoint actualNewTopRiver = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver); Assert.IsTrue(expectedNewTopRiver.LocationEquals(actualNewTopRiver)); - var expectedNewTopPolder = new GeometryPoint() { X = 4, Z = 2 }; - var actualNewTopPolder = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder); + var expectedNewTopPolder = new GeometryPoint + { + X = 4, + Z = 2 + }; + GeometryPoint actualNewTopPolder = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder); Assert.IsTrue(expectedNewTopPolder.LocationEquals(actualNewTopPolder)); - var expectedToeInside = new GeometryPoint() { X = 7, Z = -1 }; - var actualToeInside = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder); + var expectedToeInside = new GeometryPoint + { + X = 7, + Z = -1 + }; + GeometryPoint actualToeInside = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder); Assert.IsTrue(expectedToeInside.LocationEquals(actualToeInside)); Assert.AreEqual(6, newSurfaceLine.Geometry.Points.Count); } @@ -728,21 +1012,41 @@ location.UseNewDikeTopWidth = true; location.NewDikeTopWidth = 1.5; var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); - var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); - var expectedNewTopRiver = new GeometryPoint() { X = 2, Z = 2 }; - var actualNewTopRiver = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver); + SurfaceLine2 newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); + var expectedNewTopRiver = new GeometryPoint + { + X = 2, + Z = 2 + }; + GeometryPoint actualNewTopRiver = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver); Assert.IsTrue(expectedNewTopRiver.LocationEquals(actualNewTopRiver)); - var expectedNewTopPolder = new GeometryPoint() { X = 3.5, Z = 2 }; - var actualNewTopPolder = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder); + var expectedNewTopPolder = new GeometryPoint + { + X = 3.5, + Z = 2 + }; + GeometryPoint actualNewTopPolder = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder); Assert.IsTrue(expectedNewTopPolder.LocationEquals(actualNewTopPolder)); - var expectedShoulderBaseInside = new GeometryPoint() { X = 5.5, Z = 0 }; - var actualShoulderBaseInside = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderBaseInside); + var expectedShoulderBaseInside = new GeometryPoint + { + X = 5.5, + Z = 0 + }; + GeometryPoint actualShoulderBaseInside = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderBaseInside); Assert.IsTrue(expectedShoulderBaseInside.LocationEquals(actualShoulderBaseInside)); - var expectedShoulderTopInside = new GeometryPoint() { X = 6, Z = 0 }; - var actualShoulderTopInside = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderTopInside); + var expectedShoulderTopInside = new GeometryPoint + { + X = 6, + Z = 0 + }; + GeometryPoint actualShoulderTopInside = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderTopInside); Assert.IsTrue(expectedShoulderTopInside.LocationEquals(actualShoulderTopInside)); - var expectedToeInside = new GeometryPoint() { X = 7, Z = -1 }; - var actualToeInside = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder); + var expectedToeInside = new GeometryPoint + { + X = 7, + Z = -1 + }; + GeometryPoint actualToeInside = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder); Assert.IsTrue(expectedToeInside.LocationEquals(actualToeInside)); Assert.AreEqual(7, newSurfaceLine.Geometry.Points.Count); } @@ -770,15 +1074,27 @@ location.UseNewDikeSlopeInside = true; location.NewDikeSlopeInside = 0.5; var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); - var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); - var expectedNewTopRiver = new GeometryPoint() { X = 2, Z = 2 }; - var actualNewTopRiver = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver); + SurfaceLine2 newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); + var expectedNewTopRiver = new GeometryPoint + { + X = 2, + Z = 2 + }; + GeometryPoint actualNewTopRiver = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver); Assert.IsTrue(expectedNewTopRiver.LocationEquals(actualNewTopRiver)); - var expectedNewTopPolder = new GeometryPoint() { X = 5, Z = 2 }; - var actualNewTopPolder = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder); + var expectedNewTopPolder = new GeometryPoint + { + X = 5, + Z = 2 + }; + GeometryPoint actualNewTopPolder = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder); Assert.IsTrue(expectedNewTopPolder.LocationEquals(actualNewTopPolder)); - var expectedToeInside = new GeometryPoint() { X = 11, Z = -1 }; - var actualToeInside = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder); + var expectedToeInside = new GeometryPoint + { + X = 11, + Z = -1 + }; + GeometryPoint actualToeInside = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder); Assert.IsTrue(expectedToeInside.LocationEquals(actualToeInside)); Assert.AreEqual(5, newSurfaceLine.Geometry.Points.Count); } @@ -806,18 +1122,34 @@ location.UseNewDikeSlopeInside = true; location.NewDikeSlopeInside = 2; var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); - var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); - var expectedNewTopRiver = new GeometryPoint() { X = 2, Z = 2 }; - var actualNewTopRiver = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver); + SurfaceLine2 newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); + var expectedNewTopRiver = new GeometryPoint + { + X = 2, + Z = 2 + }; + GeometryPoint actualNewTopRiver = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver); Assert.IsTrue(expectedNewTopRiver.LocationEquals(actualNewTopRiver)); - var expectedNewTopPolder = new GeometryPoint() { X = 5, Z = 2 }; - var actualNewTopPolder = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder); + var expectedNewTopPolder = new GeometryPoint + { + X = 5, + Z = 2 + }; + GeometryPoint actualNewTopPolder = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder); Assert.IsTrue(expectedNewTopPolder.LocationEquals(actualNewTopPolder)); - var expectedPoint = new GeometryPoint() { X = 6, Z = 0 }; - var actualPoint = newSurfaceLine.Geometry.Points[3]; + var expectedPoint = new GeometryPoint + { + X = 6, + Z = 0 + }; + GeometryPoint actualPoint = newSurfaceLine.Geometry.Points[3]; Assert.IsTrue(expectedPoint.LocationEquals(actualPoint)); - var expectedToeInside = new GeometryPoint() { X = 7, Z = -1 }; - var actualToeInside = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder); + var expectedToeInside = new GeometryPoint + { + X = 7, + Z = -1 + }; + GeometryPoint actualToeInside = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder); Assert.IsTrue(expectedToeInside.LocationEquals(actualToeInside)); Assert.AreEqual(6, newSurfaceLine.Geometry.Points.Count); } @@ -845,15 +1177,27 @@ location.UseNewDikeSlopeOutside = true; location.NewDikeSlopeOutside = 2; var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); - var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); - var expectedNewTopRiver = new GeometryPoint() { X = 1.5, Z = 2 }; - var actualNewTopRiver = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver); + SurfaceLine2 newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); + var expectedNewTopRiver = new GeometryPoint + { + X = 1.5, + Z = 2 + }; + GeometryPoint actualNewTopRiver = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver); Assert.IsTrue(expectedNewTopRiver.LocationEquals(actualNewTopRiver)); - var expectedNewTopPolder = new GeometryPoint() { X = 4.5, Z = 2 }; - var actualNewTopPolder = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder); + var expectedNewTopPolder = new GeometryPoint + { + X = 4.5, + Z = 2 + }; + GeometryPoint actualNewTopPolder = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder); Assert.IsTrue(expectedNewTopPolder.LocationEquals(actualNewTopPolder)); - var expectedToeInside = new GeometryPoint() { X = 7.5, Z = -1 }; - var actualToeInside = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder); + var expectedToeInside = new GeometryPoint + { + X = 7.5, + Z = -1 + }; + GeometryPoint actualToeInside = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder); Assert.IsTrue(expectedToeInside.LocationEquals(actualToeInside)); Assert.AreEqual(6, newSurfaceLine.Geometry.Points.Count); } @@ -881,15 +1225,27 @@ location.UseNewDikeSlopeOutside = true; location.NewDikeSlopeOutside = 0.5; var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); - var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); - var expectedNewTopRiver = new GeometryPoint() { X = 3, Z = 2 }; - var actualNewTopRiver = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver); + SurfaceLine2 newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); + var expectedNewTopRiver = new GeometryPoint + { + X = 3, + Z = 2 + }; + GeometryPoint actualNewTopRiver = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver); Assert.IsTrue(expectedNewTopRiver.LocationEquals(actualNewTopRiver)); - var expectedNewTopPolder = new GeometryPoint() { X = 6, Z = 2 }; - var actualNewTopPolder = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder); + var expectedNewTopPolder = new GeometryPoint + { + X = 6, + Z = 2 + }; + GeometryPoint actualNewTopPolder = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder); Assert.IsTrue(expectedNewTopPolder.LocationEquals(actualNewTopPolder)); - var expectedToeInside = new GeometryPoint() { X = 9, Z = -1 }; - var actualToeInside = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder); + var expectedToeInside = new GeometryPoint + { + X = 9, + Z = -1 + }; + GeometryPoint actualToeInside = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder); Assert.IsTrue(expectedToeInside.LocationEquals(actualToeInside)); Assert.AreEqual(6, newSurfaceLine.Geometry.Points.Count); } @@ -921,24 +1277,48 @@ location.UseNewDikeTopWidth = true; location.NewDikeTopWidth = 1.5; var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); - var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); - var expectedNewTopRiver = new GeometryPoint() { X = 1.5, Z = 2 }; - var actualNewTopRiver = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver); + SurfaceLine2 newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); + var expectedNewTopRiver = new GeometryPoint + { + X = 1.5, + Z = 2 + }; + GeometryPoint actualNewTopRiver = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver); Assert.IsTrue(expectedNewTopRiver.LocationEquals(actualNewTopRiver)); - var expectedNewTopPolder = new GeometryPoint() { X = 3, Z = 2 }; - var actualNewTopPolder = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder); + var expectedNewTopPolder = new GeometryPoint + { + X = 3, + Z = 2 + }; + GeometryPoint actualNewTopPolder = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder); Assert.IsTrue(expectedNewTopPolder.LocationEquals(actualNewTopPolder)); - var expectedPoint = new GeometryPoint() { X = 3.5, Z = 1 }; - var actualPoint = newSurfaceLine.Geometry.Points[4]; + var expectedPoint = new GeometryPoint + { + X = 3.5, + Z = 1 + }; + GeometryPoint actualPoint = newSurfaceLine.Geometry.Points[4]; Assert.IsTrue(expectedPoint.LocationEquals(actualPoint)); - var expectedPoint2 = new GeometryPoint() { X = 4, Z = 1 }; - var actualPoint2 = newSurfaceLine.Geometry.Points[5]; + var expectedPoint2 = new GeometryPoint + { + X = 4, + Z = 1 + }; + GeometryPoint actualPoint2 = newSurfaceLine.Geometry.Points[5]; Assert.IsTrue(expectedPoint2.LocationEquals(actualPoint2)); - var expectedShoulderBaseInside = new GeometryPoint() { X = 5, Z = 0 }; - var actualShoulderBaseInside = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderBaseInside); + var expectedShoulderBaseInside = new GeometryPoint + { + X = 5, + Z = 0 + }; + GeometryPoint actualShoulderBaseInside = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.ShoulderBaseInside); Assert.IsTrue(expectedShoulderBaseInside.LocationEquals(actualShoulderBaseInside)); - var expectedToeInside = new GeometryPoint() { X = 7, Z = -1 }; - var actualToeInside = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder); + var expectedToeInside = new GeometryPoint + { + X = 7, + Z = -1 + }; + GeometryPoint actualToeInside = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder); Assert.IsTrue(expectedToeInside.LocationEquals(actualToeInside)); Assert.AreEqual(10, newSurfaceLine.Geometry.Points.Count); } @@ -970,32 +1350,127 @@ location.UseNewDikeTopWidth = true; location.NewDikeTopWidth = 1.5; var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); - var newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); - var expectedNewTopRiver = new GeometryPoint() { X = 1.5, Z = 2 }; - var actualNewTopRiver = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver); + SurfaceLine2 newSurfaceLine = surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight); + var expectedNewTopRiver = new GeometryPoint + { + X = 1.5, + Z = 2 + }; + GeometryPoint actualNewTopRiver = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtRiver); Assert.IsTrue(expectedNewTopRiver.LocationEquals(actualNewTopRiver)); - var expectedNewTopPolder = new GeometryPoint() { X = 3, Z = 2 }; - var actualNewTopPolder = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder); + var expectedNewTopPolder = new GeometryPoint + { + X = 3, + Z = 2 + }; + GeometryPoint actualNewTopPolder = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeTopAtPolder); Assert.IsTrue(expectedNewTopPolder.LocationEquals(actualNewTopPolder)); - var expectedToeInside = new GeometryPoint() { X = 9, Z = -1 }; - var actualToeInside = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder); + var expectedToeInside = new GeometryPoint + { + X = 9, + Z = -1 + }; + GeometryPoint actualToeInside = newSurfaceLine.CharacteristicPoints.GetGeometryPoint(CharacteristicPointType.DikeToeAtPolder); Assert.IsTrue(expectedToeInside.LocationEquals(actualToeInside)); Assert.AreEqual(6, newSurfaceLine.Geometry.Points.Count); } [Test] public void HeightAdaptionThrowsExceptionIfSurfaceLineIsNotLongEnough() { - var surfaceLine = FactoryForSurfaceLines.CreateRealisticSurfaceLineForHeightAdapter(); + SurfaceLine2 surfaceLine = FactoryForSurfaceLines.CreateRealisticSurfaceLineForHeightAdapter(); var location = new Location(); const double newDikeHeight = 19.0; - var pointSurfaceLevelInside = new GeometryPoint { X = 40, Z = 12 }; // Set surfacelevelinside just beside ditch to force exception + var pointSurfaceLevelInside = new GeometryPoint + { + X = 40, + Z = 12 + }; // Set surfacelevelinside just beside ditch to force exception surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); var surfaceLineAdapter = new SurfaceLineHeightAdapter(surfaceLine, location, 0); Assert.That(() => surfaceLineAdapter.ConstructNewSurfaceLine(newDikeHeight), Throws.InstanceOf()); } /// + /// Create dike with skewed dike table and points between characteristic points + /// + /// + private SurfaceLine2 CreateSurfaceLineWithSkwewedDikeTableAndInBetweenPoints() + { + var surfaceLine = new SurfaceLine2 + { + CharacteristicPoints = + { + GeometryMustContainPoint = true + }, + Geometry = new GeometryPointString() + }; + var point1 = new GeometryPoint + { + X = 0, + Z = 0 + }; + var pointDikeToeAtRiver = new GeometryPoint + { + X = 2, + Z = 0 + }; + var point2 = new GeometryPoint + { + X = 4, + Z = 1 + }; + var pointDikeTopAtRiver = new GeometryPoint + { + X = 6, + Z = 3 + }; + var point3 = new GeometryPoint + { + X = 7, + Z = 3 + }; + var pointDikeTopAtPolder = new GeometryPoint + { + X = 8, + Z = 3.5 + }; + var point4 = new GeometryPoint + { + X = 10, + Z = 1.5 + }; + var pointDikeToeAtPolder = new GeometryPoint + { + X = 12, + Z = 0.5 + }; + var point5 = new GeometryPoint + { + X = 13, + Z = 0 + }; + var pointSurfaceLevelInside = new GeometryPoint + { + X = 100, + Z = 0 + }; + + surfaceLine.EnsurePointOfType(pointDikeToeAtRiver.X, pointDikeToeAtRiver.Z, CharacteristicPointType.DikeToeAtRiver); + surfaceLine.EnsurePointOfType(pointDikeTopAtRiver.X, pointDikeTopAtRiver.Z, CharacteristicPointType.DikeTopAtRiver); + surfaceLine.EnsurePointOfType(pointDikeTopAtPolder.X, pointDikeTopAtPolder.Z, CharacteristicPointType.DikeTopAtPolder); + surfaceLine.EnsurePointOfType(pointDikeToeAtPolder.X, pointDikeToeAtPolder.Z, CharacteristicPointType.DikeToeAtPolder); + surfaceLine.EnsurePointOfType(pointSurfaceLevelInside.X, pointSurfaceLevelInside.Z, CharacteristicPointType.SurfaceLevelInside); + surfaceLine.EnsurePoint(point1.X, point1.Z); + surfaceLine.EnsurePoint(point2.X, point2.Z); + surfaceLine.EnsurePoint(point3.X, point3.Z); + surfaceLine.EnsurePoint(point4.X, point4.Z); + surfaceLine.EnsurePoint(point5.X, point5.Z); + surfaceLine.SortPoints(); + return surfaceLine; + } + + /// /// Determines the tan slope inside. /// /// tan slope inside @@ -1006,6 +1481,5 @@ return (dikeTopAtPolder.Z - dikeToeInward.Z) / (dikeToeInward.X - dikeTopAtPolder.X); } - } -} +} \ No newline at end of file