Index: DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/Geotechnics/SoilSurfaceProfileTests.cs =================================================================== diff -u -r4000 -r4052 --- DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/Geotechnics/SoilSurfaceProfileTests.cs (.../SoilSurfaceProfileTests.cs) (revision 4000) +++ DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/Geotechnics/SoilSurfaceProfileTests.cs (.../SoilSurfaceProfileTests.cs) (revision 4052) @@ -27,754 +27,753 @@ using Deltares.DamEngine.Data.Standard; using NUnit.Framework; -namespace Deltares.DamEngine.Data.Tests.Geotechnics +namespace Deltares.DamEngine.Data.Tests.Geotechnics; + +[TestFixture] +public class SoilSurfaceProfileTests { - [TestFixture] - public class SoilSurfaceProfileTests + [Test] + public void ConvertToSoilProfile2D_WithSurfaceLineFullyAboveSoilLayers_ReturnsExpectedSoilProfile2D() { - [Test] - public void ConvertToSoilProfile2D_WithSurfaceLineFullyAboveSoilLayers_ReturnsExpectedSoilProfile2D() + // Setup + const string bottomLayerName = "BottomLayer"; + const string middleLayerName = "MiddleLayer"; + const string topLayerName = "TopLayer"; + + SoilLayer1D bottomLayer = CreateSoilLayer(-5, bottomLayerName); + SoilLayer1D middleLayer = CreateSoilLayer(-2, middleLayerName); + + var profile = new SoilProfile1D { - // Setup - const string bottomLayerName = "BottomLayer"; - const string middleLayerName = "MiddleLayer"; - const string topLayerName = "TopLayer"; + BottomLevel = -10 + }; + profile.Layers.Add(bottomLayer); + profile.Layers.Add(middleLayer); - SoilLayer1D bottomLayer = CreateSoilLayer(-5, bottomLayerName); - SoilLayer1D middleLayer = CreateSoilLayer(-2, middleLayerName); + SurfaceLine2 surfaceLine = CreateSurfaceLine(new[] + { + new GeometryPoint(0, 0), + new GeometryPoint(5, 10), + new GeometryPoint(10, 10) + }); - var profile = new SoilProfile1D + var soilSurfaceProfile = new SoilSurfaceProfile + { + SoilProfile = profile, + SurfaceLine2 = surfaceLine, + DikeEmbankmentMaterial = new Soil { - BottomLevel = -10 - }; - profile.Layers.Add(bottomLayer); - profile.Layers.Add(middleLayer); + Name = topLayerName + } + }; - SurfaceLine2 surfaceLine = CreateSurfaceLine(new[] - { - new GeometryPoint(0, 0), - new GeometryPoint(5, 10), - new GeometryPoint(10, 10) - }); + // Call + SoilProfile2D soilProfile2D = soilSurfaceProfile.ConvertToSoilProfile2D(); - var soilSurfaceProfile = new SoilSurfaceProfile - { - SoilProfile = profile, - SurfaceLine2 = surfaceLine, - DikeEmbankmentMaterial = new Soil - { - Name = topLayerName - } - }; + // Assert + IList soilLayer2Ds = soilProfile2D.Surfaces; + Assert.That(soilLayer2Ds, Has.Count.EqualTo(3)); - // Call - SoilProfile2D soilProfile2D = soilSurfaceProfile.ConvertToSoilProfile2D(); + SoilLayer2D topSoilLayer2D = soilLayer2Ds.Single(l => string.Equals(l.Name, topLayerName)); + AssertDikeEmbankmentSoilLayerProperties(soilSurfaceProfile, topSoilLayer2D); + AssertGeometry(new[] + { + new GeometryCurve(new Point2D(0, 0), new Point2D(5, 10)), + new GeometryCurve(new Point2D(5, 10), new Point2D(10, 10)), + new GeometryCurve(new Point2D(10, 10), new Point2D(10, -2)), + new GeometryCurve(new Point2D(10, -2), new Point2D(5, -2)), + new GeometryCurve(new Point2D(5, -2), new Point2D(0, -2)), + new GeometryCurve(new Point2D(0, -2), new Point2D(0, 0)) + }, topSoilLayer2D.GeometrySurface.OuterLoop.CurveList); - // Assert - IList soilLayer2Ds = soilProfile2D.Surfaces; - Assert.That(soilLayer2Ds, Has.Count.EqualTo(3)); + SoilLayer2D middleSoilLayer2D = soilLayer2Ds.Single(l => string.Equals(l.Name, middleLayerName)); + AssertSoilLayerProperties(middleLayer, middleSoilLayer2D); + AssertGeometry(new[] + { + new GeometryCurve(new Point2D(0, -2), new Point2D(5, -2)), + new GeometryCurve(new Point2D(5, -2), new Point2D(10, -2)), + new GeometryCurve(new Point2D(10, -2), new Point2D(10, -5)), + new GeometryCurve(new Point2D(10, -5), new Point2D(5, -5)), + new GeometryCurve(new Point2D(5, -5), new Point2D(0, -5)), + new GeometryCurve(new Point2D(0, -5), new Point2D(0, -2)) + }, middleSoilLayer2D.GeometrySurface.OuterLoop.CurveList); - SoilLayer2D topSoilLayer2D = soilLayer2Ds.Single(l => string.Equals(l.Name, topLayerName)); - AssertDikeEmbankmentSoilLayerProperties(soilSurfaceProfile, topSoilLayer2D); - AssertGeometry(new[] - { - new GeometryCurve(new Point2D(0, 0), new Point2D(5, 10)), - new GeometryCurve(new Point2D(5, 10), new Point2D(10, 10)), - new GeometryCurve(new Point2D(10, 10), new Point2D(10, -2)), - new GeometryCurve(new Point2D(10, -2), new Point2D(5, -2)), - new GeometryCurve(new Point2D(5, -2), new Point2D(0, -2)), - new GeometryCurve(new Point2D(0, -2), new Point2D(0, 0)) - }, topSoilLayer2D.GeometrySurface.OuterLoop.CurveList); + SoilLayer2D bottomSoilLayer2D = soilLayer2Ds.Single(l => string.Equals(l.Name, bottomLayerName)); + AssertSoilLayerProperties(bottomLayer, bottomSoilLayer2D); + AssertGeometry(new[] + { + new GeometryCurve(new Point2D(0, -5), new Point2D(5, -5)), + new GeometryCurve(new Point2D(5, -5), new Point2D(10, -5)), + new GeometryCurve(new Point2D(10, -5), new Point2D(10, -10)), + new GeometryCurve(new Point2D(10, -10), new Point2D(5, -10)), + new GeometryCurve(new Point2D(5, -10), new Point2D(0, -10)), + new GeometryCurve(new Point2D(0, -10), new Point2D(0, -5)) + }, bottomSoilLayer2D.GeometrySurface.OuterLoop.CurveList); + } - SoilLayer2D middleSoilLayer2D = soilLayer2Ds.Single(l => string.Equals(l.Name, middleLayerName)); - AssertSoilLayerProperties(middleLayer, middleSoilLayer2D); - AssertGeometry(new[] - { - new GeometryCurve(new Point2D(0, -2), new Point2D(5, -2)), - new GeometryCurve(new Point2D(5, -2), new Point2D(10, -2)), - new GeometryCurve(new Point2D(10, -2), new Point2D(10, -5)), - new GeometryCurve(new Point2D(10, -5), new Point2D(5, -5)), - new GeometryCurve(new Point2D(5, -5), new Point2D(0, -5)), - new GeometryCurve(new Point2D(0, -5), new Point2D(0, -2)) - }, middleSoilLayer2D.GeometrySurface.OuterLoop.CurveList); + [Test] + public void ConvertToSoilProfile2D_WithLayerFullyAboveSurfaceLine_ReturnsExpectedSoilProfile2D() + { + // Setup + const string bottomLayerName = "BottomLayer"; + const string middleLayerName = "MiddleLayer"; + const string topLayerName = "TopLayer"; - SoilLayer2D bottomSoilLayer2D = soilLayer2Ds.Single(l => string.Equals(l.Name, bottomLayerName)); - AssertSoilLayerProperties(bottomLayer, bottomSoilLayer2D); - AssertGeometry(new[] - { - new GeometryCurve(new Point2D(0, -5), new Point2D(5, -5)), - new GeometryCurve(new Point2D(5, -5), new Point2D(10, -5)), - new GeometryCurve(new Point2D(10, -5), new Point2D(10, -10)), - new GeometryCurve(new Point2D(10, -10), new Point2D(5, -10)), - new GeometryCurve(new Point2D(5, -10), new Point2D(0, -10)), - new GeometryCurve(new Point2D(0, -10), new Point2D(0, -5)) - }, bottomSoilLayer2D.GeometrySurface.OuterLoop.CurveList); - } + SoilLayer1D irrelevantLayer = CreateSoilLayer(0, "Does not matter"); + SoilLayer1D bottomLayer = CreateSoilLayer(-5, bottomLayerName); + SoilLayer1D middleLayer = CreateSoilLayer(-2, middleLayerName); - [Test] - public void ConvertToSoilProfile2D_WithLayerFullyAboveSurfaceLine_ReturnsExpectedSoilProfile2D() + var profile = new SoilProfile1D { - // Setup - const string bottomLayerName = "BottomLayer"; - const string middleLayerName = "MiddleLayer"; - const string topLayerName = "TopLayer"; + BottomLevel = -10 + }; + profile.Layers.Add(bottomLayer); + profile.Layers.Add(middleLayer); + profile.Layers.Add(irrelevantLayer); - SoilLayer1D irrelevantLayer = CreateSoilLayer(0, "Does not matter"); - SoilLayer1D bottomLayer = CreateSoilLayer(-5, bottomLayerName); - SoilLayer1D middleLayer = CreateSoilLayer(-2, middleLayerName); + SurfaceLine2 surfaceLine = CreateSurfaceLine(new[] + { + new GeometryPoint(0, -5), + new GeometryPoint(5, -3), + new GeometryPoint(10, -5) + }); - var profile = new SoilProfile1D + var soilSurfaceProfile = new SoilSurfaceProfile + { + SoilProfile = profile, + SurfaceLine2 = surfaceLine, + DikeEmbankmentMaterial = new Soil { - BottomLevel = -10 - }; - profile.Layers.Add(bottomLayer); - profile.Layers.Add(middleLayer); - profile.Layers.Add(irrelevantLayer); + Name = topLayerName + } + }; - SurfaceLine2 surfaceLine = CreateSurfaceLine(new[] - { - new GeometryPoint(0, -5), - new GeometryPoint(5, -3), - new GeometryPoint(10, -5) - }); + // Call + SoilProfile2D soilProfile2D = soilSurfaceProfile.ConvertToSoilProfile2D(); - var soilSurfaceProfile = new SoilSurfaceProfile - { - SoilProfile = profile, - SurfaceLine2 = surfaceLine, - DikeEmbankmentMaterial = new Soil - { - Name = topLayerName - } - }; + // Assert + IList soilLayer2Ds = soilProfile2D.Surfaces; + Assert.That(soilLayer2Ds, Has.Count.EqualTo(2)); - // Call - SoilProfile2D soilProfile2D = soilSurfaceProfile.ConvertToSoilProfile2D(); + SoilLayer2D middleSoilLayer2D = soilLayer2Ds.Single(l => string.Equals(l.Name, middleLayerName)); + AssertSoilLayerProperties(middleLayer, middleSoilLayer2D); + AssertGeometry(new[] + { + new GeometryCurve(new Point2D(0, -5), new Point2D(5, -3)), + new GeometryCurve(new Point2D(5, -3), new Point2D(10, -5)), + new GeometryCurve(new Point2D(10, -5), new Point2D(5, -5)), + new GeometryCurve(new Point2D(5, -5), new Point2D(0, -5)) + }, middleSoilLayer2D.GeometrySurface.OuterLoop.CurveList); - // Assert - IList soilLayer2Ds = soilProfile2D.Surfaces; - Assert.That(soilLayer2Ds, Has.Count.EqualTo(2)); + SoilLayer2D bottomSoilLayer2D = soilLayer2Ds.Single(l => string.Equals(l.Name, bottomLayerName)); + AssertSoilLayerProperties(bottomLayer, bottomSoilLayer2D); + AssertGeometry(new[] + { + new GeometryCurve(new Point2D(0, -5), new Point2D(5, -5)), + new GeometryCurve(new Point2D(5, -5), new Point2D(10, -5)), + new GeometryCurve(new Point2D(10, -5), new Point2D(10, -10)), + new GeometryCurve(new Point2D(10, -10), new Point2D(5, -10)), + new GeometryCurve(new Point2D(5, -10), new Point2D(0, -10)), + new GeometryCurve(new Point2D(0, -10), new Point2D(0, -5)) + }, bottomSoilLayer2D.GeometrySurface.OuterLoop.CurveList); + } - SoilLayer2D middleSoilLayer2D = soilLayer2Ds.Single(l => string.Equals(l.Name, middleLayerName)); - AssertSoilLayerProperties(middleLayer, middleSoilLayer2D); - AssertGeometry(new[] - { - new GeometryCurve(new Point2D(0, -5), new Point2D(5, -3)), - new GeometryCurve(new Point2D(5, -3), new Point2D(10, -5)), - new GeometryCurve(new Point2D(10, -5), new Point2D(5, -5)), - new GeometryCurve(new Point2D(5, -5), new Point2D(0, -5)) - }, middleSoilLayer2D.GeometrySurface.OuterLoop.CurveList); + [Test] + public void ConvertToSoilProfile2D_WithSurfaceLineFullyEnvelopedByTopSoilLayer_ReturnsExpectedSoilProfile2D() + { + // Setup + const string bottomLayerName = "BottomLayer"; + const string middleLayerName = "MiddleLayer"; + const string topLayerName = "TopLayer"; - SoilLayer2D bottomSoilLayer2D = soilLayer2Ds.Single(l => string.Equals(l.Name, bottomLayerName)); - AssertSoilLayerProperties(bottomLayer, bottomSoilLayer2D); - AssertGeometry(new[] - { - new GeometryCurve(new Point2D(0, -5), new Point2D(5, -5)), - new GeometryCurve(new Point2D(5, -5), new Point2D(10, -5)), - new GeometryCurve(new Point2D(10, -5), new Point2D(10, -10)), - new GeometryCurve(new Point2D(10, -10), new Point2D(5, -10)), - new GeometryCurve(new Point2D(5, -10), new Point2D(0, -10)), - new GeometryCurve(new Point2D(0, -10), new Point2D(0, -5)) - }, bottomSoilLayer2D.GeometrySurface.OuterLoop.CurveList); - } + SoilLayer1D bottomLayer = CreateSoilLayer(-5, bottomLayerName); + SoilLayer1D middleLayer = CreateSoilLayer(-2, middleLayerName); - [Test] - public void ConvertToSoilProfile2D_WithSurfaceLineFullyEnvelopedByTopSoilLayer_ReturnsExpectedSoilProfile2D() + var profile = new SoilProfile1D(); + profile.Layers.Add(bottomLayer); + profile.Layers.Add(middleLayer); + profile.BottomLevel = -10; + + SurfaceLine2 surfaceLine = CreateSurfaceLine(new[] { - // Setup - const string bottomLayerName = "BottomLayer"; - const string middleLayerName = "MiddleLayer"; - const string topLayerName = "TopLayer"; + new GeometryPoint(0, -4), + new GeometryPoint(5, -2.5), + new GeometryPoint(10, -2.5) + }); - SoilLayer1D bottomLayer = CreateSoilLayer(-5, bottomLayerName); - SoilLayer1D middleLayer = CreateSoilLayer(-2, middleLayerName); - - var profile = new SoilProfile1D(); - profile.Layers.Add(bottomLayer); - profile.Layers.Add(middleLayer); - profile.BottomLevel = -10; - - SurfaceLine2 surfaceLine = CreateSurfaceLine(new[] + var soilSurfaceProfile = new SoilSurfaceProfile + { + SoilProfile = profile, + SurfaceLine2 = surfaceLine, + DikeEmbankmentMaterial = new Soil { - new GeometryPoint(0, -4), - new GeometryPoint(5, -2.5), - new GeometryPoint(10, -2.5) - }); + Name = topLayerName + } + }; - var soilSurfaceProfile = new SoilSurfaceProfile - { - SoilProfile = profile, - SurfaceLine2 = surfaceLine, - DikeEmbankmentMaterial = new Soil - { - Name = topLayerName - } - }; + // Call + SoilProfile2D soilProfile2D = soilSurfaceProfile.ConvertToSoilProfile2D(); - // Call - SoilProfile2D soilProfile2D = soilSurfaceProfile.ConvertToSoilProfile2D(); + // Assert + IList soilLayer2Ds = soilProfile2D.Surfaces; + Assert.That(soilLayer2Ds, Has.Count.EqualTo(2)); - // Assert - IList soilLayer2Ds = soilProfile2D.Surfaces; - Assert.That(soilLayer2Ds, Has.Count.EqualTo(2)); + SoilLayer2D middleLayer2D = soilLayer2Ds.Single(l => string.Equals(l.Name, middleLayerName)); + AssertSoilLayerProperties(middleLayer, middleLayer2D); + AssertGeometry(new[] + { + new GeometryCurve(new Point2D(0, -4), new Point2D(5, -2.5)), + new GeometryCurve(new Point2D(5, -2.5), new Point2D(10, -2.5)), + new GeometryCurve(new Point2D(10, -2.5), new Point2D(10, -5)), + new GeometryCurve(new Point2D(10, -5), new Point2D(5, -5)), + new GeometryCurve(new Point2D(5, -5), new Point2D(0, -5)), + new GeometryCurve(new Point2D(0, -5), new Point2D(0, -4)) + }, middleLayer2D.GeometrySurface.OuterLoop.CurveList); - SoilLayer2D middleLayer2D = soilLayer2Ds.Single(l => string.Equals(l.Name, middleLayerName)); - AssertSoilLayerProperties(middleLayer, middleLayer2D); - AssertGeometry(new[] - { - new GeometryCurve(new Point2D(0, -4), new Point2D(5, -2.5)), - new GeometryCurve(new Point2D(5, -2.5), new Point2D(10, -2.5)), - new GeometryCurve(new Point2D(10, -2.5), new Point2D(10, -5)), - new GeometryCurve(new Point2D(10, -5), new Point2D(5, -5)), - new GeometryCurve(new Point2D(5, -5), new Point2D(0, -5)), - new GeometryCurve(new Point2D(0, -5), new Point2D(0, -4)) - }, middleLayer2D.GeometrySurface.OuterLoop.CurveList); - - SoilLayer2D bottomLayer2D = soilLayer2Ds.Single(l => string.Equals(l.Name, bottomLayerName)); - AssertSoilLayerProperties(bottomLayer, bottomLayer2D); - AssertGeometry(new[] - { - new GeometryCurve(new Point2D(0, -5), new Point2D(5, -5)), - new GeometryCurve(new Point2D(5, -5), new Point2D(10, -5)), - new GeometryCurve(new Point2D(10, -5), new Point2D(10, -10)), - new GeometryCurve(new Point2D(10, -10), new Point2D(5, -10)), - new GeometryCurve(new Point2D(5, -10), new Point2D(0, -10)), - new GeometryCurve(new Point2D(0, -10), new Point2D(0, -5)) - }, bottomLayer2D.GeometrySurface.OuterLoop.CurveList); - } - - [Test] - public void ConvertToSoilProfile2D_WithSurfaceLinePartiallyEnvelopedByTopSoilLayer_ReturnsExpectedSoilProfile2D() + SoilLayer2D bottomLayer2D = soilLayer2Ds.Single(l => string.Equals(l.Name, bottomLayerName)); + AssertSoilLayerProperties(bottomLayer, bottomLayer2D); + AssertGeometry(new[] { - // Setup - const string bottomLayerName = "BottomLayer"; - const string middleLayerName = "MiddleLayer"; - const string topLayerName = "TopLayer"; + new GeometryCurve(new Point2D(0, -5), new Point2D(5, -5)), + new GeometryCurve(new Point2D(5, -5), new Point2D(10, -5)), + new GeometryCurve(new Point2D(10, -5), new Point2D(10, -10)), + new GeometryCurve(new Point2D(10, -10), new Point2D(5, -10)), + new GeometryCurve(new Point2D(5, -10), new Point2D(0, -10)), + new GeometryCurve(new Point2D(0, -10), new Point2D(0, -5)) + }, bottomLayer2D.GeometrySurface.OuterLoop.CurveList); + } - SoilLayer1D bottomLayer = CreateSoilLayer(-5, bottomLayerName); - SoilLayer1D middleLayer = CreateSoilLayer(0, middleLayerName); + [Test] + public void ConvertToSoilProfile2D_WithSurfaceLinePartiallyEnvelopedByTopSoilLayer_ReturnsExpectedSoilProfile2D() + { + // Setup + const string bottomLayerName = "BottomLayer"; + const string middleLayerName = "MiddleLayer"; + const string topLayerName = "TopLayer"; - var profile = new SoilProfile1D(); - profile.Layers.Add(bottomLayer); - profile.Layers.Add(middleLayer); - profile.BottomLevel = -10; + SoilLayer1D bottomLayer = CreateSoilLayer(-5, bottomLayerName); + SoilLayer1D middleLayer = CreateSoilLayer(0, middleLayerName); - SurfaceLine2 surfaceLine = CreateSurfaceLine(new[] - { - new GeometryPoint(0, -2.5), - new GeometryPoint(5, 2.5), - new GeometryPoint(10, -2.5) - }); + var profile = new SoilProfile1D(); + profile.Layers.Add(bottomLayer); + profile.Layers.Add(middleLayer); + profile.BottomLevel = -10; - var soilSurfaceProfile = new SoilSurfaceProfile - { - SoilProfile = profile, - SurfaceLine2 = surfaceLine, - DikeEmbankmentMaterial = new Soil - { - Name = topLayerName - } - }; + SurfaceLine2 surfaceLine = CreateSurfaceLine(new[] + { + new GeometryPoint(0, -2.5), + new GeometryPoint(5, 2.5), + new GeometryPoint(10, -2.5) + }); - // Call - SoilProfile2D soilProfile2D = soilSurfaceProfile.ConvertToSoilProfile2D(); - - // Assert - IList soilLayer2Ds = soilProfile2D.Surfaces; - Assert.That(soilLayer2Ds, Has.Count.EqualTo(3)); - - SoilLayer2D topSoilLayer2D = soilLayer2Ds.Single(l => string.Equals(l.Name, topLayerName)); - AssertDikeEmbankmentSoilLayerProperties(soilSurfaceProfile, topSoilLayer2D); - AssertGeometry(new[] + var soilSurfaceProfile = new SoilSurfaceProfile + { + SoilProfile = profile, + SurfaceLine2 = surfaceLine, + DikeEmbankmentMaterial = new Soil { - new GeometryCurve(new Point2D(2.5, 0), new Point2D(5, 2.5)), - new GeometryCurve(new Point2D(5, 2.5), new Point2D(7.5, 0)), - new GeometryCurve(new Point2D(7.5, 0), new Point2D(5, 0)), - new GeometryCurve(new Point2D(5, 0), new Point2D(2.5, 0)) - }, topSoilLayer2D.GeometrySurface.OuterLoop.CurveList); + Name = topLayerName + } + }; - SoilLayer2D middleSoilLayer2D = soilLayer2Ds.Single(l => string.Equals(l.Name, middleLayerName)); - AssertSoilLayerProperties(middleLayer, middleSoilLayer2D); - AssertGeometry(new[] - { - new GeometryCurve(new Point2D(0, -2.5), new Point2D(2.5, 0)), - new GeometryCurve(new Point2D(2.5, 0), new Point2D(5, 0)), - new GeometryCurve(new Point2D(5, 0), new Point2D(7.5, 0)), - new GeometryCurve(new Point2D(7.5, 0), new Point2D(10, -2.5)), - new GeometryCurve(new Point2D(10, -2.5), new Point2D(10, -5)), - new GeometryCurve(new Point2D(10, -5), new Point2D(7.5, -5)), - new GeometryCurve(new Point2D(7.5, -5), new Point2D(5, -5)), - new GeometryCurve(new Point2D(5, -5), new Point2D(2.5, -5)), - new GeometryCurve(new Point2D(2.5, -5), new Point2D(0, -5)), - new GeometryCurve(new Point2D(0, -5), new Point2D(0, -2.5)) - }, middleSoilLayer2D.GeometrySurface.OuterLoop.CurveList); + // Call + SoilProfile2D soilProfile2D = soilSurfaceProfile.ConvertToSoilProfile2D(); - SoilLayer2D bottomSoilLayer2D = soilLayer2Ds.Single(l => string.Equals(l.Name, bottomLayerName)); - AssertSoilLayerProperties(bottomLayer, bottomSoilLayer2D); - AssertGeometry(new[] - { - new GeometryCurve(new Point2D(0, -5), new Point2D(2.5, -5)), - new GeometryCurve(new Point2D(2.5, -5), new Point2D(5, -5)), - new GeometryCurve(new Point2D(5, -5), new Point2D(7.5, -5)), - new GeometryCurve(new Point2D(7.5, -5), new Point2D(10, -5)), - new GeometryCurve(new Point2D(10, -5), new Point2D(10, -10)), - new GeometryCurve(new Point2D(10, -10), new Point2D(7.5, -10)), - new GeometryCurve(new Point2D(7.5, -10), new Point2D(5, -10)), - new GeometryCurve(new Point2D(5, -10), new Point2D(2.5, -10)), - new GeometryCurve(new Point2D(2.5, -10), new Point2D(0, -10)), - new GeometryCurve(new Point2D(0, -10), new Point2D(0, -5)) - }, bottomSoilLayer2D.GeometrySurface.OuterLoop.CurveList); - } + // Assert + IList soilLayer2Ds = soilProfile2D.Surfaces; + Assert.That(soilLayer2Ds, Has.Count.EqualTo(3)); - [Test] - public void ConvertToSoilProfile2D_WithSurfaceLineIntersectingSoilLayers_ReturnsExpectedSoilProfile() + SoilLayer2D topSoilLayer2D = soilLayer2Ds.Single(l => string.Equals(l.Name, topLayerName)); + AssertDikeEmbankmentSoilLayerProperties(soilSurfaceProfile, topSoilLayer2D); + AssertGeometry(new[] { - // Setup - const string bottomLayerName = "BottomLayer"; - const string middleLayerName = "MiddleLayer"; - const string topLayerName = "TopLayer"; + new GeometryCurve(new Point2D(2.5, 0), new Point2D(5, 2.5)), + new GeometryCurve(new Point2D(5, 2.5), new Point2D(7.5, 0)), + new GeometryCurve(new Point2D(7.5, 0), new Point2D(5, 0)), + new GeometryCurve(new Point2D(5, 0), new Point2D(2.5, 0)) + }, topSoilLayer2D.GeometrySurface.OuterLoop.CurveList); - SoilLayer1D bottomLayer = CreateSoilLayer(-1.25, bottomLayerName); - SoilLayer1D middleLayer = CreateSoilLayer(0, middleLayerName); + SoilLayer2D middleSoilLayer2D = soilLayer2Ds.Single(l => string.Equals(l.Name, middleLayerName)); + AssertSoilLayerProperties(middleLayer, middleSoilLayer2D); + AssertGeometry(new[] + { + new GeometryCurve(new Point2D(0, -2.5), new Point2D(2.5, 0)), + new GeometryCurve(new Point2D(2.5, 0), new Point2D(5, 0)), + new GeometryCurve(new Point2D(5, 0), new Point2D(7.5, 0)), + new GeometryCurve(new Point2D(7.5, 0), new Point2D(10, -2.5)), + new GeometryCurve(new Point2D(10, -2.5), new Point2D(10, -5)), + new GeometryCurve(new Point2D(10, -5), new Point2D(7.5, -5)), + new GeometryCurve(new Point2D(7.5, -5), new Point2D(5, -5)), + new GeometryCurve(new Point2D(5, -5), new Point2D(2.5, -5)), + new GeometryCurve(new Point2D(2.5, -5), new Point2D(0, -5)), + new GeometryCurve(new Point2D(0, -5), new Point2D(0, -2.5)) + }, middleSoilLayer2D.GeometrySurface.OuterLoop.CurveList); - var profile = new SoilProfile1D(); - profile.Layers.Add(bottomLayer); - profile.Layers.Add(middleLayer); - profile.BottomLevel = -10; + SoilLayer2D bottomSoilLayer2D = soilLayer2Ds.Single(l => string.Equals(l.Name, bottomLayerName)); + AssertSoilLayerProperties(bottomLayer, bottomSoilLayer2D); + AssertGeometry(new[] + { + new GeometryCurve(new Point2D(0, -5), new Point2D(2.5, -5)), + new GeometryCurve(new Point2D(2.5, -5), new Point2D(5, -5)), + new GeometryCurve(new Point2D(5, -5), new Point2D(7.5, -5)), + new GeometryCurve(new Point2D(7.5, -5), new Point2D(10, -5)), + new GeometryCurve(new Point2D(10, -5), new Point2D(10, -10)), + new GeometryCurve(new Point2D(10, -10), new Point2D(7.5, -10)), + new GeometryCurve(new Point2D(7.5, -10), new Point2D(5, -10)), + new GeometryCurve(new Point2D(5, -10), new Point2D(2.5, -10)), + new GeometryCurve(new Point2D(2.5, -10), new Point2D(0, -10)), + new GeometryCurve(new Point2D(0, -10), new Point2D(0, -5)) + }, bottomSoilLayer2D.GeometrySurface.OuterLoop.CurveList); + } - SurfaceLine2 surfaceLine = CreateSurfaceLine(new[] - { - new GeometryPoint(0, 2.5), - new GeometryPoint(5, -2.5), - new GeometryPoint(10, 2.5) - }); + [Test] + public void ConvertToSoilProfile2D_WithSurfaceLineIntersectingSoilLayers_ReturnsExpectedSoilProfile() + { + // Setup + const string bottomLayerName = "BottomLayer"; + const string middleLayerName = "MiddleLayer"; + const string topLayerName = "TopLayer"; - var soilSurfaceProfile = new SoilSurfaceProfile - { - SoilProfile = profile, - SurfaceLine2 = surfaceLine, - DikeEmbankmentMaterial = new Soil - { - Name = topLayerName - } - }; + SoilLayer1D bottomLayer = CreateSoilLayer(-1.25, bottomLayerName); + SoilLayer1D middleLayer = CreateSoilLayer(0, middleLayerName); - // Call - SoilProfile2D soilProfile2D = soilSurfaceProfile.ConvertToSoilProfile2D(); + var profile = new SoilProfile1D(); + profile.Layers.Add(bottomLayer); + profile.Layers.Add(middleLayer); + profile.BottomLevel = -10; - // Assert - IList soilLayer2Ds = soilProfile2D.Surfaces; - Assert.That(soilLayer2Ds, Has.Count.EqualTo(5)); + SurfaceLine2 surfaceLine = CreateSurfaceLine(new[] + { + new GeometryPoint(0, 2.5), + new GeometryPoint(5, -2.5), + new GeometryPoint(10, 2.5) + }); - SoilLayer2D[] topSoilLayerSurfaces = soilLayer2Ds.Where(l => string.Equals(l.Name, topLayerName)).ToArray(); - Assert.That(topSoilLayerSurfaces.Length, Is.EqualTo(2)); - foreach (SoilLayer2D surface in topSoilLayerSurfaces) + var soilSurfaceProfile = new SoilSurfaceProfile + { + SoilProfile = profile, + SurfaceLine2 = surfaceLine, + DikeEmbankmentMaterial = new Soil { - AssertDikeEmbankmentSoilLayerProperties(soilSurfaceProfile, surface); + Name = topLayerName } + }; - AssertGeometry(new[] - { - new GeometryCurve(new Point2D(0, 2.5), new Point2D(2.5, 0)), - new GeometryCurve(new Point2D(2.5, 0), new Point2D(0, 0)), - new GeometryCurve(new Point2D(0, 0), new Point2D(0, 2.5)) - }, topSoilLayerSurfaces[0].GeometrySurface.OuterLoop.CurveList); - AssertGeometry(new[] - { - new GeometryCurve(new Point2D(7.5, 0), new Point2D(10, 2.5)), - new GeometryCurve(new Point2D(10, 2.5), new Point2D(10, 0)), - new GeometryCurve(new Point2D(10, 0), new Point2D(7.5, 0)) - }, topSoilLayerSurfaces[1].GeometrySurface.OuterLoop.CurveList); + // Call + SoilProfile2D soilProfile2D = soilSurfaceProfile.ConvertToSoilProfile2D(); - SoilLayer2D[] middleLayerSurfaces = soilLayer2Ds.Where(l => string.Equals(l.Name, middleLayerName)).ToArray(); - Assert.That(middleLayerSurfaces.Length, Is.EqualTo(2)); - foreach (SoilLayer2D surface in middleLayerSurfaces) - { - AssertSoilLayerProperties(middleLayer, surface); - } + // Assert + IList soilLayer2Ds = soilProfile2D.Surfaces; + Assert.That(soilLayer2Ds, Has.Count.EqualTo(5)); - AssertGeometry(new[] - { - new GeometryCurve(new Point2D(0, 0), new Point2D(2.5, 0)), - new GeometryCurve(new Point2D(2.5, 0), new Point2D(3.75, -1.25)), - new GeometryCurve(new Point2D(3.75, -1.25), new Point2D(2.5, -1.25)), - new GeometryCurve(new Point2D(2.5, -1.25), new Point2D(0, -1.25)), - new GeometryCurve(new Point2D(0, -1.25), new Point2D(0, 0)) - }, middleLayerSurfaces[0].GeometrySurface.OuterLoop.CurveList); - AssertGeometry(new[] - { - new GeometryCurve(new Point2D(7.5, 0), new Point2D(10, 0)), - new GeometryCurve(new Point2D(10, 0), new Point2D(10, -1.25)), - new GeometryCurve(new Point2D(10, -1.25), new Point2D(7.5, -1.25)), - new GeometryCurve(new Point2D(7.5, -1.25), new Point2D(6.25, -1.25)), - new GeometryCurve(new Point2D(6.25, -1.25), new Point2D(7.5, 0)) - }, middleLayerSurfaces[1].GeometrySurface.OuterLoop.CurveList); - - SoilLayer2D bottomLayerSurface = soilLayer2Ds.Single(l => string.Equals(l.Name, bottomLayerName)); - AssertSoilLayerProperties(bottomLayer, bottomLayerSurface); - AssertGeometry(new[] - { - new GeometryCurve(new Point2D(0, -1.25), new Point2D(2.5, -1.25)), - new GeometryCurve(new Point2D(2.5, -1.25), new Point2D(3.75, -1.25)), - new GeometryCurve(new Point2D(3.75, -1.25), new Point2D(5, -2.5)), - new GeometryCurve(new Point2D(5, -2.5), new Point2D(6.25, -1.25)), - new GeometryCurve(new Point2D(6.25, -1.25), new Point2D(7.5, -1.25)), - new GeometryCurve(new Point2D(7.5, -1.25), new Point2D(10, -1.25)), - new GeometryCurve(new Point2D(10, -1.25), new Point2D(10, -10)), - new GeometryCurve(new Point2D(10, -10), new Point2D(7.5, -10)), - new GeometryCurve(new Point2D(7.5, -10), new Point2D(6.25, -10)), - new GeometryCurve(new Point2D(6.25, -10), new Point2D(5, -10)), - new GeometryCurve(new Point2D(5, -10), new Point2D(3.75, -10)), - new GeometryCurve(new Point2D(3.75, -10), new Point2D(2.5, -10)), - new GeometryCurve(new Point2D(2.5, -10), new Point2D(0, -10)), - new GeometryCurve(new Point2D(0, -10), new Point2D(0, -1.25)) - }, bottomLayerSurface.GeometrySurface.OuterLoop.CurveList); + SoilLayer2D[] topSoilLayerSurfaces = soilLayer2Ds.Where(l => string.Equals(l.Name, topLayerName)).ToArray(); + Assert.That(topSoilLayerSurfaces.Length, Is.EqualTo(2)); + foreach (SoilLayer2D surface in topSoilLayerSurfaces) + { + AssertDikeEmbankmentSoilLayerProperties(soilSurfaceProfile, surface); } - [Test] - public void ConvertToSoilProfile2D_WithSurfaceLineIntersectingSoilLayerAndInflectionAtBottomIntersection_ReturnsExpectedSoilProfile() + AssertGeometry(new[] { - // Setup - const string bottomLayerName = "BottomLayer"; - const string middleLayerName = "MiddleLayer"; - const string topLayerName = "TopLayer"; + new GeometryCurve(new Point2D(0, 2.5), new Point2D(2.5, 0)), + new GeometryCurve(new Point2D(2.5, 0), new Point2D(0, 0)), + new GeometryCurve(new Point2D(0, 0), new Point2D(0, 2.5)) + }, topSoilLayerSurfaces[0].GeometrySurface.OuterLoop.CurveList); + AssertGeometry(new[] + { + new GeometryCurve(new Point2D(7.5, 0), new Point2D(10, 2.5)), + new GeometryCurve(new Point2D(10, 2.5), new Point2D(10, 0)), + new GeometryCurve(new Point2D(10, 0), new Point2D(7.5, 0)) + }, topSoilLayerSurfaces[1].GeometrySurface.OuterLoop.CurveList); - SoilLayer1D bottomLayer = CreateSoilLayer(-2.5, bottomLayerName); - SoilLayer1D middleLayer = CreateSoilLayer(0, middleLayerName); + SoilLayer2D[] middleLayerSurfaces = soilLayer2Ds.Where(l => string.Equals(l.Name, middleLayerName)).ToArray(); + Assert.That(middleLayerSurfaces.Length, Is.EqualTo(2)); + foreach (SoilLayer2D surface in middleLayerSurfaces) + { + AssertSoilLayerProperties(middleLayer, surface); + } - var profile = new SoilProfile1D(); - profile.Layers.Add(bottomLayer); - profile.Layers.Add(middleLayer); - profile.BottomLevel = -10; + AssertGeometry(new[] + { + new GeometryCurve(new Point2D(0, 0), new Point2D(2.5, 0)), + new GeometryCurve(new Point2D(2.5, 0), new Point2D(3.75, -1.25)), + new GeometryCurve(new Point2D(3.75, -1.25), new Point2D(2.5, -1.25)), + new GeometryCurve(new Point2D(2.5, -1.25), new Point2D(0, -1.25)), + new GeometryCurve(new Point2D(0, -1.25), new Point2D(0, 0)) + }, middleLayerSurfaces[0].GeometrySurface.OuterLoop.CurveList); + AssertGeometry(new[] + { + new GeometryCurve(new Point2D(7.5, 0), new Point2D(10, 0)), + new GeometryCurve(new Point2D(10, 0), new Point2D(10, -1.25)), + new GeometryCurve(new Point2D(10, -1.25), new Point2D(7.5, -1.25)), + new GeometryCurve(new Point2D(7.5, -1.25), new Point2D(6.25, -1.25)), + new GeometryCurve(new Point2D(6.25, -1.25), new Point2D(7.5, 0)) + }, middleLayerSurfaces[1].GeometrySurface.OuterLoop.CurveList); - SurfaceLine2 surfaceLine = CreateSurfaceLine(new[] - { - new GeometryPoint(0, 2.5), - new GeometryPoint(5, -2.5), - new GeometryPoint(10, 2.5) - }); + SoilLayer2D bottomLayerSurface = soilLayer2Ds.Single(l => string.Equals(l.Name, bottomLayerName)); + AssertSoilLayerProperties(bottomLayer, bottomLayerSurface); + AssertGeometry(new[] + { + new GeometryCurve(new Point2D(0, -1.25), new Point2D(2.5, -1.25)), + new GeometryCurve(new Point2D(2.5, -1.25), new Point2D(3.75, -1.25)), + new GeometryCurve(new Point2D(3.75, -1.25), new Point2D(5, -2.5)), + new GeometryCurve(new Point2D(5, -2.5), new Point2D(6.25, -1.25)), + new GeometryCurve(new Point2D(6.25, -1.25), new Point2D(7.5, -1.25)), + new GeometryCurve(new Point2D(7.5, -1.25), new Point2D(10, -1.25)), + new GeometryCurve(new Point2D(10, -1.25), new Point2D(10, -10)), + new GeometryCurve(new Point2D(10, -10), new Point2D(7.5, -10)), + new GeometryCurve(new Point2D(7.5, -10), new Point2D(6.25, -10)), + new GeometryCurve(new Point2D(6.25, -10), new Point2D(5, -10)), + new GeometryCurve(new Point2D(5, -10), new Point2D(3.75, -10)), + new GeometryCurve(new Point2D(3.75, -10), new Point2D(2.5, -10)), + new GeometryCurve(new Point2D(2.5, -10), new Point2D(0, -10)), + new GeometryCurve(new Point2D(0, -10), new Point2D(0, -1.25)) + }, bottomLayerSurface.GeometrySurface.OuterLoop.CurveList); + } - var soilSurfaceProfile = new SoilSurfaceProfile - { - SoilProfile = profile, - SurfaceLine2 = surfaceLine, - DikeEmbankmentMaterial = new Soil - { - Name = topLayerName - } - }; + [Test] + public void ConvertToSoilProfile2D_WithSurfaceLineIntersectingSoilLayerAndInflectionAtBottomIntersection_ReturnsExpectedSoilProfile() + { + // Setup + const string bottomLayerName = "BottomLayer"; + const string middleLayerName = "MiddleLayer"; + const string topLayerName = "TopLayer"; - // Call - SoilProfile2D soilProfile2D = soilSurfaceProfile.ConvertToSoilProfile2D(); + SoilLayer1D bottomLayer = CreateSoilLayer(-2.5, bottomLayerName); + SoilLayer1D middleLayer = CreateSoilLayer(0, middleLayerName); - // Assert - IList soilLayer2Ds = soilProfile2D.Surfaces; - Assert.That(soilLayer2Ds, Has.Count.EqualTo(5)); + var profile = new SoilProfile1D(); + profile.Layers.Add(bottomLayer); + profile.Layers.Add(middleLayer); + profile.BottomLevel = -10; - SoilLayer2D[] topSoilLayerSurfaces = soilLayer2Ds.Where(l => string.Equals(l.Name, topLayerName)).ToArray(); - Assert.That(topSoilLayerSurfaces.Length, Is.EqualTo(2)); - foreach (SoilLayer2D surface in topSoilLayerSurfaces) - { - AssertDikeEmbankmentSoilLayerProperties(soilSurfaceProfile, surface); - } + SurfaceLine2 surfaceLine = CreateSurfaceLine(new[] + { + new GeometryPoint(0, 2.5), + new GeometryPoint(5, -2.5), + new GeometryPoint(10, 2.5) + }); - AssertGeometry(new[] + var soilSurfaceProfile = new SoilSurfaceProfile + { + SoilProfile = profile, + SurfaceLine2 = surfaceLine, + DikeEmbankmentMaterial = new Soil { - new GeometryCurve(new Point2D(0, 2.5), new Point2D(2.5, 0)), - new GeometryCurve(new Point2D(2.5, 0), new Point2D(0, 0)), - new GeometryCurve(new Point2D(0, 0), new Point2D(0, 2.5)) - }, topSoilLayerSurfaces[0].GeometrySurface.OuterLoop.CurveList); - AssertGeometry(new[] - { - new GeometryCurve(new Point2D(7.5, 0), new Point2D(10, 2.5)), - new GeometryCurve(new Point2D(10, 2.5), new Point2D(10, 0)), - new GeometryCurve(new Point2D(10, 0), new Point2D(7.5, 0)) - }, topSoilLayerSurfaces[1].GeometrySurface.OuterLoop.CurveList); - - SoilLayer2D[] middleLayerSurfaces = soilLayer2Ds.Where(l => string.Equals(l.Name, middleLayerName)).ToArray(); - Assert.That(middleLayerSurfaces.Length, Is.EqualTo(2)); - foreach (SoilLayer2D surface in middleLayerSurfaces) - { - AssertSoilLayerProperties(middleLayer, surface); + Name = topLayerName } + }; - AssertGeometry(new[] - { - new GeometryCurve(new Point2D(0, 0), new Point2D(2.5, 0)), - new GeometryCurve(new Point2D(2.5, 0), new Point2D(5, -2.5)), - new GeometryCurve(new Point2D(5, -2.5), new Point2D(2.5, -2.5)), - new GeometryCurve(new Point2D(2.5, -2.5), new Point2D(0, -2.5)), - new GeometryCurve(new Point2D(0, -2.5), new Point2D(0, 0)) - }, middleLayerSurfaces[0].GeometrySurface.OuterLoop.CurveList); - AssertGeometry(new[] - { - new GeometryCurve(new Point2D(7.5, 0), new Point2D(10, 0)), - new GeometryCurve(new Point2D(10, 0), new Point2D(10, -2.5)), - new GeometryCurve(new Point2D(10, -2.5), new Point2D(7.5, -2.5)), - new GeometryCurve(new Point2D(7.5, -2.5), new Point2D(5, -2.5)), - new GeometryCurve(new Point2D(5, -2.5), new Point2D(7.5, 0)) - }, middleLayerSurfaces[1].GeometrySurface.OuterLoop.CurveList); + // Call + SoilProfile2D soilProfile2D = soilSurfaceProfile.ConvertToSoilProfile2D(); - SoilLayer2D bottomLayerSurface = soilLayer2Ds.Single(l => string.Equals(l.Name, bottomLayerName)); - AssertSoilLayerProperties(bottomLayer, bottomLayerSurface); - AssertGeometry(new[] - { - new GeometryCurve(new Point2D(0, -2.5), new Point2D(2.5, -2.5)), - new GeometryCurve(new Point2D(2.5, -2.5), new Point2D(5, -2.5)), - new GeometryCurve(new Point2D(5, -2.5), new Point2D(7.5, -2.5)), - new GeometryCurve(new Point2D(7.5, -2.5), new Point2D(10, -2.5)), - new GeometryCurve(new Point2D(10, -2.5), new Point2D(10, -10)), - new GeometryCurve(new Point2D(10, -10), new Point2D(7.5, -10)), - new GeometryCurve(new Point2D(7.5, -10), new Point2D(5, -10)), - new GeometryCurve(new Point2D(5, -10), new Point2D(2.5, -10)), - new GeometryCurve(new Point2D(2.5, -10), new Point2D(0, -10)), - new GeometryCurve(new Point2D(0, -10), new Point2D(0, -2.5)) - }, bottomLayerSurface.GeometrySurface.OuterLoop.CurveList); + // Assert + IList soilLayer2Ds = soilProfile2D.Surfaces; + Assert.That(soilLayer2Ds, Has.Count.EqualTo(5)); + + SoilLayer2D[] topSoilLayerSurfaces = soilLayer2Ds.Where(l => string.Equals(l.Name, topLayerName)).ToArray(); + Assert.That(topSoilLayerSurfaces.Length, Is.EqualTo(2)); + foreach (SoilLayer2D surface in topSoilLayerSurfaces) + { + AssertDikeEmbankmentSoilLayerProperties(soilSurfaceProfile, surface); } - [Test] - public void ConvertToSoilProfile2D_WithSurfaceLineIntersectingSoilLayerAndHorizontalLineAtBottomIntersection_ReturnsExpectedSoilProfile() + AssertGeometry(new[] { - // Setup - const string bottomLayerName = "BottomLayer"; - const string middleLayerName = "MiddleLayer"; - const string topLayerName = "TopLayer"; + new GeometryCurve(new Point2D(0, 2.5), new Point2D(2.5, 0)), + new GeometryCurve(new Point2D(2.5, 0), new Point2D(0, 0)), + new GeometryCurve(new Point2D(0, 0), new Point2D(0, 2.5)) + }, topSoilLayerSurfaces[0].GeometrySurface.OuterLoop.CurveList); + AssertGeometry(new[] + { + new GeometryCurve(new Point2D(7.5, 0), new Point2D(10, 2.5)), + new GeometryCurve(new Point2D(10, 2.5), new Point2D(10, 0)), + new GeometryCurve(new Point2D(10, 0), new Point2D(7.5, 0)) + }, topSoilLayerSurfaces[1].GeometrySurface.OuterLoop.CurveList); - SoilLayer1D bottomLayer = CreateSoilLayer(-2.5, bottomLayerName); - SoilLayer1D middleLayer = CreateSoilLayer(0, middleLayerName); + SoilLayer2D[] middleLayerSurfaces = soilLayer2Ds.Where(l => string.Equals(l.Name, middleLayerName)).ToArray(); + Assert.That(middleLayerSurfaces.Length, Is.EqualTo(2)); + foreach (SoilLayer2D surface in middleLayerSurfaces) + { + AssertSoilLayerProperties(middleLayer, surface); + } - var profile = new SoilProfile1D(); - profile.Layers.Add(bottomLayer); - profile.Layers.Add(middleLayer); - profile.BottomLevel = -10; + AssertGeometry(new[] + { + new GeometryCurve(new Point2D(0, 0), new Point2D(2.5, 0)), + new GeometryCurve(new Point2D(2.5, 0), new Point2D(5, -2.5)), + new GeometryCurve(new Point2D(5, -2.5), new Point2D(2.5, -2.5)), + new GeometryCurve(new Point2D(2.5, -2.5), new Point2D(0, -2.5)), + new GeometryCurve(new Point2D(0, -2.5), new Point2D(0, 0)) + }, middleLayerSurfaces[0].GeometrySurface.OuterLoop.CurveList); + AssertGeometry(new[] + { + new GeometryCurve(new Point2D(7.5, 0), new Point2D(10, 0)), + new GeometryCurve(new Point2D(10, 0), new Point2D(10, -2.5)), + new GeometryCurve(new Point2D(10, -2.5), new Point2D(7.5, -2.5)), + new GeometryCurve(new Point2D(7.5, -2.5), new Point2D(5, -2.5)), + new GeometryCurve(new Point2D(5, -2.5), new Point2D(7.5, 0)) + }, middleLayerSurfaces[1].GeometrySurface.OuterLoop.CurveList); - SurfaceLine2 surfaceLine = CreateSurfaceLine(new[] - { - new GeometryPoint(0, 2.5), - new GeometryPoint(5, -2.5), - new GeometryPoint(10, -2.5), - new GeometryPoint(15, 2.5) - }); + SoilLayer2D bottomLayerSurface = soilLayer2Ds.Single(l => string.Equals(l.Name, bottomLayerName)); + AssertSoilLayerProperties(bottomLayer, bottomLayerSurface); + AssertGeometry(new[] + { + new GeometryCurve(new Point2D(0, -2.5), new Point2D(2.5, -2.5)), + new GeometryCurve(new Point2D(2.5, -2.5), new Point2D(5, -2.5)), + new GeometryCurve(new Point2D(5, -2.5), new Point2D(7.5, -2.5)), + new GeometryCurve(new Point2D(7.5, -2.5), new Point2D(10, -2.5)), + new GeometryCurve(new Point2D(10, -2.5), new Point2D(10, -10)), + new GeometryCurve(new Point2D(10, -10), new Point2D(7.5, -10)), + new GeometryCurve(new Point2D(7.5, -10), new Point2D(5, -10)), + new GeometryCurve(new Point2D(5, -10), new Point2D(2.5, -10)), + new GeometryCurve(new Point2D(2.5, -10), new Point2D(0, -10)), + new GeometryCurve(new Point2D(0, -10), new Point2D(0, -2.5)) + }, bottomLayerSurface.GeometrySurface.OuterLoop.CurveList); + } - var soilSurfaceProfile = new SoilSurfaceProfile - { - SoilProfile = profile, - SurfaceLine2 = surfaceLine, - DikeEmbankmentMaterial = new Soil - { - Name = topLayerName - } - }; + [Test] + public void ConvertToSoilProfile2D_WithSurfaceLineIntersectingSoilLayerAndHorizontalLineAtBottomIntersection_ReturnsExpectedSoilProfile() + { + // Setup + const string bottomLayerName = "BottomLayer"; + const string middleLayerName = "MiddleLayer"; + const string topLayerName = "TopLayer"; - // Call - SoilProfile2D soilProfile2D = soilSurfaceProfile.ConvertToSoilProfile2D(); + SoilLayer1D bottomLayer = CreateSoilLayer(-2.5, bottomLayerName); + SoilLayer1D middleLayer = CreateSoilLayer(0, middleLayerName); - // Assert - IList soilLayer2Ds = soilProfile2D.Surfaces; - Assert.That(soilLayer2Ds, Has.Count.EqualTo(5)); + var profile = new SoilProfile1D(); + profile.Layers.Add(bottomLayer); + profile.Layers.Add(middleLayer); + profile.BottomLevel = -10; - SoilLayer2D[] topSoilLayerSurfaces = soilLayer2Ds.Where(l => string.Equals(l.Name, topLayerName)).ToArray(); - Assert.That(topSoilLayerSurfaces.Length, Is.EqualTo(2)); - foreach (SoilLayer2D surface in topSoilLayerSurfaces) + SurfaceLine2 surfaceLine = CreateSurfaceLine(new[] + { + new GeometryPoint(0, 2.5), + new GeometryPoint(5, -2.5), + new GeometryPoint(10, -2.5), + new GeometryPoint(15, 2.5) + }); + + var soilSurfaceProfile = new SoilSurfaceProfile + { + SoilProfile = profile, + SurfaceLine2 = surfaceLine, + DikeEmbankmentMaterial = new Soil { - AssertDikeEmbankmentSoilLayerProperties(soilSurfaceProfile, surface); + Name = topLayerName } + }; - AssertGeometry(new[] - { - new GeometryCurve(new Point2D(0, 2.5), new Point2D(2.5, 0)), - new GeometryCurve(new Point2D(2.5, 0), new Point2D(0, 0)), - new GeometryCurve(new Point2D(0, 0), new Point2D(0, 2.5)) - }, topSoilLayerSurfaces[0].GeometrySurface.OuterLoop.CurveList); - AssertGeometry(new[] - { - new GeometryCurve(new Point2D(12.5, 0), new Point2D(15, 2.5)), - new GeometryCurve(new Point2D(15, 2.5), new Point2D(15, 0)), - new GeometryCurve(new Point2D(15, 0), new Point2D(12.5, 0)) - }, topSoilLayerSurfaces[1].GeometrySurface.OuterLoop.CurveList); + // Call + SoilProfile2D soilProfile2D = soilSurfaceProfile.ConvertToSoilProfile2D(); - SoilLayer2D[] middleLayerSurfaces = soilLayer2Ds.Where(l => string.Equals(l.Name, middleLayerName)).ToArray(); - Assert.That(middleLayerSurfaces.Length, Is.EqualTo(2)); - foreach (SoilLayer2D surface in middleLayerSurfaces) - { - AssertSoilLayerProperties(middleLayer, surface); - } + // Assert + IList soilLayer2Ds = soilProfile2D.Surfaces; + Assert.That(soilLayer2Ds, Has.Count.EqualTo(5)); - AssertGeometry(new[] - { - new GeometryCurve(new Point2D(0, 0), new Point2D(2.5, 0)), - new GeometryCurve(new Point2D(2.5, 0), new Point2D(5, -2.5)), - new GeometryCurve(new Point2D(5, -2.5), new Point2D(2.5, -2.5)), - new GeometryCurve(new Point2D(2.5, -2.5), new Point2D(0, -2.5)), - new GeometryCurve(new Point2D(0, -2.5), new Point2D(0, 0)) - }, middleLayerSurfaces[0].GeometrySurface.OuterLoop.CurveList); - AssertGeometry(new[] - { - new GeometryCurve(new Point2D(12.5, 0), new Point2D(15, 0)), - new GeometryCurve(new Point2D(15, 0), new Point2D(15, -2.5)), - new GeometryCurve(new Point2D(15, -2.5), new Point2D(12.5, -2.5)), - new GeometryCurve(new Point2D(12.5, -2.5), new Point2D(10, -2.5)), - new GeometryCurve(new Point2D(10, -2.5), new Point2D(12.5, 0)) - }, middleLayerSurfaces[1].GeometrySurface.OuterLoop.CurveList); + SoilLayer2D[] topSoilLayerSurfaces = soilLayer2Ds.Where(l => string.Equals(l.Name, topLayerName)).ToArray(); + Assert.That(topSoilLayerSurfaces.Length, Is.EqualTo(2)); + foreach (SoilLayer2D surface in topSoilLayerSurfaces) + { + AssertDikeEmbankmentSoilLayerProperties(soilSurfaceProfile, surface); + } - SoilLayer2D bottomLayerSurface = soilLayer2Ds.Single(l => string.Equals(l.Name, bottomLayerName)); - AssertSoilLayerProperties(bottomLayer, bottomLayerSurface); - AssertGeometry(new[] - { - new GeometryCurve(new Point2D(0, -2.5), new Point2D(2.5, -2.5)), - new GeometryCurve(new Point2D(2.5, -2.5), new Point2D(5, -2.5)), - new GeometryCurve(new Point2D(5, -2.5), new Point2D(10, -2.5)), - new GeometryCurve(new Point2D(10, -2.5), new Point2D(12.5, -2.5)), - new GeometryCurve(new Point2D(12.5, -2.5), new Point2D(15, -2.5)), - new GeometryCurve(new Point2D(15, -2.5), new Point2D(15, -10)), - new GeometryCurve(new Point2D(15, -10), new Point2D(12.5, -10)), - new GeometryCurve(new Point2D(12.5, -10), new Point2D(10, -10)), - new GeometryCurve(new Point2D(10, -10), new Point2D(5, -10)), - new GeometryCurve(new Point2D(5, -10), new Point2D(2.5, -10)), - new GeometryCurve(new Point2D(2.5, -10), new Point2D(0, -10)), - new GeometryCurve(new Point2D(0, -10), new Point2D(0, -2.5)) - }, bottomLayerSurface.GeometrySurface.OuterLoop.CurveList); + AssertGeometry(new[] + { + new GeometryCurve(new Point2D(0, 2.5), new Point2D(2.5, 0)), + new GeometryCurve(new Point2D(2.5, 0), new Point2D(0, 0)), + new GeometryCurve(new Point2D(0, 0), new Point2D(0, 2.5)) + }, topSoilLayerSurfaces[0].GeometrySurface.OuterLoop.CurveList); + AssertGeometry(new[] + { + new GeometryCurve(new Point2D(12.5, 0), new Point2D(15, 2.5)), + new GeometryCurve(new Point2D(15, 2.5), new Point2D(15, 0)), + new GeometryCurve(new Point2D(15, 0), new Point2D(12.5, 0)) + }, topSoilLayerSurfaces[1].GeometrySurface.OuterLoop.CurveList); + + SoilLayer2D[] middleLayerSurfaces = soilLayer2Ds.Where(l => string.Equals(l.Name, middleLayerName)).ToArray(); + Assert.That(middleLayerSurfaces.Length, Is.EqualTo(2)); + foreach (SoilLayer2D surface in middleLayerSurfaces) + { + AssertSoilLayerProperties(middleLayer, surface); } - [Test] - public void ConvertToSoilProfile2D_WithSurfaceLineStartingHorizontallyAtBottomLayer_ReturnsExpectedSoilProfile() + AssertGeometry(new[] { - // Setup - const string bottomLayerName = "BottomLayer"; - const string middleLayerName = "MiddleLayer"; - const string topLayerName = "TopLayer"; + new GeometryCurve(new Point2D(0, 0), new Point2D(2.5, 0)), + new GeometryCurve(new Point2D(2.5, 0), new Point2D(5, -2.5)), + new GeometryCurve(new Point2D(5, -2.5), new Point2D(2.5, -2.5)), + new GeometryCurve(new Point2D(2.5, -2.5), new Point2D(0, -2.5)), + new GeometryCurve(new Point2D(0, -2.5), new Point2D(0, 0)) + }, middleLayerSurfaces[0].GeometrySurface.OuterLoop.CurveList); + AssertGeometry(new[] + { + new GeometryCurve(new Point2D(12.5, 0), new Point2D(15, 0)), + new GeometryCurve(new Point2D(15, 0), new Point2D(15, -2.5)), + new GeometryCurve(new Point2D(15, -2.5), new Point2D(12.5, -2.5)), + new GeometryCurve(new Point2D(12.5, -2.5), new Point2D(10, -2.5)), + new GeometryCurve(new Point2D(10, -2.5), new Point2D(12.5, 0)) + }, middleLayerSurfaces[1].GeometrySurface.OuterLoop.CurveList); - SoilLayer1D bottomLayer = CreateSoilLayer(-2.5, bottomLayerName); - SoilLayer1D middleLayer = CreateSoilLayer(0, middleLayerName); + SoilLayer2D bottomLayerSurface = soilLayer2Ds.Single(l => string.Equals(l.Name, bottomLayerName)); + AssertSoilLayerProperties(bottomLayer, bottomLayerSurface); + AssertGeometry(new[] + { + new GeometryCurve(new Point2D(0, -2.5), new Point2D(2.5, -2.5)), + new GeometryCurve(new Point2D(2.5, -2.5), new Point2D(5, -2.5)), + new GeometryCurve(new Point2D(5, -2.5), new Point2D(10, -2.5)), + new GeometryCurve(new Point2D(10, -2.5), new Point2D(12.5, -2.5)), + new GeometryCurve(new Point2D(12.5, -2.5), new Point2D(15, -2.5)), + new GeometryCurve(new Point2D(15, -2.5), new Point2D(15, -10)), + new GeometryCurve(new Point2D(15, -10), new Point2D(12.5, -10)), + new GeometryCurve(new Point2D(12.5, -10), new Point2D(10, -10)), + new GeometryCurve(new Point2D(10, -10), new Point2D(5, -10)), + new GeometryCurve(new Point2D(5, -10), new Point2D(2.5, -10)), + new GeometryCurve(new Point2D(2.5, -10), new Point2D(0, -10)), + new GeometryCurve(new Point2D(0, -10), new Point2D(0, -2.5)) + }, bottomLayerSurface.GeometrySurface.OuterLoop.CurveList); + } - var profile = new SoilProfile1D(); - profile.Layers.Add(bottomLayer); - profile.Layers.Add(middleLayer); - profile.BottomLevel = -10; + [Test] + public void ConvertToSoilProfile2D_WithSurfaceLineStartingHorizontallyAtBottomLayer_ReturnsExpectedSoilProfile() + { + // Setup + const string bottomLayerName = "BottomLayer"; + const string middleLayerName = "MiddleLayer"; + const string topLayerName = "TopLayer"; - SurfaceLine2 surfaceLine = CreateSurfaceLine(new[] - { - new GeometryPoint(0, -2.5), - new GeometryPoint(5, -2.5), - new GeometryPoint(10, 2.5), - new GeometryPoint(15, -2.5), - new GeometryPoint(20, -2.5) - }); + SoilLayer1D bottomLayer = CreateSoilLayer(-2.5, bottomLayerName); + SoilLayer1D middleLayer = CreateSoilLayer(0, middleLayerName); - var soilSurfaceProfile = new SoilSurfaceProfile - { - SoilProfile = profile, - SurfaceLine2 = surfaceLine, - DikeEmbankmentMaterial = new Soil - { - Name = topLayerName - } - }; + var profile = new SoilProfile1D(); + profile.Layers.Add(bottomLayer); + profile.Layers.Add(middleLayer); + profile.BottomLevel = -10; - // Call - SoilProfile2D soilProfile2D = soilSurfaceProfile.ConvertToSoilProfile2D(); + SurfaceLine2 surfaceLine = CreateSurfaceLine(new[] + { + new GeometryPoint(0, -2.5), + new GeometryPoint(5, -2.5), + new GeometryPoint(10, 2.5), + new GeometryPoint(15, -2.5), + new GeometryPoint(20, -2.5) + }); - // Assert - IList soilLayer2Ds = soilProfile2D.Surfaces; - SoilLayer2D topSoilLayer2D = soilLayer2Ds.Single(l => string.Equals(l.Name, topLayerName)); - AssertDikeEmbankmentSoilLayerProperties(soilSurfaceProfile, topSoilLayer2D); - AssertGeometry(new[] + var soilSurfaceProfile = new SoilSurfaceProfile + { + SoilProfile = profile, + SurfaceLine2 = surfaceLine, + DikeEmbankmentMaterial = new Soil { - new GeometryCurve(new Point2D(7.5, 0), new Point2D(10, 2.5)), - new GeometryCurve(new Point2D(10, 2.5), new Point2D(12.5, 0)), - new GeometryCurve(new Point2D(12.5, 0), new Point2D(10, 0)), - new GeometryCurve(new Point2D(10, 0), new Point2D(7.5, 0)) - }, topSoilLayer2D.GeometrySurface.OuterLoop.CurveList); + Name = topLayerName + } + }; - SoilLayer2D middleSoilLayer2D = soilLayer2Ds.Single(l => string.Equals(l.Name, middleLayerName)); - AssertSoilLayerProperties(middleLayer, middleSoilLayer2D); - AssertGeometry(new[] - { - new GeometryCurve(new Point2D(5, -2.5), new Point2D(7.5, 0)), - new GeometryCurve(new Point2D(7.5, 0), new Point2D(10, 0)), - new GeometryCurve(new Point2D(10, 0), new Point2D(12.5, 0)), - new GeometryCurve(new Point2D(12.5, 0), new Point2D(15, -2.5)), - new GeometryCurve(new Point2D(15, -2.5), new Point2D(12.5, -2.5)), - new GeometryCurve(new Point2D(12.5, -2.5), new Point2D(10, -2.5)), - new GeometryCurve(new Point2D(10, -2.5), new Point2D(7.5, -2.5)), - new GeometryCurve(new Point2D(7.5, -2.5), new Point2D(5, -2.5)) - }, middleSoilLayer2D.GeometrySurface.OuterLoop.CurveList); + // Call + SoilProfile2D soilProfile2D = soilSurfaceProfile.ConvertToSoilProfile2D(); - SoilLayer2D bottomSoilLayer2D = soilLayer2Ds.Single(l => string.Equals(l.Name, bottomLayerName)); - AssertSoilLayerProperties(bottomLayer, bottomSoilLayer2D); - AssertGeometry(new[] - { - new GeometryCurve(new Point2D(0, -2.5), new Point2D(5, -2.5)), - new GeometryCurve(new Point2D(5, -2.5), new Point2D(7.5, -2.5)), - new GeometryCurve(new Point2D(7.5, -2.5), new Point2D(10, -2.5)), - new GeometryCurve(new Point2D(10, -2.5), new Point2D(12.5, -2.5)), - new GeometryCurve(new Point2D(12.5, -2.5), new Point2D(15, -2.5)), - new GeometryCurve(new Point2D(15, -2.5), new Point2D(20, -2.5)), - new GeometryCurve(new Point2D(20, -2.5), new Point2D(20, -10)), - new GeometryCurve(new Point2D(20, -10), new Point2D(15, -10)), - new GeometryCurve(new Point2D(15, -10), new Point2D(12.5, -10)), - new GeometryCurve(new Point2D(12.5, -10), new Point2D(10, -10)), - new GeometryCurve(new Point2D(10, -10), new Point2D(7.5, -10)), - new GeometryCurve(new Point2D(7.5, -10), new Point2D(5, -10)), - new GeometryCurve(new Point2D(5, -10), new Point2D(0, -10)), - new GeometryCurve(new Point2D(0, -10), new Point2D(0, -2.5)) - }, bottomSoilLayer2D.GeometrySurface.OuterLoop.CurveList); - } + // Assert + IList soilLayer2Ds = soilProfile2D.Surfaces; + SoilLayer2D topSoilLayer2D = soilLayer2Ds.Single(l => string.Equals(l.Name, topLayerName)); + AssertDikeEmbankmentSoilLayerProperties(soilSurfaceProfile, topSoilLayer2D); + AssertGeometry(new[] + { + new GeometryCurve(new Point2D(7.5, 0), new Point2D(10, 2.5)), + new GeometryCurve(new Point2D(10, 2.5), new Point2D(12.5, 0)), + new GeometryCurve(new Point2D(12.5, 0), new Point2D(10, 0)), + new GeometryCurve(new Point2D(10, 0), new Point2D(7.5, 0)) + }, topSoilLayer2D.GeometrySurface.OuterLoop.CurveList); - private static void AssertGeometry(IEnumerable expectedCurves, IEnumerable actualCurves) + SoilLayer2D middleSoilLayer2D = soilLayer2Ds.Single(l => string.Equals(l.Name, middleLayerName)); + AssertSoilLayerProperties(middleLayer, middleSoilLayer2D); + AssertGeometry(new[] { - int nrOfExpectedCurves = expectedCurves.Count(); - Assert.That(actualCurves.Count(), Is.EqualTo(nrOfExpectedCurves)); + new GeometryCurve(new Point2D(5, -2.5), new Point2D(7.5, 0)), + new GeometryCurve(new Point2D(7.5, 0), new Point2D(10, 0)), + new GeometryCurve(new Point2D(10, 0), new Point2D(12.5, 0)), + new GeometryCurve(new Point2D(12.5, 0), new Point2D(15, -2.5)), + new GeometryCurve(new Point2D(15, -2.5), new Point2D(12.5, -2.5)), + new GeometryCurve(new Point2D(12.5, -2.5), new Point2D(10, -2.5)), + new GeometryCurve(new Point2D(10, -2.5), new Point2D(7.5, -2.5)), + new GeometryCurve(new Point2D(7.5, -2.5), new Point2D(5, -2.5)) + }, middleSoilLayer2D.GeometrySurface.OuterLoop.CurveList); - IEnumerable actualCurveString = actualCurves.Select(c => string.Format("Coordinate ({0}, {1}) --> ({2}, {3})", c.HeadPoint.X, c.HeadPoint.Z, c.EndPoint.X, c.EndPoint.Z)); + SoilLayer2D bottomSoilLayer2D = soilLayer2Ds.Single(l => string.Equals(l.Name, bottomLayerName)); + AssertSoilLayerProperties(bottomLayer, bottomSoilLayer2D); + AssertGeometry(new[] + { + new GeometryCurve(new Point2D(0, -2.5), new Point2D(5, -2.5)), + new GeometryCurve(new Point2D(5, -2.5), new Point2D(7.5, -2.5)), + new GeometryCurve(new Point2D(7.5, -2.5), new Point2D(10, -2.5)), + new GeometryCurve(new Point2D(10, -2.5), new Point2D(12.5, -2.5)), + new GeometryCurve(new Point2D(12.5, -2.5), new Point2D(15, -2.5)), + new GeometryCurve(new Point2D(15, -2.5), new Point2D(20, -2.5)), + new GeometryCurve(new Point2D(20, -2.5), new Point2D(20, -10)), + new GeometryCurve(new Point2D(20, -10), new Point2D(15, -10)), + new GeometryCurve(new Point2D(15, -10), new Point2D(12.5, -10)), + new GeometryCurve(new Point2D(12.5, -10), new Point2D(10, -10)), + new GeometryCurve(new Point2D(10, -10), new Point2D(7.5, -10)), + new GeometryCurve(new Point2D(7.5, -10), new Point2D(5, -10)), + new GeometryCurve(new Point2D(5, -10), new Point2D(0, -10)), + new GeometryCurve(new Point2D(0, -10), new Point2D(0, -2.5)) + }, bottomSoilLayer2D.GeometrySurface.OuterLoop.CurveList); + } - foreach (GeometryCurve expectedCurve in expectedCurves) - { - Assert.That(actualCurves.Any(c => c.LocationEquals(expectedCurve)), Is.True, - $"Expected curve ({expectedCurve.HeadPoint.X}, {expectedCurve.HeadPoint.Z}) --> ({expectedCurve.EndPoint.X}, {expectedCurve.EndPoint.Z}) not found. " + - $"Actual curves {string.Join(", ", actualCurveString)}"); - } - } + private static void AssertGeometry(IEnumerable expectedCurves, IEnumerable actualCurves) + { + int nrOfExpectedCurves = expectedCurves.Count(); + Assert.That(actualCurves.Count(), Is.EqualTo(nrOfExpectedCurves)); - private static void AssertSoilLayerProperties(SoilLayer1D expectedLayer, - SoilLayer2D actualSoilLayer) - { - Assert.That(actualSoilLayer.IsAquifer, Is.EqualTo(expectedLayer.IsAquifer)); - Assert.That(actualSoilLayer.WaterpressureInterpolationModel, Is.EqualTo(expectedLayer.WaterpressureInterpolationModel)); - Assert.That(actualSoilLayer.Soil, Is.SameAs(expectedLayer.Soil)); - } + IEnumerable actualCurveString = actualCurves.Select(c => string.Format("Coordinate ({0}, {1}) --> ({2}, {3})", c.HeadPoint.X, c.HeadPoint.Z, c.EndPoint.X, c.EndPoint.Z)); - private static void AssertDikeEmbankmentSoilLayerProperties(SoilSurfaceProfile expectedProfile, - SoilLayer2D actualSoilLayer) + foreach (GeometryCurve expectedCurve in expectedCurves) { - Assert.That(actualSoilLayer.IsAquifer, Is.False); - Assert.That(actualSoilLayer.WaterpressureInterpolationModel, Is.EqualTo(WaterpressureInterpolationModel.Hydrostatic)); - Assert.That(actualSoilLayer.Soil, Is.SameAs(expectedProfile.DikeEmbankmentMaterial)); + Assert.That(actualCurves.Any(c => c.LocationEquals(expectedCurve)), Is.True, + $"Expected curve ({expectedCurve.HeadPoint.X}, {expectedCurve.HeadPoint.Z}) --> ({expectedCurve.EndPoint.X}, {expectedCurve.EndPoint.Z}) not found. " + + $"Actual curves {string.Join(", ", actualCurveString)}"); } + } - private static SoilLayer1D CreateSoilLayer(double topLevel, string soilName) - { - var random = new Random(soilName.GetHashCode()); + private static void AssertSoilLayerProperties(SoilLayer1D expectedLayer, + SoilLayer2D actualSoilLayer) + { + Assert.That(actualSoilLayer.IsAquifer, Is.EqualTo(expectedLayer.IsAquifer)); + Assert.That(actualSoilLayer.WaterpressureInterpolationModel, Is.EqualTo(expectedLayer.WaterpressureInterpolationModel)); + Assert.That(actualSoilLayer.Soil, Is.SameAs(expectedLayer.Soil)); + } - Array values = Enum.GetValues(typeof(WaterpressureInterpolationModel)); - var model = (WaterpressureInterpolationModel) values.GetValue(random.Next(values.Length)); + private static void AssertDikeEmbankmentSoilLayerProperties(SoilSurfaceProfile expectedProfile, + SoilLayer2D actualSoilLayer) + { + Assert.That(actualSoilLayer.IsAquifer, Is.False); + Assert.That(actualSoilLayer.WaterpressureInterpolationModel, Is.EqualTo(WaterpressureInterpolationModel.Hydrostatic)); + Assert.That(actualSoilLayer.Soil, Is.SameAs(expectedProfile.DikeEmbankmentMaterial)); + } - return new SoilLayer1D - { - TopLevel = topLevel, - Soil = new Soil(soilName), - IsAquifer = Convert.ToBoolean(random.Next(0, 2)), - WaterpressureInterpolationModel = model - }; - } + private static SoilLayer1D CreateSoilLayer(double topLevel, string soilName) + { + var random = new Random(soilName.GetHashCode()); - private static SurfaceLine2 CreateSurfaceLine(IEnumerable coordinates) + Array values = Enum.GetValues(typeof(WaterpressureInterpolationModel)); + var model = (WaterpressureInterpolationModel) values.GetValue(random.Next(values.Length)); + + return new SoilLayer1D { - var surfaceLine = new SurfaceLine2(); - surfaceLine.Geometry.Points.AddRange(coordinates); - surfaceLine.Geometry.SyncCalcPoints(); + TopLevel = topLevel, + Soil = new Soil(soilName), + IsAquifer = Convert.ToBoolean(random.Next(0, 2)), + WaterpressureInterpolationModel = model + }; + } - return surfaceLine; - } + private static SurfaceLine2 CreateSurfaceLine(IEnumerable coordinates) + { + var surfaceLine = new SurfaceLine2(); + surfaceLine.Geometry.Points.AddRange(coordinates); + surfaceLine.Geometry.SyncCalcPoints(); + + return surfaceLine; } } \ No newline at end of file