Index: DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/Geometry/GeometryDataTests.cs =================================================================== diff -u -r5080 -r5264 --- DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/Geometry/GeometryDataTests.cs (.../GeometryDataTests.cs) (revision 5080) +++ DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/Geometry/GeometryDataTests.cs (.../GeometryDataTests.cs) (revision 5264) @@ -518,4 +518,53 @@ geometryData.Surfaces.Add(new GeometrySurface()); } } + + [Test] + public void GivenGeometryData_WhenGetNextTopCurve_ThenReturnsExpectedCurve() + { + var geometryData = new GeometryData + { + Left = 0.0, + Right = 100.0 + }; + var leftCurve = new GeometryCurve(new Point2D(0.0, 10.0), new Point2D( 5.0, 200.0)); + var curve = new GeometryCurve(new Point2D(5.0, 10.0), new Point2D( 6.0, 10.0)); + var connectedCurveLow = new GeometryCurve(new Point2D(6.0, 10.0), new Point2D( 8.0, 11.0)); + var connectedCurveHigh = new GeometryCurve(new Point2D(6.0, 10.0), new Point2D( 8.0, 12.0)); + var connectedCurveExcluded = new GeometryCurve(new Point2D(6.0, 10.0), new Point2D( 8.0, 13.0)); + var boundaryCurves = new List + { + leftCurve, // it is connected, but only curves on the right side are considered + curve, // the curve for which the next top curve is to be found + connectedCurveLow, // even though this is connected on the right side, it is not the highest + connectedCurveHigh, // this is the curve we are looking for + connectedCurveExcluded // even though this is the highest connected curve, it is excluded + }; + var excludedCurves = new List + { + connectedCurveExcluded + }; + GeometryCurve topCurve = geometryData.GetNextTopCurve(curve, boundaryCurves, excludedCurves); + Assert.That(topCurve, Is.EqualTo(connectedCurveHigh)); + } + + [Test] + public void GivenRightCurve_WhenGetNextTopCurve_ThenReturnsNull() + { + var geometryData = new GeometryData + { + Left = 0.0, + Right = 100.0 + }; + var curve = new GeometryCurve(new Point2D(5.0, 10.0), new Point2D( 100.0, 10.0)); + var connectedCurve = new GeometryCurve(new Point2D(100.0, 10.0), new Point2D( 50.0, 20.0)); + var boundaryCurves = new List + { + curve, + connectedCurve + }; + var excludedCurves = new List(); + GeometryCurve topCurve = geometryData.GetNextTopCurve(curve, boundaryCurves, excludedCurves); + Assert.That(topCurve, Is.Null); + } } \ No newline at end of file Index: DamEngine/trunk/src/Deltares.DamEngine.Data/Geometry/GeometryData.cs =================================================================== diff -u -r5258 -r5264 --- DamEngine/trunk/src/Deltares.DamEngine.Data/Geometry/GeometryData.cs (.../GeometryData.cs) (revision 5258) +++ DamEngine/trunk/src/Deltares.DamEngine.Data/Geometry/GeometryData.cs (.../GeometryData.cs) (revision 5264) @@ -341,7 +341,7 @@ /// /// /// Curve - private GeometryCurve GetNextTopCurve(GeometryCurve curve, List boundaryCurves, + protected internal GeometryCurve GetNextTopCurve(GeometryCurve curve, List boundaryCurves, List excludedCurves) { // if current curve ends on right limit then that must have been the last one so stop the search