Index: Core/Common/test/Core.Common.Geometry.Test/AdvancedMath2DTest.cs =================================================================== diff -u -r2016e52c40bafa21e1c6d49c9cdc54cc31c6f3a0 -r76083efbd5b5eb1508bd12a1c29138bb8e21cefe --- Core/Common/test/Core.Common.Geometry.Test/AdvancedMath2DTest.cs (.../AdvancedMath2DTest.cs) (revision 2016e52c40bafa21e1c6d49c9cdc54cc31c6f3a0) +++ Core/Common/test/Core.Common.Geometry.Test/AdvancedMath2DTest.cs (.../AdvancedMath2DTest.cs) (revision 76083efbd5b5eb1508bd12a1c29138bb8e21cefe) @@ -452,7 +452,7 @@ } [Test] - public void GetPolygonInteriorPoint_WithGeometry_ReturnsInteriorPoint() + public void GetPolygonInteriorPoint_SquarePolygon_ReturnsInteriorPoint() { // Setup Point2D[] outerRing = CreateBasePolygon(); @@ -464,6 +464,65 @@ Assert.AreEqual(new Point2D(2, 2), interiorPoint); } + [Test] + public void GetPolygonInteriorPoint_TrianglePolygon_ReturnsInteriorPoint() + { + // Setup + var outerRing = new[] + { + new Point2D(0, 0), + new Point2D(3, 4), + new Point2D(6, 0) + }; + + // Call + Point2D interiorPoint = AdvancedMath2D.GetPolygonInteriorPoint(outerRing, new IEnumerable[0]); + + // Assert + Assert.AreEqual(new Point2D(3, 2), interiorPoint); + } + + [Test] + public void GetPolygonInteriorPoint_PolygonWithHoles_ReturnsInteriorPoint() + { + // Setup + var outerRing = new[] + { + new Point2D(0, 0), + new Point2D(0, 4), + new Point2D(2, 6), + new Point2D(4, 4), + new Point2D(4, 0), + new Point2D(2, -2) + }; + + var innerRing1 = new[] + { + new Point2D(1, 3), + new Point2D(2, 4), + new Point2D(3, 3), + new Point2D(2, 2) + }; + + var innerRing2 = new[] + { + new Point2D(1, 1), + new Point2D(2, 2), + new Point2D(3, 1), + new Point2D(2, 0) + }; + + // Call + Point2D interiorPoint = AdvancedMath2D.GetPolygonInteriorPoint(outerRing, new [] + { + innerRing1, + innerRing2 + }); + + // Assert + Assert.AreEqual(new Point2D(0.75, 2.5), interiorPoint); + } + private static double[] ThreeRandomXCoordinates() { var random = new Random(21);