Index: DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/Geotechnics/GeometryHelperTests.cs =================================================================== diff -u -r4866 -r4873 --- DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/Geotechnics/GeometryHelperTests.cs (.../GeometryHelperTests.cs) (revision 4866) +++ DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/Geotechnics/GeometryHelperTests.cs (.../GeometryHelperTests.cs) (revision 4873) @@ -19,6 +19,7 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; using Deltares.DamEngine.Data.Geometry; using Deltares.DamEngine.Data.Geotechnics; using Deltares.DamEngine.TestHelpers.Factories; @@ -29,6 +30,12 @@ [TestFixture] public class GeometryHelperTests { + // For debugging purposes + private const string visualizationFolder = @"D:\src\dam\DamTools\GeometryVisualizer\"; + // Use the following code to export the geometry to a file + // GeometryExporter.ExportToFile(soilProfile2D.Geometry, visualizationFolder + "Geometry.txt"); + // GeometryExporter.ExportToJsonFile(soilProfile2D.Geometry, visualizationFolder + "Geometry.json"); + const double cTolerance = 1e-6; [Test] @@ -45,15 +52,35 @@ } [Test] - public void GivenTwoLayerGeometryWhenExtendingRigthThenLeftBoundaryIsChanged() + public void GivenTwoLayerGeometryWhenExtendingLeftToTheRightThenExceptionIsThrown() { // Given SoilProfile2D soilProfile2D = FactoryForSoilProfiles.CreateSoilProfile2DWithTwoLayers(); + // When & Then + Assert.Throws(() => { GeometryHelper.ExtendGeometryLeft(soilProfile2D.Geometry, 2); }); + } + + [Test] + public void GivenTwoLayerGeometryWhenExtendingRightThenLeftBoundaryIsChanged() + { + // Given + SoilProfile2D soilProfile2D = FactoryForSoilProfiles.CreateSoilProfile2DWithTwoLayers(); + // When - GeometryHelper.ExtendGeometryRight(soilProfile2D.Geometry, 12); + GeometryHelper.ExtendGeometryRight(soilProfile2D.Geometry, 8); // Then Assert.That(soilProfile2D.Geometry.Right, Is.EqualTo(12).Within(cTolerance)); } + + [Test] + public void GivenTwoLayerGeometryWhenExtendingRightToTheLeftThenExpceptionIsThrown() + { + // Given + SoilProfile2D soilProfile2D = FactoryForSoilProfiles.CreateSoilProfile2DWithTwoLayers(); + + // When & Then + Assert.Throws(() => { GeometryHelper.ExtendGeometryRight(soilProfile2D.Geometry, 8); }); + } } \ No newline at end of file Index: DamEngine/trunk/src/Deltares.DamEngine.Data/Geometry/GeometryHelper.cs =================================================================== diff -u -r4866 -r4873 --- DamEngine/trunk/src/Deltares.DamEngine.Data/Geometry/GeometryHelper.cs (.../GeometryHelper.cs) (revision 4866) +++ DamEngine/trunk/src/Deltares.DamEngine.Data/Geometry/GeometryHelper.cs (.../GeometryHelper.cs) (revision 4873) @@ -34,6 +34,11 @@ /// The x position to move the boundary to. public static void ExtendGeometryLeft(GeometryData geometry, double toX) { + if (toX > geometry.Left) + { + throw new ArgumentException("The new left boundary should be smaller than the current left boundary."); + } + Point2D[] leftPoints = geometry.GetLeftPoints().OrderBy(x => x.Z).ToArray(); List leftCurves = geometry.GetLeftCurves(); Point2D prevPoint = null; @@ -72,6 +77,11 @@ /// The x position to move the boundary to. public static void ExtendGeometryRight(GeometryData geometry, double toX) { + if (toX < geometry.Right) + { + throw new ArgumentException("The new right boundary should be larger than the current right boundary."); + } + Point2D[] rightPoints = geometry.GetRightPoints().OrderBy(x => x.Z).ToArray(); List rightCurves = geometry.GetRightCurves(); Point2D prevPoint = null;