Index: DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/FillDamFromXmlInputTests.cs =================================================================== diff -u -r4690 -r5090 --- DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/FillDamFromXmlInputTests.cs (.../FillDamFromXmlInputTests.cs) (revision 4690) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface.Tests/FillDamFromXmlInputTests.cs (.../FillDamFromXmlInputTests.cs) (revision 5090) @@ -22,12 +22,14 @@ using System.Collections.Generic; using Deltares.DamEngine.Data.Design; using Deltares.DamEngine.Data.General; +using Deltares.DamEngine.Data.Geotechnics; using Deltares.DamEngine.Io; using Deltares.DamEngine.Io.XmlInput; using Deltares.DamEngine.TestHelpers.Factories; using KellermanSoftware.CompareNetObjects; using NUnit.Framework; using Location = Deltares.DamEngine.Data.General.Location; +using SoilProfile2D = Deltares.DamEngine.Io.XmlInput.SoilProfile2D; namespace Deltares.DamEngine.Interface.Tests; @@ -140,6 +142,74 @@ CompareDamProjectData(actualDamProjectData, expectedDamProjectData); } + [Test] + public void GivenSoilLayer2DFromXml_WhenTransferredToDamObject_ThenOuterLoopIsClosed() + { + // Setup + var inputSoilProfile2D = new SoilProfile2D + { + Layers2D = new SoilProfile2DLayer2D[1] + }; + inputSoilProfile2D.Layers2D[0] = new SoilProfile2DLayer2D + { + Surface = new SoilProfile2DLayer2DSurface + { + OuterLoop = new SoilProfile2DLayer2DSurfaceOuterPoint[4] + } + }; + inputSoilProfile2D.Layers2D[0].Surface.OuterLoop[0] = new SoilProfile2DLayer2DSurfaceOuterPoint + { + X = 0, + Z = 0 + }; + inputSoilProfile2D.Layers2D[0].Surface.OuterLoop[1] = new SoilProfile2DLayer2DSurfaceOuterPoint + { + X = 10, + Z = 0 + }; + inputSoilProfile2D.Layers2D[0].Surface.OuterLoop[2] = new SoilProfile2DLayer2DSurfaceOuterPoint + { + X = 10, + Z = -5 + }; + inputSoilProfile2D.Layers2D[0].Surface.OuterLoop[3] = new SoilProfile2DLayer2DSurfaceOuterPoint + { + X = 0, + Z = -5 + }; + + // Call + var soilProfile2D = new Data.Geotechnics.SoilProfile2D(); + FillDamFromXmlInput.AddLayers2D(inputSoilProfile2D, soilProfile2D, new SoilList()); + + // Assert + Assert.Multiple(() => + { + Assert.That(soilProfile2D.Geometry.Surfaces, Has.Count.EqualTo(1)); + Assert.That(soilProfile2D.Geometry.Surfaces[0].OuterLoop.CurveList, Has.Count.EqualTo(4)); + + Assert.That(soilProfile2D.Geometry.Surfaces[0].OuterLoop.CurveList[0].HeadPoint.X, Is.EqualTo(0)); + Assert.That(soilProfile2D.Geometry.Surfaces[0].OuterLoop.CurveList[0].HeadPoint.Z, Is.EqualTo(0)); + Assert.That(soilProfile2D.Geometry.Surfaces[0].OuterLoop.CurveList[0].EndPoint.X, Is.EqualTo(10)); + Assert.That(soilProfile2D.Geometry.Surfaces[0].OuterLoop.CurveList[0].EndPoint.Z, Is.EqualTo(0)); + + Assert.That(soilProfile2D.Geometry.Surfaces[0].OuterLoop.CurveList[1].HeadPoint.X, Is.EqualTo(10)); + Assert.That(soilProfile2D.Geometry.Surfaces[0].OuterLoop.CurveList[1].HeadPoint.Z, Is.EqualTo(0)); + Assert.That(soilProfile2D.Geometry.Surfaces[0].OuterLoop.CurveList[1].EndPoint.X, Is.EqualTo(10)); + Assert.That(soilProfile2D.Geometry.Surfaces[0].OuterLoop.CurveList[1].EndPoint.Z, Is.EqualTo(-5)); + + Assert.That(soilProfile2D.Geometry.Surfaces[0].OuterLoop.CurveList[2].HeadPoint.X, Is.EqualTo(10)); + Assert.That(soilProfile2D.Geometry.Surfaces[0].OuterLoop.CurveList[2].HeadPoint.Z, Is.EqualTo(-5)); + Assert.That(soilProfile2D.Geometry.Surfaces[0].OuterLoop.CurveList[2].EndPoint.X, Is.EqualTo(0)); + Assert.That(soilProfile2D.Geometry.Surfaces[0].OuterLoop.CurveList[2].EndPoint.Z, Is.EqualTo(-5)); + + Assert.That(soilProfile2D.Geometry.Surfaces[0].OuterLoop.CurveList[3].HeadPoint.X, Is.EqualTo(0)); + Assert.That(soilProfile2D.Geometry.Surfaces[0].OuterLoop.CurveList[3].HeadPoint.Z, Is.EqualTo(-5)); + Assert.That(soilProfile2D.Geometry.Surfaces[0].OuterLoop.CurveList[3].EndPoint.X, Is.EqualTo(0)); + Assert.That(soilProfile2D.Geometry.Surfaces[0].OuterLoop.CurveList[3].EndPoint.Z, Is.EqualTo(0)); + }); + } + private void CompareDamProjectData(DamProjectData actual, DamProjectData expected) { Assert.That(DamProjectCalculationSpecification.SelectedAnalysisType, Is.EqualTo(FactoryForDamProjectData.ExpectedAnalysisType)); Index: DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs =================================================================== diff -u -r5013 -r5090 --- DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs (.../FillDamFromXmlInput.cs) (revision 5013) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface/FillDamFromXmlInput.cs (.../FillDamFromXmlInput.cs) (revision 5090) @@ -831,7 +831,7 @@ } } - private static void AddLayers2D(Io.XmlInput.SoilProfile2D inputSoilProfile2D, SoilProfile2D soilProfile2D, SoilList soils) + internal static void AddLayers2D(Io.XmlInput.SoilProfile2D inputSoilProfile2D, SoilProfile2D soilProfile2D, SoilList soils) { if (inputSoilProfile2D != null) { Index: DamEngine/trunk/src/Deltares.DamEngine.Interface/Deltares.DamEngine.Interface.csproj =================================================================== diff -u -r4796 -r5090 --- DamEngine/trunk/src/Deltares.DamEngine.Interface/Deltares.DamEngine.Interface.csproj (.../Deltares.DamEngine.Interface.csproj) (revision 4796) +++ DamEngine/trunk/src/Deltares.DamEngine.Interface/Deltares.DamEngine.Interface.csproj (.../Deltares.DamEngine.Interface.csproj) (revision 5090) @@ -4,6 +4,11 @@ + + <_Parameter1>Deltares.DamEngine.Interface.Tests + + +