// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.actions; import static org.junit.Assert.assertEquals; import java.io.IOException; import java.io.InputStream; import java.util.HashSet; import java.util.List; import java.util.Set; import org.junit.Rule; import org.junit.Test; import org.openstreetmap.josm.TestUtils; import org.openstreetmap.josm.actions.CombineWayAction.NodeGraph; import org.openstreetmap.josm.actions.CombineWayAction.NodePair; import org.openstreetmap.josm.data.osm.DataSet; import org.openstreetmap.josm.data.osm.Node; 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; import nl.jqno.equalsverifier.EqualsVerifier; import nl.jqno.equalsverifier.Warning; /** * Unit tests for class {@link CombineWayAction}. */ public class CombineWayActionTest { /** * Setup test. */ @Rule @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD") public JOSMTestRules test = new JOSMTestRules(); /** * Non-regression test for bug #11957. * @throws IOException if any I/O error occurs * @throws IllegalDataException if OSM parsing fails */ @Test public void testTicket11957() throws IOException, IllegalDataException { try (InputStream is = TestUtils.getRegressionDataStream(11957, "data.osm")) { DataSet ds = OsmReader.parseDataSet(is, null); NodeGraph graph = NodeGraph.createNearlyUndirectedGraphFromNodeWays(ds.getWays()); List<Node> path = graph.buildSpanningPath(); assertEquals(10, path.size()); Set<Long> firstAndLastObtained = new HashSet<>(); firstAndLastObtained.add(path.get(0).getId()); firstAndLastObtained.add(path.get(path.size()-1).getId()); Set<Long> firstAndLastExpected = new HashSet<>(); firstAndLastExpected.add(1618969016L); firstAndLastExpected.add(35213705L); assertEquals(firstAndLastExpected, firstAndLastObtained); } } /** * Unit test of methods {@link NodePair#equals} and {@link NodePair#hashCode}. */ @Test public void testEqualsContract() { EqualsVerifier.forClass(NodePair.class).usingGetClass() .suppress(Warning.ANNOTATION) // FIXME: remove it after https://github.com/jqno/equalsverifier/issues/152 is fixed .withPrefabValues(Node.class, new Node(1), new Node(2)) .verify(); } }