package com.bc.util.geom; import junit.framework.TestCase; import java.awt.*; import java.text.ParseException; @SuppressWarnings({"MagicNumber", "UnusedAssignment"}) public class MultiPolygonGeometryTest extends TestCase { public void testGetDimension() { assertEquals(2, multi.getDimension()); } public void testGeometryType() { assertEquals(Geometry.MULTIPOLYGON, multi.getGeometryType()); } public void testAddPolygon() throws ParseException { assertEquals(0, multi.getPolygonCount()); PolygonGeometry polygon = (PolygonGeometry) parser.parseWKT("POLYGON((0 0,1 0,1 1,0 1,0 0))"); multi.addPolygon(polygon); assertEquals(1, multi.getPolygonCount()); polygon = (PolygonGeometry) parser.parseWKT("POLYGON((1 1,2 1,2 2,1 2,1 1))"); multi.addPolygon(polygon); assertEquals(2, multi.getPolygonCount()); } public void testRemovePolygon() throws ParseException { final PolygonGeometry polygon_1 = (PolygonGeometry) parser.parseWKT("POLYGON((0 0,1 0,1 1,0 1,0 0))"); multi.addPolygon(polygon_1); final PolygonGeometry polygon_2 = (PolygonGeometry) parser.parseWKT("POLYGON((1 1,2 1,2 2,1 2,1 1))"); multi.addPolygon(polygon_2); assertEquals(2, multi.getPolygonCount()); multi.removePolygon(polygon_1); assertEquals(1, multi.getPolygonCount()); multi.removePolygon(polygon_1); assertEquals(1, multi.getPolygonCount()); multi.removePolygon(polygon_2); assertEquals(0, multi.getPolygonCount()); } public void testGetPolygon() throws ParseException { final PolygonGeometry polygon_1 = (PolygonGeometry) parser.parseWKT("POLYGON((0 0,1 0,1 1,0 1,0 0))"); multi.addPolygon(polygon_1); final PolygonGeometry polygon_2 = (PolygonGeometry) parser.parseWKT("POLYGON((1 1,2 1,2 2,1 2,1 1))"); multi.addPolygon(polygon_2); PolygonGeometry polygon = multi.getPolygon(0); assertEquals(polygon_1.getAsText(), polygon.getAsText()); polygon = multi.getPolygon(1); assertEquals(polygon_2.getAsText(), polygon.getAsText()); try { polygon = multi.getPolygon(4); fail("IndexOutOfBoundsException expected"); } catch (IndexOutOfBoundsException expected) { } try { polygon = multi.getPolygon(-2); fail("IndexOutOfBoundsException expected"); } catch (IndexOutOfBoundsException expected) { } } public void testGetAsShape() throws ParseException { prepareMultiPolygon(); final Shape shape = multi.getAsShape(); assertNotNull(shape); final Rectangle bounds = shape.getBounds(); assertEquals(2.0, bounds.getHeight(), 1e-6); assertEquals(2.0, bounds.getWidth(), 1e-6); assertTrue(shape.contains(0.4, 0.5)); assertFalse(shape.contains(1.4, 0.5)); } public void testGetAsText() throws ParseException { prepareMultiPolygon(); final String result = "MULTIPOLYGON(((0 0,1 0,1 1,0 1,0 0)),((1 1,2 1,2 2,1 2,1 1)))"; assertEquals(result, multi.getAsText()); } public void testGetEquals_ReturnsTrueForComparisonWithSelf() throws ParseException { prepareMultiPolygon(); assertEquals(Geometry.TRUE, multi.getEquals(multi)); } public void testGetEquals_ReturnsUnknownForComparisonWithNull() throws ParseException { prepareMultiPolygon(); assertEquals(Geometry.UNKNOWN, multi.getEquals(null)); } public void testGetEquals_ReturnsFalseForComparisonWithOtherGeometries() throws ParseException { prepareMultiPolygon(); final PointGeometry pointGeometry = new PointGeometry(23, 67); assertEquals(Geometry.FALSE, multi.getEquals(pointGeometry)); final PolygonGeometry polygonGeometry = (PolygonGeometry) parser.parseWKT("POLYGON((1 1,2 1,2 2,1 2,1 1))"); assertEquals(Geometry.FALSE, multi.getEquals(polygonGeometry)); } public void testGetEquals_ReturnsTrueForCorrectComparision() throws ParseException { prepareMultiPolygon(); final MultiPolygonGeometry toCompare = new MultiPolygonGeometry(); final PolygonGeometry polygon_1 = (PolygonGeometry) parser.parseWKT("POLYGON((0 0,1 0,1 1,0 1,0 0))"); toCompare.addPolygon(polygon_1); final PolygonGeometry polygon_2 = (PolygonGeometry) parser.parseWKT("POLYGON((1 1,2 1,2 2,1 2,1 1))"); toCompare.addPolygon(polygon_2); assertEquals(Geometry.TRUE, multi.getEquals(toCompare)); } /////////////////////////////////////////////////////////////////////////// /////// END OF PUBLIC /////////////////////////////////////////////////////////////////////////// private GeometryParser parser; private MultiPolygonGeometry multi; protected void setUp() throws Exception { parser = new GeometryParser(); multi = new MultiPolygonGeometry(); } protected void tearDown() throws Exception { parser = null; } private void prepareMultiPolygon() throws ParseException { PolygonGeometry polygon_1 = (PolygonGeometry) parser.parseWKT("POLYGON((0 0,1 0,1 1,0 1,0 0))"); multi.addPolygon(polygon_1); PolygonGeometry polygon_2 = (PolygonGeometry) parser.parseWKT("POLYGON((1 1,2 1,2 2,1 2,1 1))"); multi.addPolygon(polygon_2); } }