diff options
author | Adrian Stabiszewski <github@grundid.de> | 2020-02-27 14:00:14 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-27 14:00:14 +0100 |
commit | e0eb56b8411ff7692b3352596e7626a0ed7a6eee (patch) | |
tree | f4f97d6c4974f4a3212674b8c10d85b50c06b954 | |
parent | 8066aa12e989065804eb944e398e14acc4adf735 (diff) | |
parent | 06813f3ee5fb509a31c6bec02e0b2a7ec604a5d9 (diff) | |
download | geojson-jackson-e0eb56b8411ff7692b3352596e7626a0ed7a6eee.tar.gz |
Merge pull request #53 from trygveaa/polygon-set-exterior-ring-should-replace
Replace exterior ring in setExteriorRing if it exists
-rw-r--r-- | src/main/java/org/geojson/Polygon.java | 6 | ||||
-rw-r--r-- | src/test/java/org/geojson/jackson/PolygonTest.java | 18 |
2 files changed, 23 insertions, 1 deletions
diff --git a/src/main/java/org/geojson/Polygon.java b/src/main/java/org/geojson/Polygon.java index b3649e8..d4c42af 100644 --- a/src/main/java/org/geojson/Polygon.java +++ b/src/main/java/org/geojson/Polygon.java @@ -19,7 +19,11 @@ public class Polygon extends Geometry<List<LngLatAlt>> { } public void setExteriorRing(List<LngLatAlt> points) { - coordinates.add(0, points); + if (coordinates.isEmpty()) { + coordinates.add(0, points); + } else { + coordinates.set(0, points); + } } @JsonIgnore diff --git a/src/test/java/org/geojson/jackson/PolygonTest.java b/src/test/java/org/geojson/jackson/PolygonTest.java index ef06fdf..6298483 100644 --- a/src/test/java/org/geojson/jackson/PolygonTest.java +++ b/src/test/java/org/geojson/jackson/PolygonTest.java @@ -5,6 +5,8 @@ import org.geojson.LngLatAlt; import org.geojson.Polygon; import org.junit.Test; +import java.util.Arrays; +import java.util.Collections; import java.util.List; import static org.junit.Assert.assertEquals; @@ -46,6 +48,22 @@ public class PolygonTest { assertListEquals(MockData.INTERNAL, polygon.getInteriorRings().get(0)); } + @Test + public void itShouldSetExteriorRing() throws Exception { + Polygon polygon = new Polygon(); + polygon.setExteriorRing(MockData.EXTERNAL); + assertEquals(MockData.EXTERNAL, polygon.getExteriorRing()); + } + + @Test + public void itShouldReplaceExteriorRing() throws Exception { + Polygon polygon = new Polygon(Arrays.asList( + new LngLatAlt(0, 0), new LngLatAlt(1, 0), new LngLatAlt(1, 1), new LngLatAlt(0, 1), new LngLatAlt(0, 0))); + polygon.setExteriorRing(MockData.EXTERNAL); + assertEquals(MockData.EXTERNAL, polygon.getExteriorRing()); + assertEquals(0, polygon.getInteriorRings().size()); + } + private void assertListEquals(List<LngLatAlt> expectedList, List<LngLatAlt> actualList) { for (int x = 0; x < actualList.size(); x++) { LngLatAlt expected = expectedList.get(x); |