Index: DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/Geotechnics/GeometryHelperTests.cs =================================================================== diff -u -r5634 -r5637 --- DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/Geotechnics/GeometryHelperTests.cs (.../GeometryHelperTests.cs) (revision 5634) +++ DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/Geotechnics/GeometryHelperTests.cs (.../GeometryHelperTests.cs) (revision 5637) @@ -174,12 +174,9 @@ // At first there are 2 inner loops Assert.That(soilProfile2D.Geometry.InnerLoopsCount, Is.EqualTo(2)); }); - //GeometryExporter.ExportToFile(soilProfile2D.Geometry, GeometryExporter.VisualizationFolder + "GeometryBefore.txt"); // When GeometryHelper.CutGeometryLeft(soilProfile2D.Geometry, atX); - //GeometryExporter.ExportToFile(soilProfile2D.Geometry, GeometryExporter.VisualizationFolder + "GeometryAfter.txt"); - //GeometryExporter.ExportWithSurfaceLineToJsonFile(GeometryExporter.VisualizationFolder + - // GeometryExporter.ExportJasonFile, soilProfile2D.Geometry, null); + // Then GeometryBounds geometryBounds = soilProfile2D.Geometry.GetGeometryBounds(); Assert.Multiple(() => @@ -240,4 +237,52 @@ Assert.That(soilProfile2D.Geometry.InnerLoopsCount, Is.EqualTo(innerLoopsCount)); }); } + + [Test] + [TestCase(-45, 1, 4, 4, 0)] + [TestCase(-40, 1, 5, 5, 0)] + [TestCase(-30, 2, 7, 8, 0)] + [TestCase(-20, 2, 8, 9 , 0)] + [TestCase(-10, 2, 8, 9, 0)] + [TestCase(0, 2, 8, 9, 0)] + [TestCase(10, 3, 10, 12, 0)] + [TestCase(20, 3, 10, 12, 0)] + [TestCase(40, 3, 10, 12, 0)] + [TestCase(45, 3, 10, 11, 2)] + public void GivenInnerLoopLayerGeometryWithConnectedLoopsWhenCuttingRightThenLeftBoundaryIsChanged(double atX, int surfacesCount, int pointsCount, int curvesCount, int innerLoopsCount) + { + // Given + SoilProfile2D soilProfile2D = FactoryForSoilProfiles.CreateSoilProfile2DWithThreeLayersOfWhichTwoAreConnectedInnerLoops(); + GeometryBounds originalGeometryBounds = soilProfile2D.Geometry.GetGeometryBounds(); + Assert.Multiple(() => + { + Assert.That(originalGeometryBounds.Right, Is.EqualTo(50).Within(cTolerance)); + Assert.That(soilProfile2D.Geometry.Right, Is.EqualTo(50).Within(cTolerance)); + // At first there are 3 surfaces + Assert.That(soilProfile2D.Geometry.Surfaces, Has.Count.EqualTo(3)); + // At first there are 12 points + Assert.That(soilProfile2D.Geometry.Points, Has.Count.EqualTo(10)); + // At first there are 12 curves + Assert.That(soilProfile2D.Geometry.Curves, Has.Count.EqualTo(11)); + // At first there are 2 inner loops + Assert.That(soilProfile2D.Geometry.InnerLoopsCount, Is.EqualTo(2)); + }); + //GeometryExporter.ExportToFile(soilProfile2D.Geometry, GeometryExporter.VisualizationFolder + "GeometryBefore.txt"); + // When + GeometryHelper.CutGeometryRight(soilProfile2D.Geometry, atX); + //GeometryExporter.ExportToFile(soilProfile2D.Geometry, GeometryExporter.VisualizationFolder + "GeometryAfter.txt"); + GeometryExporter.ExportWithSurfaceLineToJsonFile(GeometryExporter.VisualizationFolder + + GeometryExporter.ExportJasonFile, soilProfile2D.Geometry, null); + // Then + GeometryBounds geometryBounds = soilProfile2D.Geometry.GetGeometryBounds(); + Assert.Multiple(() => + { + Assert.That(geometryBounds.Right, Is.EqualTo(atX).Within(cTolerance)); + Assert.That(soilProfile2D.Geometry.Right, Is.EqualTo(atX).Within(cTolerance)); + Assert.That(soilProfile2D.Geometry.Surfaces, Has.Count.EqualTo(surfacesCount)); + Assert.That(soilProfile2D.Geometry.Points, Has.Count.EqualTo(pointsCount)); + Assert.That(soilProfile2D.Geometry.Curves, Has.Count.EqualTo(curvesCount)); + Assert.That(soilProfile2D.Geometry.InnerLoopsCount, Is.EqualTo(innerLoopsCount)); + }); + } } \ No newline at end of file