Index: DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/PlLinesToWaternetConverterTests.cs =================================================================== diff -u -r2977 -r2978 --- DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/PlLinesToWaternetConverterTests.cs (.../PlLinesToWaternetConverterTests.cs) (revision 2977) +++ DamEngine/trunk/src/Deltares.DamEngine.Calculators.Tests/KernelWrappers/MacroStabilityCommon/PlLinesToWaternetConverterTests.cs (.../PlLinesToWaternetConverterTests.cs) (revision 2978) @@ -258,7 +258,7 @@ } [Test] - public void ConvertPlLineToWaternet_ValidPLLinesAndSoilProfile2DWithContinuousInBetweenAquiferLayer_ReturnsExpectedWaternet() + public void ConvertPlLineToWaternet_ValidPLLinesAndSoilProfile2DWithContinuousInBetweenAquiferLayerConsistOfTwoParts_ReturnsExpectedWaternet() { // Setup var random = new Random(21); @@ -272,6 +272,115 @@ var bottomLeftUpperLayer = new Point2D(leftCoordinate, -10); SoilLayer2D soilLayer = CreateSoilLayer2D(topLeftUpperLayer, topRightUpperLayer, bottomRightUpperLayer, bottomLeftUpperLayer); + var topRightInBetweenAquiferLayerLeft = new Point2D(rightCoordinate / 2, -10); + var bottomRightInBetweenAquiferLayerLeft = new Point2D(rightCoordinate / 2, -20); + var bottomLeftInBetweenAquiferLayerLeft = new Point2D(leftCoordinate, -20); + SoilLayer2D soilLayerAquiferInBetweenLeft = CreateSoilLayer2D(bottomLeftUpperLayer, topRightInBetweenAquiferLayerLeft, bottomRightInBetweenAquiferLayerLeft, bottomLeftInBetweenAquiferLayerLeft); + soilLayerAquiferInBetweenLeft.IsAquifer = true; + + var topRightInBetweenAquiferLayerRight = new Point2D(rightCoordinate, -10); + var bottomRightInBetweenAquiferLayerRight = new Point2D(rightCoordinate, -20); + SoilLayer2D soilLayerAquiferInBetweenRight = CreateSoilLayer2D(topRightInBetweenAquiferLayerLeft, topRightInBetweenAquiferLayerRight, bottomRightInBetweenAquiferLayerRight, bottomLeftInBetweenAquiferLayerLeft); + soilLayerAquiferInBetweenRight.IsAquifer = true; + + var topRightInBetweenLayer = new Point2D(rightCoordinate, -20); + var bottomRightInBetweenLayer = new Point2D(rightCoordinate, -25); + var bottomLeftInBetweenLayer = new Point2D(leftCoordinate, -25); + SoilLayer2D soilLayerInBetween = CreateSoilLayer2D(bottomLeftInBetweenAquiferLayerLeft, topRightInBetweenLayer, bottomRightInBetweenLayer, bottomLeftInBetweenLayer); + + var topRightBottomAquiferLayer = new Point2D(rightCoordinate, -25); + var bottomRightBottomAquiferLayer = new Point2D(rightCoordinate, -30); + var bottomLeftBottomAquiferLayer = new Point2D(leftCoordinate, -30); + SoilLayer2D soilLayerAquiferBottom = CreateSoilLayer2D(bottomLeftInBetweenLayer, topRightBottomAquiferLayer, bottomRightBottomAquiferLayer, bottomLeftBottomAquiferLayer); + soilLayerAquiferBottom.IsAquifer = true; + + var soilProfile = new SoilProfile2D + { + Geometry = new GeometryData + { + Left = leftCoordinate, + Right = rightCoordinate, + Bottom = -20 + } + }; + soilProfile.Surfaces.Add(soilLayer); + soilProfile.Surfaces.Add(soilLayerAquiferInBetweenLeft); + soilProfile.Surfaces.Add(soilLayerAquiferInBetweenRight); + soilProfile.Surfaces.Add(soilLayerInBetween); + soilProfile.Surfaces.Add(soilLayerAquiferBottom); + + var plLines = new PlLines(); + PlLine plLine = plLines.Lines[PlLineType.Pl1]; + plLine.Points.Add(new PlLinePoint(leftCoordinate, -5)); + plLine.Points.Add(new PlLinePoint(rightCoordinate, -5)); + + plLine = plLines.Lines[PlLineType.Pl2]; + plLine.Points.Add(new PlLinePoint(leftCoordinate, -6)); + plLine.Points.Add(new PlLinePoint(rightCoordinate, -6)); + + plLine = plLines.Lines[PlLineType.Pl3]; + plLine.Points.Add(new PlLinePoint(leftCoordinate, -7)); + plLine.Points.Add(new PlLinePoint(rightCoordinate, -7)); + + plLine = plLines.Lines[PlLineType.Pl4]; + plLine.Points.Add(new PlLinePoint(leftCoordinate, -8)); + plLine.Points.Add(new PlLinePoint(rightCoordinate, -8)); + + // Call + Waternet waternet = PlLinesToWaternetConverter.ConvertPlLineToWaternet(plLines, soilProfile, penetrationLength); + + // Assert + AssertGeometry(plLines.Lines[PlLineType.Pl1].Points, waternet.PhreaticLine.Points); + + Assert.AreEqual(3, waternet.HeadLineList.Count); + AssertGeometry(plLines.Lines[PlLineType.Pl2].Points, waternet.HeadLineList[0].Points); + AssertGeometry(plLines.Lines[PlLineType.Pl3].Points, waternet.HeadLineList[1].Points); + AssertGeometry(plLines.Lines[PlLineType.Pl4].Points, waternet.HeadLineList[2].Points); + + Assert.AreEqual(3, waternet.WaternetLineList.Count); + + var expectedBottomAquiferCoordinates = new [] + { + new GeometryPoint(leftCoordinate, -25), + new GeometryPoint(rightCoordinate / 2, -25), + new GeometryPoint(rightCoordinate, -25), + }; + + WaternetLine pl2WaternetLine = waternet.WaternetLineList[0]; + Assert.AreSame(waternet.HeadLineList[0], pl2WaternetLine.HeadLine); + var offSetAquiferCoordinates = expectedBottomAquiferCoordinates.Select(aquiferCoordinate => new GeometryPoint(aquiferCoordinate.X, aquiferCoordinate.Z + penetrationLength)) + .ToArray(); + AssertGeometry(offSetAquiferCoordinates, pl2WaternetLine.Points); + + WaternetLine pl3WaternetLine = waternet.WaternetLineList[1]; + Assert.AreSame(waternet.HeadLineList[1], pl3WaternetLine.HeadLine); + AssertGeometry(expectedBottomAquiferCoordinates, pl3WaternetLine.Points); + + WaternetLine pl4WaternetLine = waternet.WaternetLineList[2]; + Assert.AreSame(waternet.HeadLineList[2], pl4WaternetLine.HeadLine); + AssertGeometry(new[] + { + new GeometryPoint(leftCoordinate, -10), + new GeometryPoint(rightCoordinate / 2, -10), + new GeometryPoint(rightCoordinate, -10) + }, pl4WaternetLine.Points); + } + + [Test] + public void ConvertPlLineToWaternet_ValidPLLinesAndSoilProfile2DWithContinuousInBetweenAquiferLayerConsistOfOnePart_ReturnsExpectedWaternet() + { + // Setup + var random = new Random(21); + double leftCoordinate = random.NextDouble(); + double rightCoordinate = leftCoordinate + 1; + double penetrationLength = random.NextDouble(); + + var topLeftUpperLayer = new Point2D(leftCoordinate, 0); + var topRightUpperLayer = new Point2D(rightCoordinate, 0); + var bottomRightUpperLayer = new Point2D(rightCoordinate, -10); + var bottomLeftUpperLayer = new Point2D(leftCoordinate, -10); + SoilLayer2D soilLayer = CreateSoilLayer2D(topLeftUpperLayer, topRightUpperLayer, bottomRightUpperLayer, bottomLeftUpperLayer); + var topRightInBetweenAquiferLayer = new Point2D(rightCoordinate, -10); var bottomRightInBetweenAquiferLayer = new Point2D(rightCoordinate, -20); var bottomLeftInBetweenAquiferLayer = new Point2D(leftCoordinate, -20); @@ -333,10 +442,10 @@ Assert.AreEqual(3, waternet.WaternetLineList.Count); - var expectedBottomAquiferCoordinates = new [] + var expectedBottomAquiferCoordinates = new[] { - new GeometryPoint(leftCoordinate, -25), - new GeometryPoint(rightCoordinate, -25) + new GeometryPoint(leftCoordinate, -25), + new GeometryPoint(rightCoordinate, -25) }; WaternetLine pl2WaternetLine = waternet.WaternetLineList[0]; @@ -353,12 +462,268 @@ Assert.AreSame(waternet.HeadLineList[2], pl4WaternetLine.HeadLine); AssertGeometry(new[] { - new GeometryPoint(leftCoordinate, -10), + new GeometryPoint(leftCoordinate, -10), new GeometryPoint(rightCoordinate, -10) }, pl4WaternetLine.Points); } [Test] + public void ConvertPlLineToWaternet_ValidPLLinesAndSoilProfile2DWithContinuousInBetweenAquiferLayerRightLayerTopLevelInRangeLeftLayer_ReturnsExpectedWaternet() + { + // Setup + var random = new Random(21); + double leftCoordinate = random.NextDouble(); + double rightCoordinate = leftCoordinate + 1; + double penetrationLength = random.NextDouble(); + + var topLeftUpperLayer = new Point2D(leftCoordinate, 0); + var topRightUpperLayer = new Point2D(rightCoordinate, 0); + var bottomRightUpperLayer = new Point2D(rightCoordinate, -10); + var bottomLeftUpperLayer = new Point2D(leftCoordinate, -10); + SoilLayer2D soilLayer = CreateSoilLayer2D(topLeftUpperLayer, topRightUpperLayer, bottomRightUpperLayer, bottomLeftUpperLayer); + + var topRightInBetweenAquiferLayerLeft = new Point2D(rightCoordinate / 2, -10); + var bottomRightInBetweenAquiferLayerLeft = new Point2D(rightCoordinate / 2, -20); + var bottomLeftInBetweenAquiferLayerLeft = new Point2D(leftCoordinate, -20); + SoilLayer2D soilLayerAquiferInBetweenLeft = CreateSoilLayer2D(bottomLeftUpperLayer, topRightInBetweenAquiferLayerLeft, bottomRightInBetweenAquiferLayerLeft, bottomLeftInBetweenAquiferLayerLeft); + soilLayerAquiferInBetweenLeft.IsAquifer = true; + + // Add a layer to fill the gap between the right aquiferlayer and the upper layer + var bottomRightGapLayer = new Point2D(rightCoordinate, -15); + var bottomLeftGapLayer = new Point2D(rightCoordinate / 2, -15); + SoilLayer2D soilLayerGap = CreateSoilLayer2D(topRightInBetweenAquiferLayerLeft, bottomRightUpperLayer, bottomRightGapLayer, bottomLeftGapLayer); + + var bottomRightInBetweenAquiferLayerRight = new Point2D(rightCoordinate, -21); + var bottomLeftInBetweenAquiferLayerRight = new Point2D(rightCoordinate / 2, -21); + SoilLayer2D soilLayerAquiferInBetweenRight = CreateSoilLayer2D(bottomLeftGapLayer, bottomRightGapLayer, bottomRightInBetweenAquiferLayerRight, bottomLeftInBetweenAquiferLayerRight); + soilLayerAquiferInBetweenRight.IsAquifer = true; + + var bottomRightInBetweenLayer = new Point2D(rightCoordinate, -25); + var bottomLeftInBetweenLayer = new Point2D(leftCoordinate, -25); + var soilLayerInBetween = new SoilLayer2D + { + GeometrySurface = new GeometrySurface + { + OuterLoop = new GeometryLoop + { + CurveList = + { + new GeometryCurve(bottomLeftInBetweenAquiferLayerLeft, bottomRightInBetweenAquiferLayerLeft), + new GeometryCurve(bottomRightInBetweenAquiferLayerLeft, bottomLeftInBetweenAquiferLayerRight), + new GeometryCurve(bottomLeftInBetweenAquiferLayerRight, bottomRightInBetweenAquiferLayerRight), + new GeometryCurve(bottomRightInBetweenAquiferLayerRight, bottomRightInBetweenLayer), + new GeometryCurve(bottomRightInBetweenLayer, bottomLeftInBetweenLayer) + } + } + } + }; + + var topRightBottomAquiferLayer = new Point2D(rightCoordinate, -25); + var bottomRightBottomAquiferLayer = new Point2D(rightCoordinate, -30); + var bottomLeftBottomAquiferLayer = new Point2D(leftCoordinate, -30); + SoilLayer2D soilLayerAquiferBottom = CreateSoilLayer2D(bottomLeftInBetweenLayer, topRightBottomAquiferLayer, bottomRightBottomAquiferLayer, bottomLeftBottomAquiferLayer); + soilLayerAquiferBottom.IsAquifer = true; + + var soilProfile = new SoilProfile2D + { + Geometry = new GeometryData + { + Left = leftCoordinate, + Right = rightCoordinate, + Bottom = -20 + } + }; + soilProfile.Surfaces.Add(soilLayer); + soilProfile.Surfaces.Add(soilLayerAquiferInBetweenLeft); + soilProfile.Surfaces.Add(soilLayerGap); + soilProfile.Surfaces.Add(soilLayerAquiferInBetweenRight); + soilProfile.Surfaces.Add(soilLayerInBetween); + soilProfile.Surfaces.Add(soilLayerAquiferBottom); + + var plLines = new PlLines(); + PlLine plLine = plLines.Lines[PlLineType.Pl1]; + plLine.Points.Add(new PlLinePoint(leftCoordinate, -5)); + plLine.Points.Add(new PlLinePoint(rightCoordinate, -5)); + + plLine = plLines.Lines[PlLineType.Pl2]; + plLine.Points.Add(new PlLinePoint(leftCoordinate, -6)); + plLine.Points.Add(new PlLinePoint(rightCoordinate, -6)); + + plLine = plLines.Lines[PlLineType.Pl3]; + plLine.Points.Add(new PlLinePoint(leftCoordinate, -7)); + plLine.Points.Add(new PlLinePoint(rightCoordinate, -7)); + + plLine = plLines.Lines[PlLineType.Pl4]; + plLine.Points.Add(new PlLinePoint(leftCoordinate, -8)); + plLine.Points.Add(new PlLinePoint(rightCoordinate, -8)); + + // Call + Waternet waternet = PlLinesToWaternetConverter.ConvertPlLineToWaternet(plLines, soilProfile, penetrationLength); + + // Assert + AssertGeometry(plLines.Lines[PlLineType.Pl1].Points, waternet.PhreaticLine.Points); + + Assert.AreEqual(3, waternet.HeadLineList.Count); + AssertGeometry(plLines.Lines[PlLineType.Pl2].Points, waternet.HeadLineList[0].Points); + AssertGeometry(plLines.Lines[PlLineType.Pl3].Points, waternet.HeadLineList[1].Points); + AssertGeometry(plLines.Lines[PlLineType.Pl4].Points, waternet.HeadLineList[2].Points); + + Assert.AreEqual(3, waternet.WaternetLineList.Count); + + var expectedBottomAquiferCoordinates = new[] + { + new GeometryPoint(leftCoordinate, -25), + new GeometryPoint(rightCoordinate / 2, -25), + new GeometryPoint(rightCoordinate, -25) + }; + + WaternetLine pl2WaternetLine = waternet.WaternetLineList[0]; + Assert.AreSame(waternet.HeadLineList[0], pl2WaternetLine.HeadLine); + var offSetAquiferCoordinates = expectedBottomAquiferCoordinates.Select(aquiferCoordinate => new GeometryPoint(aquiferCoordinate.X, aquiferCoordinate.Z + penetrationLength)) + .ToArray(); + AssertGeometry(offSetAquiferCoordinates, pl2WaternetLine.Points); + + WaternetLine pl3WaternetLine = waternet.WaternetLineList[1]; + Assert.AreSame(waternet.HeadLineList[1], pl3WaternetLine.HeadLine); + AssertGeometry(expectedBottomAquiferCoordinates, pl3WaternetLine.Points); + + WaternetLine pl4WaternetLine = waternet.WaternetLineList[2]; + Assert.AreSame(waternet.HeadLineList[2], pl4WaternetLine.HeadLine); + AssertGeometry(new[] + { + new GeometryPoint(leftCoordinate, -10), + new GeometryPoint(rightCoordinate / 2, -10), + new GeometryPoint(rightCoordinate, -15) + }, pl4WaternetLine.Points); + } + + [Test] + public void ConvertPlLineToWaternet_ValidPLLinesAndSoilProfile2DWithContinuousInBetweenAquiferLayerRightLayerBottomLevelInRangeLeftLayer_ReturnsExpectedWaternet() + { + // Setup + var random = new Random(21); + double leftCoordinate = random.NextDouble(); + double rightCoordinate = leftCoordinate + 1; + double penetrationLength = random.NextDouble(); + + var topLeftUpperLayer = new Point2D(leftCoordinate, 0); + var topRightUpperLayer = new Point2D(rightCoordinate, 0); + var bottomRightUpperLayer = new Point2D(rightCoordinate, -5); + var bottomIntermediateUpperUpperLayer = new Point2D(rightCoordinate / 2, -5); + var bottomIntermediateLowerUpperLayer = new Point2D(rightCoordinate / 2, -10); + var bottomLeftUpperLayer = new Point2D(leftCoordinate, -10); + var soilLayer = new SoilLayer2D + { + GeometrySurface = new GeometrySurface + { + OuterLoop = new GeometryLoop + { + CurveList = + { + new GeometryCurve(topLeftUpperLayer, topRightUpperLayer), + new GeometryCurve(topRightUpperLayer, bottomRightUpperLayer), + new GeometryCurve(bottomRightUpperLayer, bottomIntermediateUpperUpperLayer), + new GeometryCurve(bottomIntermediateUpperUpperLayer, bottomIntermediateLowerUpperLayer), + new GeometryCurve(bottomIntermediateLowerUpperLayer, bottomLeftUpperLayer), + new GeometryCurve(bottomLeftUpperLayer, topLeftUpperLayer) + } + } + } + }; + + var bottomRightInBetweenAquiferLayerLeft = new Point2D(rightCoordinate / 2, -20); + var bottomLeftInBetweenAquiferLayerLeft = new Point2D(leftCoordinate, -20); + SoilLayer2D soilLayerAquiferInBetweenLeft = CreateSoilLayer2D(bottomLeftUpperLayer, bottomIntermediateLowerUpperLayer, bottomRightInBetweenAquiferLayerLeft, bottomLeftInBetweenAquiferLayerLeft); + soilLayerAquiferInBetweenLeft.IsAquifer = true; + + var bottomRightInBetweenAquiferLayerRight = new Point2D(rightCoordinate, -20); + var bottomLeftInBetweenAquiferLayerRight = new Point2D(rightCoordinate / 2, -20); + SoilLayer2D soilLayerAquiferInBetweenRight = CreateSoilLayer2D(bottomIntermediateUpperUpperLayer, bottomRightUpperLayer, bottomRightInBetweenAquiferLayerRight, bottomLeftInBetweenAquiferLayerRight); + soilLayerAquiferInBetweenRight.IsAquifer = true; + + var bottomRightInBetweenLayer = new Point2D(rightCoordinate, -25); + var bottomLeftInBetweenLayer = new Point2D(leftCoordinate, -25); + SoilLayer2D soilLayerInBetween = CreateSoilLayer2D(bottomLeftInBetweenAquiferLayerLeft, bottomRightInBetweenAquiferLayerRight, bottomRightInBetweenLayer, bottomLeftInBetweenLayer); + + var topRightBottomAquiferLayer = new Point2D(rightCoordinate, -25); + var bottomRightBottomAquiferLayer = new Point2D(rightCoordinate, -30); + var bottomLeftBottomAquiferLayer = new Point2D(leftCoordinate, -30); + SoilLayer2D soilLayerAquiferBottom = CreateSoilLayer2D(bottomLeftInBetweenLayer, topRightBottomAquiferLayer, bottomRightBottomAquiferLayer, bottomLeftBottomAquiferLayer); + soilLayerAquiferBottom.IsAquifer = true; + + var soilProfile = new SoilProfile2D + { + Geometry = new GeometryData + { + Left = leftCoordinate, + Right = rightCoordinate, + Bottom = -20 + } + }; + soilProfile.Surfaces.Add(soilLayer); + soilProfile.Surfaces.Add(soilLayerAquiferInBetweenLeft); + soilProfile.Surfaces.Add(soilLayerAquiferInBetweenRight); + soilProfile.Surfaces.Add(soilLayerInBetween); + soilProfile.Surfaces.Add(soilLayerAquiferBottom); + + var plLines = new PlLines(); + PlLine plLine = plLines.Lines[PlLineType.Pl1]; + plLine.Points.Add(new PlLinePoint(leftCoordinate, -5)); + plLine.Points.Add(new PlLinePoint(rightCoordinate, -5)); + + plLine = plLines.Lines[PlLineType.Pl2]; + plLine.Points.Add(new PlLinePoint(leftCoordinate, -6)); + plLine.Points.Add(new PlLinePoint(rightCoordinate, -6)); + + plLine = plLines.Lines[PlLineType.Pl3]; + plLine.Points.Add(new PlLinePoint(leftCoordinate, -7)); + plLine.Points.Add(new PlLinePoint(rightCoordinate, -7)); + + plLine = plLines.Lines[PlLineType.Pl4]; + plLine.Points.Add(new PlLinePoint(leftCoordinate, -8)); + plLine.Points.Add(new PlLinePoint(rightCoordinate, -8)); + + // Call + Waternet waternet = PlLinesToWaternetConverter.ConvertPlLineToWaternet(plLines, soilProfile, penetrationLength); + + // Assert + AssertGeometry(plLines.Lines[PlLineType.Pl1].Points, waternet.PhreaticLine.Points); + + Assert.AreEqual(3, waternet.HeadLineList.Count); + AssertGeometry(plLines.Lines[PlLineType.Pl2].Points, waternet.HeadLineList[0].Points); + AssertGeometry(plLines.Lines[PlLineType.Pl3].Points, waternet.HeadLineList[1].Points); + AssertGeometry(plLines.Lines[PlLineType.Pl4].Points, waternet.HeadLineList[2].Points); + + Assert.AreEqual(3, waternet.WaternetLineList.Count); + + var expectedBottomAquiferCoordinates = new[] + { + new GeometryPoint(leftCoordinate, -25), + new GeometryPoint(rightCoordinate / 2, -25), + new GeometryPoint(rightCoordinate, -25) + }; + + WaternetLine pl2WaternetLine = waternet.WaternetLineList[0]; + Assert.AreSame(waternet.HeadLineList[0], pl2WaternetLine.HeadLine); + var offSetAquiferCoordinates = expectedBottomAquiferCoordinates.Select(aquiferCoordinate => new GeometryPoint(aquiferCoordinate.X, aquiferCoordinate.Z + penetrationLength)) + .ToArray(); + AssertGeometry(offSetAquiferCoordinates, pl2WaternetLine.Points); + + WaternetLine pl3WaternetLine = waternet.WaternetLineList[1]; + Assert.AreSame(waternet.HeadLineList[1], pl3WaternetLine.HeadLine); + AssertGeometry(expectedBottomAquiferCoordinates, pl3WaternetLine.Points); + + WaternetLine pl4WaternetLine = waternet.WaternetLineList[2]; + Assert.AreSame(waternet.HeadLineList[2], pl4WaternetLine.HeadLine); + AssertGeometry(new[] + { + new GeometryPoint(leftCoordinate, -10), + new GeometryPoint(rightCoordinate / 2, -5), + new GeometryPoint(rightCoordinate, -5) + }, pl4WaternetLine.Points); + } + + [Test] [TestCase(true, false)] [TestCase(false, true)] public void ConvertPlLineToWaternet_ValidPLLinesAndSoilProfile2DWithDiscontinuousInBetweenAquiferLayer_ReturnsExpectedWaternet( @@ -395,8 +760,8 @@ var topRightBottomAquiferLayer = new Point2D(rightCoordinate, -25); var bottomRightBottomAquiferLayer = new Point2D(rightCoordinate, -30); - var bottomleftBottomAquiferLayer = new Point2D(leftCoordinate, -30); - SoilLayer2D soilLayerAquiferBottom = CreateSoilLayer2D(bottomLeftInBetweenLayer, topRightBottomAquiferLayer, bottomRightBottomAquiferLayer, bottomleftBottomAquiferLayer); + var bottomLeftBottomAquiferLayer = new Point2D(leftCoordinate, -30); + SoilLayer2D soilLayerAquiferBottom = CreateSoilLayer2D(bottomLeftInBetweenLayer, topRightBottomAquiferLayer, bottomRightBottomAquiferLayer, bottomLeftBottomAquiferLayer); soilLayerAquiferBottom.IsAquifer = true; var soilProfile = new SoilProfile2D @@ -461,8 +826,7 @@ Assert.AreSame(waternet.HeadLineList[1], pl3WaternetLine.HeadLine); AssertGeometry(expectedBottomAquiferCoordinates, pl3WaternetLine.Points); } - - + [Test] public void ConvertPlLineToWaternet_ValidPLLinesAndSoilProfile2DWithDiscontinuousBottomAquiferLayer_ReturnsExpectedWaternet() { @@ -918,10 +1282,18 @@ }).SetName("Right aquifer fully enveloped by left aquifer"); } + /// + /// Creates a rectangular . + /// + /// + /// + /// + /// + /// A rectangular . private static SoilLayer2D CreateSoilLayer2D(Point2D topLeftCoordinate, Point2D topRightCoordinate, Point2D bottomRightCoordinate, Point2D bottomLeftCoordinate) { - var soilLayer = new SoilLayer2D + return new SoilLayer2D { GeometrySurface = new GeometrySurface { @@ -937,7 +1309,6 @@ } } }; - return soilLayer; } private static void AssertGeometry(IEnumerable expectedPoints, IEnumerable actualPoints)