// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.gui.history; import static org.junit.Assert.assertEquals; import java.io.IOException; import java.io.InputStream; import org.junit.Rule; import org.junit.Test; import org.openstreetmap.josm.TestUtils; import org.openstreetmap.josm.data.osm.Node; import org.openstreetmap.josm.data.osm.OsmPrimitiveType; import org.openstreetmap.josm.data.osm.Relation; import org.openstreetmap.josm.data.osm.SimplePrimitiveId; import org.openstreetmap.josm.data.osm.Way; import org.openstreetmap.josm.data.osm.history.History; import org.openstreetmap.josm.data.osm.history.HistoryDataSet; import org.openstreetmap.josm.gui.progress.NullProgressMonitor; import org.openstreetmap.josm.gui.progress.ProgressMonitor; import org.openstreetmap.josm.io.OsmHistoryReader; import org.openstreetmap.josm.io.OsmServerHistoryReader; import org.openstreetmap.josm.io.OsmTransferException; import org.openstreetmap.josm.testutils.JOSMTestRules; import org.xml.sax.SAXException; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; /** * Unit tests of {@link HistoryLoadTask} class. */ public class HistoryLoadTaskTest { /** * Setup test. */ @Rule @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD") public JOSMTestRules test = new JOSMTestRules().preferences().devAPI(); /** * Unit test of {@link HistoryLoadTask#getLoadingMessage} */ @Test public void testGetLoadingMessage() { assertEquals("Loading history for node {0}", HistoryLoadTask.getLoadingMessage(new Node().getPrimitiveId())); assertEquals("Loading history for way {0}", HistoryLoadTask.getLoadingMessage(new Way().getPrimitiveId())); assertEquals("Loading history for relation {0}", HistoryLoadTask.getLoadingMessage(new Relation().getPrimitiveId())); assertEquals("", HistoryLoadTask.getLoadingMessage(new SimplePrimitiveId(1, OsmPrimitiveType.CLOSEDWAY))); assertEquals("", HistoryLoadTask.getLoadingMessage(new SimplePrimitiveId(1, OsmPrimitiveType.MULTIPOLYGON))); } /** * Unit test of {@link HistoryLoadTask#loadHistory} * @throws OsmTransferException if an error occurs */ @Test public void testLoadHistory() throws OsmTransferException { HistoryDataSet ds = HistoryLoadTask.loadHistory(new OsmServerHistoryReader(OsmPrimitiveType.NODE, 0) { @Override public HistoryDataSet parseHistory(ProgressMonitor progressMonitor) throws OsmTransferException { try (InputStream in = TestUtils.getRegressionDataStream(12639, "history.xml")) { return new OsmHistoryReader(in).parse(NullProgressMonitor.INSTANCE); } catch (IOException | SAXException e) { throw new OsmTransferException(e); } } }, NullProgressMonitor.INSTANCE); assertEquals(113, ds.getChangesetIds().size()); History h = ds.getHistory(1350901, OsmPrimitiveType.RELATION); assertEquals(115, h.getNumVersions()); } }