Index: DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Factories/FactoryForSurfaceLines.cs =================================================================== diff -u -r5001 -r5002 --- DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Factories/FactoryForSurfaceLines.cs (.../FactoryForSurfaceLines.cs) (revision 5001) +++ DamEngine/trunk/src/Deltares.DamEngine.TestHelpers/Factories/FactoryForSurfaceLines.cs (.../FactoryForSurfaceLines.cs) (revision 5002) @@ -813,4 +813,31 @@ surfaceLine.Geometry.SyncCalcPoints(); return surfaceLine; } + + /// + /// Creates a surface line, that contains a dike and is fully below SurfaceLineWithDikeAndDitch. + /// + /// surface line + public static SurfaceLine2 CreateSurfaceLineBelowSurfaceLineDikeAndDitch() + { + var surfaceLine = new SurfaceLine2 + { + Name = "BelowSurfaceLineWithDikeAndDitch", + Geometry = new GeometryPointString(), + CharacteristicPoints = + { + GeometryMustContainPoint = true + } + }; + + surfaceLine.EnsurePointOfType(0.0, -10.0, CharacteristicPointType.SurfaceLevelOutside); + surfaceLine.EnsurePointOfType(10.0, -10.0, CharacteristicPointType.DikeToeAtRiver); + surfaceLine.EnsurePointOfType(34.5, -5.0, CharacteristicPointType.DikeTopAtRiver); + surfaceLine.EnsurePointOfType(40.5, -5.0, CharacteristicPointType.DikeTopAtPolder); + surfaceLine.EnsurePointOfType(50.5, -10.0, CharacteristicPointType.DikeToeAtPolder); + surfaceLine.EnsurePointOfType(75.0, -10.0, CharacteristicPointType.SurfaceLevelInside); + + surfaceLine.Geometry.SyncCalcPoints(); + return surfaceLine; + } } \ No newline at end of file Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityCommonHelperTests.cs =================================================================== diff -u -r5001 -r5002 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityCommonHelperTests.cs (.../MacroStabilityCommonHelperTests.cs) (revision 5001) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/MacroStabilityCommonHelperTests.cs (.../MacroStabilityCommonHelperTests.cs) (revision 5002) @@ -201,7 +201,7 @@ } [Test, Ignore("Work in progress")] - public void GivenSoilGeometryProbabilityWithSoilProfile2DAndSurfaceLineFullyAboveSoilProfile2DWhenCombiningThenLayerIsAddedOnTopOfSoilProfile2D() + public void GivenSoilGeometryProbabilityWithSoilProfile2DAndSurfaceLineFullyAboveTopBoundarySoilProfile2DWhenCombiningThenLayerIsAddedOnTopOfSoilProfile2D() { SoilGeometryProbability soilGeometryProbability = CreateSoilGeometryProbabilityWithSoilProfile2DWithSurfaceLineDitchDike(); SurfaceLine2 surfaceLine = FactoryForSurfaceLines.CreateSurfaceLineAboveSurfaceLineDikeAndDitch(); @@ -217,12 +217,35 @@ Assert.That(soilGeometryProbability.SoilProfileType, Is.EqualTo(SoilProfileType.ProfileType2D)); Assert.That(geometry.Surfaces, Has.Count.EqualTo(2)); Assert.That(geometry.Left, Is.EqualTo(0.0).Within(cTolerance)); - Assert.That(geometry.Right, Is.EqualTo(80.0).Within(cTolerance)); + Assert.That(geometry.Right, Is.EqualTo(75.0).Within(cTolerance)); Assert.That(geometry.Bottom, Is.EqualTo(-20.0).Within(cTolerance)); Assert.That(geometry.MaxGeometryPointsZ, Is.EqualTo(10.0).Within(cTolerance)); }); } + [Test, Ignore("Work in progress")] + public void GivenSoilGeometryProbabilityWithSoilProfile2DAndSurfaceLineFullyBelowTopBoundarySoilProfile2DWhenCombiningThenMaterialAboveIsRemoved() + { + SoilGeometryProbability soilGeometryProbability = CreateSoilGeometryProbabilityWithSoilProfile2DWithSurfaceLineDitchDike(); + SurfaceLine2 surfaceLine = FactoryForSurfaceLines.CreateSurfaceLineBelowSurfaceLineDikeAndDitch(); + // Now combine the soilGeometryProbability with the surfaceLine which should result that the top part of the + // SoilProfile2D is removed (between top boundary of the SoilProfile2D and the surfaceLine) + MacroStabilityCommonHelper.CombineSoilProfileWithSurfaceLine(soilGeometryProbability, surfaceLine, new Soil()); + GeometryData geometry = soilGeometryProbability.SoilProfile2D.Geometry; + // For debugging purposes + // GeometryExporter.ExportToFile(geometry, visualizationFolder + "Geometry.txt"); + // GeometryExporter.ExportToJsonFile(geometry, visualizationFolder + "Geometry.json"); + Assert.Multiple(() => + { + Assert.That(soilGeometryProbability.SoilProfileType, Is.EqualTo(SoilProfileType.ProfileType2D)); + Assert.That(geometry.Surfaces, Has.Count.EqualTo(1)); + Assert.That(geometry.Left, Is.EqualTo(0.0).Within(cTolerance)); + Assert.That(geometry.Right, Is.EqualTo(75.0).Within(cTolerance)); + Assert.That(geometry.Bottom, Is.EqualTo(-20.0).Within(cTolerance)); + Assert.That(geometry.MaxGeometryPointsZ, Is.EqualTo(-5.0).Within(cTolerance)); + }); + } + private SoilGeometryProbability CreateSoilGeometryProbabilityWithSoilProfile2DWithSurfaceLineDitchDike() { SoilGeometryProbability soilGeometryProbability = FactoryForSoilGeometryProbabilities.CreateSoilGeometryProbabilityWithSoilProfile1D();