Index: DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/General/GeometryDataTests.cs =================================================================== diff -u -r4897 -r4900 --- DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/General/GeometryDataTests.cs (.../GeometryDataTests.cs) (revision 4897) +++ DamEngine/trunk/src/Deltares.DamEngine.Data.Tests/General/GeometryDataTests.cs (.../GeometryDataTests.cs) (revision 4900) @@ -19,6 +19,7 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System.Collections.Generic; using System.Linq; using Deltares.DamEngine.Data.Geometry; using NUnit.Framework; @@ -168,6 +169,43 @@ } } + [Test] + [TestCase(0, 0, 3, 0, 2, 4)] + [TestCase(0, 10, 3, 2, 3, 5)] + [TestCase(10, 10, 3, 1, 2, 4)] + [TestCase(10, 0, 3, 0, 1, 5)] + [TestCase(5, 5, 2, 4, 5, -1)] + [TestCase(1, 1, 1, 4, -1, -1)] + [TestCase(9, 1, 1, 5, -1, -1)] + [TestCase(1, 3, 0, -1, -1, -1)] + public void GivenPointsWhenGetCurvesCoincidingWithPointCalledThenCorrectCurvesAreReturned(double x, double z, int curveCount, int curve1, int curve2, int curve3) + { + var geometryModel = new GeometryData(); + // The following model looks as follows + // _______ + // |\ /| + // | \ / | + // | X | + // | / \ | + // |/___\| + geometryModel.Curves.AddRange(new[] + { + new GeometryCurve(new Point2D(0, 0), new Point2D(10, 0)), // index 0 + new GeometryCurve(new Point2D(10, 0), new Point2D(10, 10)), // index 1 + new GeometryCurve(new Point2D(10, 10), new Point2D(0, 10)), // index 2 + new GeometryCurve(new Point2D(0, 10), new Point2D(0, 0)), // index 3 + new GeometryCurve(new Point2D(0, 0), new Point2D(10, 10)), // index 4 + new GeometryCurve(new Point2D(10, 0), new Point2D(0, 10)) // index 5 + }); + var curveList = new List(); + geometryModel.GetCurvesCoincidingWithPoint(new Point2D(x, z), ref curveList); + Assert.That(curveList.Count, Is.EqualTo(curveCount)); + if (curveCount > 0 && curve1 >= 0) + { + Assert.That(curveList[0].Equals(geometryModel.Curves[curve1]), Is.True); + } + } + private GeometryData CreateGeometrySurface() { var geometryModel = new GeometryData();