Index: DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/Geotechnics/SoilProfile2DSurfaceLineHelperTests.cs =================================================================== diff -u -r5069 -r5101 --- DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/Geotechnics/SoilProfile2DSurfaceLineHelperTests.cs (.../SoilProfile2DSurfaceLineHelperTests.cs) (revision 5069) +++ DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/Geotechnics/SoilProfile2DSurfaceLineHelperTests.cs (.../SoilProfile2DSurfaceLineHelperTests.cs) (revision 5101) @@ -24,6 +24,7 @@ using Deltares.DamEngine.Data.Geometry; using Deltares.DamEngine.Data.Geotechnics; using Deltares.DamEngine.TestHelpers.Factories; +using Deltares.DamEngine.TestHelpers.Geometry; using NUnit.Framework; namespace Deltares.DamEngine.Data.Tests.Geotechnics; @@ -32,7 +33,12 @@ public class SoilProfile2DSurfaceLineHelperTests { // For debugging purposes - private const string visualizationFolder = @"D:\src\dam\DamTools\GeometryVisualizer\"; + // For debugging purposes + //private const string visualizationFolder = @"C:\Dam\DamTools\GeometryVisualizer\"; //#John + //private const string visualizationFolder = @"D:\src\dam\DamTools\GeometryVisualizer\"; //#Tom + // 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"); private static IEnumerable SurfaceLinesTestCases { @@ -47,7 +53,8 @@ new GeometryPoint(5, 10), new GeometryPoint(10, 10) }), - SurfaceCount = 3 + SurfaceCount = 3, + TestNumber = 1 }).SetName("Surface is same as original surfaceline of soil profile"); yield return new TestCaseData( new TestCaseSurfaceLine @@ -58,7 +65,8 @@ new GeometryPoint(5, 11), new GeometryPoint(10, 11) }), - SurfaceCount = 3 + SurfaceCount = 4, + TestNumber = 2 }).SetName("Surface is completely above original surfaceline of soil profile"); yield return new TestCaseData( new TestCaseSurfaceLine @@ -69,7 +77,8 @@ new GeometryPoint(5, 9), new GeometryPoint(10, 9) }), - SurfaceCount = 3 + SurfaceCount = 3, + TestNumber = 3 }).SetName("Surface is completely below original surfaceline of soil profile"); yield return new TestCaseData( new TestCaseSurfaceLine @@ -80,7 +89,8 @@ new GeometryPoint(5, 9), new GeometryPoint(10, 11) }), - SurfaceCount = 3 + SurfaceCount = 5, + TestNumber = 4 }).SetName("Surface is partially above and below original surfaceline of soil profile"); } } @@ -304,18 +314,23 @@ } [Test, TestCaseSource(nameof(SurfaceLinesTestCases))] - [Ignore("Work in progress")] + //[Ignore("Work in progress")] public void GivenSoilProfile2DWhenCombiningWithSurfaceLineThenCorrectNewSoilProfile2DIsCreated(TestCaseSurfaceLine testCaseSurfaceLine) { // Given SoilProfile2D soilProfile2D = FactoryForSoilProfiles.CreateSoilProfile2DWithThreeLayers(); + //GeometryExporter.ExportToJsonFile(soilProfile2D.Geometry, visualizationFolder + "Geometry.json"); + //GeometryExporter.ExportToFile(soilProfile2D.Geometry, visualizationFolder + "Geometry.txt"); var defaultSoil = new Soil { Name = "dikemat" }; SoilProfile2D newSoilProfile2D = SoilProfile2DSurfaceLineHelper.CombineSurfaceLineWithSoilProfile2D( testCaseSurfaceLine.SurfaceLine.Geometry, soilProfile2D, defaultSoil, 0); Assert.That(newSoilProfile2D, Is.Not.Null); + // For debugging purposes + //GeometryExporter.ExportToFile(newSoilProfile2D.Geometry, visualizationFolder + "Geometry" + testCaseSurfaceLine.TestNumber + ".txt"); + //GeometryExporter.ExportToJsonFile(newSoilProfile2D.Geometry, visualizationFolder + "Geometry" + testCaseSurfaceLine.TestNumber + ".json"); Assert.That(newSoilProfile2D.Surfaces, Has.Count.EqualTo(testCaseSurfaceLine.SurfaceCount)); } @@ -325,6 +340,8 @@ { // Given SoilProfile2D soilProfile2D = FactoryForSoilProfiles.CreateSoilProfile2DWithSixSurfacesFormingTwoLayers(); + //GeometryExporter.ExportToJsonFile(soilProfile2D.Geometry, visualizationFolder + "Geometry.json"); + //GeometryExporter.ExportToFile(soilProfile2D.Geometry, visualizationFolder + "Geometry.txt"); var defaultSoil = new Soil { Name = "Filling material" @@ -375,6 +392,8 @@ { public SurfaceLine2 SurfaceLine { get; set; } public int SurfaceCount { get; set; } + + public int TestNumber { get; set; } } /// Index: DamEngine/trunk/src/Deltares.DamEngine.Data/Geotechnics/SoilProfile2DSurfaceLineHelper.cs =================================================================== diff -u -r5069 -r5101 --- DamEngine/trunk/src/Deltares.DamEngine.Data/Geotechnics/SoilProfile2DSurfaceLineHelper.cs (.../SoilProfile2DSurfaceLineHelper.cs) (revision 5069) +++ DamEngine/trunk/src/Deltares.DamEngine.Data/Geotechnics/SoilProfile2DSurfaceLineHelper.cs (.../SoilProfile2DSurfaceLineHelper.cs) (revision 5101) @@ -168,7 +168,7 @@ result.Geometry = clonedProfile2.Geometry; if (result.Geometry.Curves == null || result.Geometry.Curves.Count < 3) return; - result.Geometry.DeleteLooseCurves(); + //result.Geometry.DeleteLooseCurves(); result.Geometry.Rebox(); if (surfaceLine == null || surfaceLine.Points.Count <= 1) return; @@ -177,6 +177,8 @@ result.Geometry.NewlyEffectedPoints.AddRange((IEnumerable) result.Geometry.Points); result.Geometry.NewlyEffectedCurves.AddRange((IEnumerable) result.Geometry.Curves); result.Geometry.Surfaces.Clear(); + result.Geometry.Curves.Clear(); + result.Geometry.Points.Clear(); result.Geometry.RegenerateGeometry(); result.Geometry.DeleteLoosePoints(); result.Geometry.DeleteLooseCurves(); Index: DamEngine/trunk/src/Deltares.DamEngine.Data/Geometry/GeometryData.cs =================================================================== diff -u -r5076 -r5101 --- DamEngine/trunk/src/Deltares.DamEngine.Data/Geometry/GeometryData.cs (.../GeometryData.cs) (revision 5076) +++ DamEngine/trunk/src/Deltares.DamEngine.Data/Geometry/GeometryData.cs (.../GeometryData.cs) (revision 5101) @@ -155,6 +155,10 @@ public bool DeleteLooseCurves() { SynchronizeLoops(); + if (geometryGenerator == null) + { + geometryGenerator = new GeometryGenerator(this); + } geometryGenerator.SetupCurveSurfaceAssociations(); var regenerateGeometry = false; var curvesToDelete = new List(); @@ -1328,8 +1332,9 @@ clonedGeometryData.Surfaces.Add(surface.Clone()); } - // for the clone, use the same geometry generator for now. Should be a new one but as the cloning is not correct, that will make some tests fail - clonedGeometryData.geometryGenerator = geometryGenerator;//new GeometryGenerator(this); + // For the clone, set use geometry generator to null. + // This will ensure that a new generator for this geometry using this geometry will be used. + clonedGeometryData.geometryGenerator = null; return clonedGeometryData; } } \ No newline at end of file