// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.actions; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import org.junit.Rule; import org.junit.Test; import org.openstreetmap.josm.Main; import org.openstreetmap.josm.TestUtils; import org.openstreetmap.josm.data.osm.DataSet; import org.openstreetmap.josm.data.osm.Way; import org.openstreetmap.josm.gui.layer.OsmDataLayer; import org.openstreetmap.josm.io.IllegalDataException; import org.openstreetmap.josm.io.OsmReader; import org.openstreetmap.josm.testutils.JOSMTestRules; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; /** * Unit tests for class {@link PurgeAction}. */ public class PurgeActionTest { /** * Setup test. */ @Rule @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD") public JOSMTestRules test = new JOSMTestRules().platform().commands(); /** * Non-regression test for ticket #12038. * @throws IOException if any I/O error occurs * @throws FileNotFoundException if the data file cannot be found * @throws IllegalDataException if OSM parsing fails */ @Test public void testCopyStringWayRelation() throws FileNotFoundException, IOException, IllegalDataException { try (InputStream is = TestUtils.getRegressionDataStream(12038, "data.osm")) { DataSet ds = OsmReader.parseDataSet(is, null); OsmDataLayer layer = new OsmDataLayer(ds, null, null); Main.getLayerManager().addLayer(layer); try { for (Way w : ds.getWays()) { if (w.getId() == 222191929L) { ds.addSelected(w); } } new PurgeAction().actionPerformed(null); for (Way w : ds.getWays()) { if (w.getId() == 222191929L) { assertTrue(w.isIncomplete()); assertEquals(0, w.getNodesCount()); } } } finally { // Ensure we clean the place before leaving, even if test fails. Main.getLayerManager().removeLayer(layer); } } } }