Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/Factories/MacroStabilityInwardsChartDataPointsFactory.cs =================================================================== diff -u -r566d08e1fc04c8c67b9184a2c343d75e833948d0 -recadff6f1b94fcd2a22c9963b25153a189c26dfd --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/Factories/MacroStabilityInwardsChartDataPointsFactory.cs (.../MacroStabilityInwardsChartDataPointsFactory.cs) (revision 566d08e1fc04c8c67b9184a2c343d75e833948d0) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/Factories/MacroStabilityInwardsChartDataPointsFactory.cs (.../MacroStabilityInwardsChartDataPointsFactory.cs) (revision ecadff6f1b94fcd2a22c9963b25153a189c26dfd) @@ -638,6 +638,7 @@ } else if (Math.Abs(waternetBottomDelta) < tolerance && waternetTopDelta > 0) { + bottomLine.Add(surfaceLineIntersection); topLine.Add(surfaceLineIntersection); } } @@ -647,9 +648,16 @@ if (AreaIsNotFlatLine(topLine, bottomLine)) { area.AddRange(topLine); - area.AddRange(bottomLine.OrderByDescending(p => p.X)); - if (topLine.Any()) + + List sortedBottomLine = bottomLine.OrderByDescending(p => p.X).ToList(); + if (sortedBottomLine.First().Equals(topLine.Last())) { + sortedBottomLine.Remove(sortedBottomLine.First()); + } + + area.AddRange(sortedBottomLine); + if (topLine.Any() && !area.Last().Equals(topLine.First())) + { area.Add(topLine.First()); } } Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Forms.Test/Factories/MacroStabilityInwardsChartDataPointsFactoryTest.cs =================================================================== diff -u -r566d08e1fc04c8c67b9184a2c343d75e833948d0 -recadff6f1b94fcd2a22c9963b25153a189c26dfd --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Forms.Test/Factories/MacroStabilityInwardsChartDataPointsFactoryTest.cs (.../MacroStabilityInwardsChartDataPointsFactoryTest.cs) (revision 566d08e1fc04c8c67b9184a2c343d75e833948d0) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Forms.Test/Factories/MacroStabilityInwardsChartDataPointsFactoryTest.cs (.../MacroStabilityInwardsChartDataPointsFactoryTest.cs) (revision ecadff6f1b94fcd2a22c9963b25153a189c26dfd) @@ -870,6 +870,39 @@ } [Test] + public void CreateWaterNetZonePoints_PhreaticLineAboveSurfaceLineAndWaterNetLinesOnSurfaceLine_ReturnsEmptyCollection() + { + // Setup + var waternetLineGeometry = new[] + { + new Point2D(0, 6), + new Point2D(4.98, 6), + new Point2D(10.05, 7) + }; + + var phreaticLineGeometry = new[] + { + new Point2D(0, 10), + new Point2D(10.05, 10) + }; + + MacroStabilityInwardsWaternetLine waternetLine = CreateWaternetLine(waternetLineGeometry, phreaticLineGeometry); + + var surfaceLine = new MacroStabilityInwardsSurfaceLine("Test"); + surfaceLine.SetGeometry(new[] + { + new Point3D(0, 6, 6), + new Point3D(5, 6, 6), + new Point3D(10, 7, 7) + }); + + IEnumerable> zones = MacroStabilityInwardsChartDataPointsFactory.CreateWaternetZonePoints(waternetLine, surfaceLine); + + // Assert + CollectionAssert.IsEmpty(zones); + } + + [Test] [TestCaseSource(nameof(GetPhreaticLineAndWaternetLineConfigurationsBelowSurfaceLine))] public void CreateWaternetZonePoints_DifferentWaternetLineAndPhreaticLineBelowSurfaceLineConfigurations_ReturnsPointsCollection( MacroStabilityInwardsSurfaceLine surfaceLine, @@ -1132,7 +1165,6 @@ new Point2D(10, 2), new Point2D(11.09, 3.74), new Point2D(13, -2), - new Point2D(13, -2), new Point2D(11.09, -2), new Point2D(10, -2), new Point2D(6.875, -2), @@ -1147,7 +1179,6 @@ new Point2D(13, -2), new Point2D(15, -2), new Point2D(15, -8), - new Point2D(13, -2), new Point2D(13, -2) }, zones.ElementAt(1), new Point2DComparerWithTolerance(1e-2)); }