public void DegeneratePolygons() { var polygon = new double[][][] { new double[][] { new double[] { 0, 0 }, new double[] { 1, 0 }, new double[] { 2, 0 }, new double[] { 0, 0 } } }; var polylabel = Polylabel.GetPolylabel(polygon); Assert.Equal(new double[] { 0, 0 }, polylabel); polygon = new double[][][] { new double[][] { new double[] { 0, 0 }, new double[] { 1, 0 }, new double[] { 1, 1 }, new double[] { 1, 0 }, new double[] { 0, 0 } } }; polylabel = Polylabel.GetPolylabel(polygon); Assert.Equal(new double[] { 0, 0 }, polylabel); }
public void PolylabelJson(string fileName, double expectedX, double expectedY) { var jsonString = File.ReadAllText(fileName); var polygon = JsonConvert.DeserializeObject <double[][][]>(jsonString); var center = Polylabel.GetPolylabel(polygon, debug: true); Assert.Equal(expectedX, center[0]); Assert.Equal(expectedY, center[1]); }
public void ThrowsExceptionForIncompletePolygon() { var empty = new Polygon(new List <Vertex>()); var onePoint = new Polygon(new[] { new Vertex(0, 0) }); var twoPoints = new Polygon(new[] { new Vertex(0, 0), new Vertex(1, 1) }); Assert.That(() => Polylabel.ComputeLabelPosition(empty), Throws.TypeOf(typeof(ArgumentOutOfRangeException))); Assert.That(() => Polylabel.ComputeLabelPosition(onePoint), Throws.TypeOf(typeof(ArgumentOutOfRangeException))); Assert.That(() => Polylabel.ComputeLabelPosition(twoPoints), Throws.TypeOf(typeof(ArgumentOutOfRangeException))); }
public void IsCorrectForTriangle() { var triangle = new Polygon(new Vertex[] { new Vertex(0, 0), new Vertex(100, 0), new Vertex(50, 100) }); Vertex result = Polylabel.ComputeLabelPosition(triangle); Assert.That(result.X, Is.EqualTo(50).Within(1E-6), "Polylabel for triangle failed: {0}", nameof(result.X)); Assert.That(result.Y, Is.EqualTo(30.901700).Within(1E-6), "Polylabel for triangle failed: {0}", nameof(result.Y)); }