/** * Test method for 'org.locationtech.udig.validation.ValidateOverlaps.op(Display, Object, * IProgressMonitor)' */ @Ignore @Test public void testOverlapsOp() throws Exception { // create features suitable for the test GeometryFactory factory = new GeometryFactory(); LineString[] line = new LineString[4]; // first test: 2 overlapping lines, overlap test fails? line[0] = factory.createLineString( new Coordinate[] { new Coordinate(10, 10), new Coordinate(20, 20), }); line[1] = factory.createLineString( new Coordinate[] { new Coordinate(15, 15), new Coordinate(25, 25), }); assertTrue(line[0].overlaps(line[1])); // just checking :) // second test: does this validation test for self-overlaps? (it shouldn't) line[2] = factory.createLineString( new Coordinate[] { new Coordinate(50, 50), new Coordinate(60, 50), new Coordinate(55, 50), }); // third test: an intersecting line; is valid? line[3] = factory.createLineString( new Coordinate[] { new Coordinate(10, 20), new Coordinate(20, 10), }); String[] attrValues = new String[4]; attrValues[0] = "value0"; // $NON-NLS-1$ attrValues[1] = "value1"; // $NON-NLS-1$ attrValues[2] = "value2"; // $NON-NLS-1$ attrValues[3] = "value3"; // $NON-NLS-1$ SimpleFeatureType ft = DataUtilities.createType( "myLineType", "*geom:LineString,name:String"); // $NON-NLS-1$ //$NON-NLS-2$ ft = DataUtilities.createSubType(ft, null, DefaultEngineeringCRS.CARTESIAN_2D); SimpleFeature[] features = new SimpleFeature[4]; // add lines features[0] = SimpleFeatureBuilder.build(ft, new Object[] {line[0], attrValues[0]}, Integer.toString(0)); features[1] = SimpleFeatureBuilder.build(ft, new Object[] {line[1], attrValues[1]}, Integer.toString(1)); features[2] = SimpleFeatureBuilder.build(ft, new Object[] {line[2], attrValues[2]}, Integer.toString(2)); features[3] = SimpleFeatureBuilder.build(ft, new Object[] {line[3], attrValues[3]}, Integer.toString(3)); IGeoResource resource = MapTests.createGeoResource(features, true); Map map = MapTests.createNonDynamicMapAndRenderer(resource, new Dimension(500, 512)); ValidateOverlaps validator = new ValidateOverlaps(); validator.op(Display.getDefault(), map.getLayersInternal().get(0), new NullProgressMonitor()); assertEquals( 1, validator.genericResults.failedFeatures .size()); // only line[0] and line[1] should fail (counts as 1) map.sendCommandSync( new AbstractCommand() { public void run(IProgressMonitor monitor) throws Exception {} public String getName() { return null; } }); // send a sync command so async doesn't give us a false junit failure Id filter = (Id) map.getLayersInternal().get(0).getFilter(); String[] fids = filter.getIDs().toArray(new String[0]); // System.out.println(fids[0].length()+" features in FID"); assertEquals(1, fids[0].length()); // only 1 feature failed? assertEquals(features[0].getID(), fids[0]); // it was feature 0 that failed? }
@Before public void setUp() throws Exception { map = MapTests.createDefaultMap("typename", 4, true, null); // $NON-NLS-1$ layer = map.getLayersInternal().get(0); }