Index: DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/Geotechnics/SoilSurfaceProfileTests.cs
===================================================================
diff -u -r4759 -r4884
--- DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/Geotechnics/SoilSurfaceProfileTests.cs (.../SoilSurfaceProfileTests.cs) (revision 4759)
+++ DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/Geotechnics/SoilSurfaceProfileTests.cs (.../SoilSurfaceProfileTests.cs) (revision 4884)
@@ -24,13 +24,67 @@
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;
[TestFixture]
public class SoilSurfaceProfileTests
{
+ // For debugging purposes
+ private const string visualizationFolder = @"D:\src\dam\DamTools\GeometryVisualizer\";
+
+ [Test, Ignore("Work in progress")]
+ public void GivenProfile1DWithOneLayerAndSurfaceLineWhenConverToProfile2DThenSoilProfile2DIsCreated()
+ {
+ // Given Profile1D with one layer and surface line
+ const string layerName = "Layer";
+ const string topLayerName = "TopLayer";
+ SoilLayer1D soilLayer = FactoryForSoilProfiles.CreateSoilLayer(-5, layerName);
+ var profile = new SoilProfile1D
+ {
+ BottomLevel = -10
+ };
+ profile.Layers.Add(soilLayer);
+
+ SurfaceLine2 surfaceLine = FactoryForSoilProfiles.CreateSurfaceLine(new[]
+ {
+ new GeometryPoint(0, 0),
+ new GeometryPoint(5, 10),
+ new GeometryPoint(10, 10)
+ });
+
+ // When Convert to Profile2D
+ var soilSurfaceProfile = new SoilSurfaceProfile
+ {
+ SoilProfile = profile,
+ SurfaceLine2 = surfaceLine,
+ DikeEmbankmentMaterial = new Soil
+ {
+ Name = topLayerName
+ }
+ };
+
+ // Then SoilProfile2D is created
+ SoilProfile2D soilProfile2D = soilSurfaceProfile.ConvertToSoilProfile2D();
+ // For debugging purposes
+ // GeometryExporter.ExportToFile(soilProfile2D.Geometry, visualizationFolder + "Geometry.txt");
+ // GeometryExporter.ExportToJsonFile(soilProfile2D.Geometry, visualizationFolder + "Geometry.json");
+ Assert.Multiple(() =>
+ {
+ Assert.That(soilProfile2D.Geometry.Points.Count, Is.EqualTo(9));
+ Assert.That(soilProfile2D.Geometry.Curves.Count, Is.EqualTo(10));
+ Assert.That(soilProfile2D.Geometry.Surfaces.Count, Is.EqualTo(2));
+ Assert.That(soilProfile2D.Geometry.Surfaces[0].OuterLoop.CurveList.Count, Is.EqualTo(6));
+ Assert.That(soilProfile2D.Geometry.Surfaces[1].OuterLoop.CurveList.Count, Is.EqualTo(6));
+ Assert.That(soilProfile2D.Geometry.Surfaces[0].OuterLoop.IsContinuous(), Is.True);
+ Assert.That(soilProfile2D.Geometry.Surfaces[1].OuterLoop.IsContinuous(), Is.True);
+ Assert.That(soilProfile2D.Geometry.Surfaces[0].OuterLoop.IsClockWise(), Is.True);
+ Assert.That(soilProfile2D.Geometry.Surfaces[1].OuterLoop.IsClockWise(), Is.True);
+ });
+ }
+
[Test]
public void ConvertToSoilProfile2D_WithSurfaceLineFullyAboveSoilLayers_ReturnsExpectedSoilProfile2D()
{
Index: DamEngine/trunk/src/Deltares.DamEngine.Data/Geometry/GeometryLoop.cs
===================================================================
diff -u -r4540 -r4884
--- DamEngine/trunk/src/Deltares.DamEngine.Data/Geometry/GeometryLoop.cs (.../GeometryLoop.cs) (revision 4540)
+++ DamEngine/trunk/src/Deltares.DamEngine.Data/Geometry/GeometryLoop.cs (.../GeometryLoop.cs) (revision 4884)
@@ -137,6 +137,22 @@
}
///
+ /// Determines whether this loop is continuous (i.e. the end point of a curve is the start point of the next curve).
+ ///
+ /// True if continuous, false if not
+ public bool IsContinuous()
+ {
+ for (int i = 0; i < CurveList.Count - 1; i++)
+ {
+ if (CurveList[i].EndPoint != CurveList[i + 1].HeadPoint)
+ {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ ///
/// See if a point lies in a closed surface
///
///