Index: DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/Geometry/GeometryDataTests.cs =================================================================== diff -u -r6245 -r6404 --- DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/Geometry/GeometryDataTests.cs (.../GeometryDataTests.cs) (revision 6245) +++ DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/Geometry/GeometryDataTests.cs (.../GeometryDataTests.cs) (revision 6404) @@ -1,4 +1,4 @@ -// Copyright (C) Stichting Deltares 2024. All rights reserved. +// Copyright (C) Stichting Deltares 2025. All rights reserved. // // This file is part of the Dam Engine. // @@ -96,35 +96,35 @@ Assert.That(line.Points.OrderBy(p => p.X).First().X, Is.EqualTo(1.0)); Assert.That(line.Points.OrderByDescending(p => p.X).First().X, Is.EqualTo(10.0)); } - + [Test] public void GeometryDataTestClear() { GeometryData gData = CreateGeometrySurface(); Assert.Multiple(() => - { - Assert.That(gData.Points, Has.Count.EqualTo(6)); - Assert.That(gData.Curves, Has.Count.EqualTo(7)); - Assert.That(gData.Loops, Has.Count.EqualTo(2)); - Assert.That(gData.Surfaces, Has.Count.EqualTo(2)); - }); + { + Assert.That(gData.Points, Has.Count.EqualTo(6)); + Assert.That(gData.Curves, Has.Count.EqualTo(7)); + Assert.That(gData.Loops, Has.Count.EqualTo(2)); + Assert.That(gData.Surfaces, Has.Count.EqualTo(2)); + }); gData.Clear(); Assert.Multiple(() => - { - Assert.That(gData.Points, Has.Count.EqualTo(0)); - Assert.That(gData.Curves, Has.Count.EqualTo(0)); - Assert.That(gData.Loops, Has.Count.EqualTo(0)); - Assert.That(gData.Surfaces, Has.Count.EqualTo(0)); - Assert.That(gData.NewlyEffectedPoints, Has.Count.EqualTo(0)); - Assert.That(gData.NewlyEffectedCurves, Has.Count.EqualTo(0)); - }); + { + Assert.That(gData.Points, Has.Count.EqualTo(0)); + Assert.That(gData.Curves, Has.Count.EqualTo(0)); + Assert.That(gData.Loops, Has.Count.EqualTo(0)); + Assert.That(gData.Surfaces, Has.Count.EqualTo(0)); + Assert.That(gData.NewlyEffectedPoints, Has.Count.EqualTo(0)); + Assert.That(gData.NewlyEffectedCurves, Has.Count.EqualTo(0)); + }); } [Test] public void GeometryDataTestGetRightCurves() { GeometryData gData = CreateGeometrySurface(); - var rightCurves = gData.GetRightCurves(); + List rightCurves = gData.GetRightCurves(); Assert.Multiple(() => { Assert.That(rightCurves, Has.Count.EqualTo(5)); @@ -143,7 +143,7 @@ public void GeometryDataTestGetLeftCurves() { GeometryData gData = CreateGeometrySurface(); - var leftCurves = gData.GetLeftCurves(); + List leftCurves = gData.GetLeftCurves(); Assert.Multiple(() => { Assert.That(leftCurves, Has.Count.EqualTo(5)); @@ -157,7 +157,7 @@ Assert.That(leftCurves[1].EndPoint.Z, Is.EqualTo(10.0)); }); } - + [Test] public void TestSimpleGeneration() { @@ -233,6 +233,55 @@ } } + [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); + } + private GeometryData CreateGeometrySurface() { var geometryModel = new GeometryData(); @@ -412,6 +461,42 @@ { private static readonly GeometryData originalGeometryData = CreateGeometryData(); + private static GeometryData CreateGeometryData() + { + var geometryData = new GeometryData + { + Left = -10.0, + Right = 10.0, + Bottom = -10.0 + }; + geometryData.Points.Add(new Point2D(0.1, 1.1)); + geometryData.Points.Add(new Point2D(0.2, 1.2)); + geometryData.NewlyEffectedPoints.Add(new Point2D(0.3, 1.3)); + geometryData.NewlyEffectedPoints.Add(new Point2D(0.4, 1.4)); + geometryData.Curves.Add(new GeometryCurve(geometryData.Points[0], geometryData.Points[1])); + geometryData.NewlyEffectedCurves.Add(new GeometryCurve(geometryData.NewlyEffectedPoints[0], geometryData.NewlyEffectedPoints[1])); + var loop = new GeometryLoop(); + loop.CurveList.Add(new GeometryCurve(new Point2D(1.0, 2.0), new Point2D(3.0, 4.0))); + geometryData.Loops.Add(loop); + geometryData.Surfaces.Add(new GeometrySurface(loop)); + return geometryData; + } + + private static void ModifyGeometryData(GeometryData geometryData) + { + geometryData.Left = geometryData.Left + 1; + geometryData.Right = geometryData.Right + 1; + geometryData.Bottom = geometryData.Bottom + 1; + geometryData.Points.Add(new Point2D(10.0, 20.0)); + geometryData.NewlyEffectedPoints.Add(new Point2D(30.0, 40.0)); + geometryData.Curves.Add(new GeometryCurve(geometryData.Points[1], geometryData.Points[2])); + geometryData.NewlyEffectedCurves.Add(new GeometryCurve(geometryData.NewlyEffectedPoints[1], geometryData.NewlyEffectedPoints[2])); + var loop = new GeometryLoop(); + loop.CurveList.Add(new GeometryCurve(new Point2D(5.0, 6.0), new Point2D(7.0, 8.0))); + geometryData.Loops.Add(loop); + geometryData.Surfaces.Add(new GeometrySurface()); + } + [TestFixture] public class WhenCloned : GivenGeometryData { @@ -455,7 +540,7 @@ Assert.That(clonedGeometryData.Curves[0], Is.Not.EqualTo(originalGeometryData.Curves[0])); Assert.That(clonedGeometryData.Curves[0].HeadPoint.X, Is.EqualTo(originalGeometryData.Curves[0].HeadPoint.X)); } - + [Test] public void ThenNewlyEffectedCurvesAreCopied() { @@ -503,90 +588,5 @@ }); } } - - private static GeometryData CreateGeometryData() - { - var geometryData = new GeometryData - { - Left = -10.0, - Right = 10.0, - Bottom = -10.0 - }; - geometryData.Points.Add(new Point2D(0.1, 1.1)); - geometryData.Points.Add(new Point2D(0.2, 1.2)); - geometryData.NewlyEffectedPoints.Add(new Point2D(0.3, 1.3)); - geometryData.NewlyEffectedPoints.Add(new Point2D(0.4, 1.4)); - geometryData.Curves.Add(new GeometryCurve(geometryData.Points[0], geometryData.Points[1])); - geometryData.NewlyEffectedCurves.Add(new GeometryCurve(geometryData.NewlyEffectedPoints[0], geometryData.NewlyEffectedPoints[1])); - var loop = new GeometryLoop(); - loop.CurveList.Add(new GeometryCurve(new Point2D(1.0, 2.0), new Point2D(3.0, 4.0))); - geometryData.Loops.Add(loop); - geometryData.Surfaces.Add(new GeometrySurface(loop)); - return geometryData; - } - - private static void ModifyGeometryData(GeometryData geometryData) - { - geometryData.Left = geometryData.Left + 1; - geometryData.Right = geometryData.Right + 1; - geometryData.Bottom = geometryData.Bottom + 1; - geometryData.Points.Add(new Point2D(10.0, 20.0)); - geometryData.NewlyEffectedPoints.Add(new Point2D(30.0, 40.0)); - geometryData.Curves.Add(new GeometryCurve(geometryData.Points[1], geometryData.Points[2])); - geometryData.NewlyEffectedCurves.Add(new GeometryCurve(geometryData.NewlyEffectedPoints[1], geometryData.NewlyEffectedPoints[2])); - var loop = new GeometryLoop(); - loop.CurveList.Add(new GeometryCurve(new Point2D(5.0, 6.0), new Point2D(7.0, 8.0))); - geometryData.Loops.Add(loop); - 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