// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.io; import static groovy.test.GroovyAssert.shouldFail import java.nio.charset.StandardCharsets import org.junit.Test import org.openstreetmap.josm.data.osm.ChangesetDataSet import org.openstreetmap.josm.data.osm.OsmPrimitiveType import org.openstreetmap.josm.data.osm.SimplePrimitiveId import org.openstreetmap.josm.data.osm.ChangesetDataSet.ChangesetModificationType import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive import org.openstreetmap.josm.data.osm.history.HistoryRelation import org.openstreetmap.josm.data.osm.history.HistoryWay import org.openstreetmap.josm.gui.progress.NullProgressMonitor class OsmChangesetContentParserTest { @Test public void test_Constructor() { OsmChangesetContentParser parser // should be OK parser = new OsmChangesetContentParser(new ByteArrayInputStream("".bytes)) shouldFail(IllegalArgumentException) { parser = new OsmChangesetContentParser((String) null) } shouldFail(IllegalArgumentException) { parser = new OsmChangesetContentParser((InputStream) null) } } @Test public void test_parse_arguments() { OsmChangesetContentParser parser def String doc = """ """ // should be OK parser = new OsmChangesetContentParser(new ByteArrayInputStream(doc.getBytes(StandardCharsets.UTF_8))) parser.parse null // should be OK parser = new OsmChangesetContentParser(new ByteArrayInputStream(doc.getBytes(StandardCharsets.UTF_8))) parser.parse NullProgressMonitor.INSTANCE // should be OK parser = new OsmChangesetContentParser(doc) parser.parse null } /** * A simple changeset content document with one created node * */ @Test public void test_OK_OneCreatedNode() { OsmChangesetContentParser parser def String doc = """ """ // should be OK parser = new OsmChangesetContentParser(doc) ChangesetDataSet ds = parser.parse() assert ds.size() == 1 HistoryOsmPrimitive p = ds.getPrimitive(new SimplePrimitiveId(1, OsmPrimitiveType.NODE)); assert p != null assert p.getId() == 1 assert p.getVersion() == 1 assert p.getChangesetId() == 1 assert p.getTimestamp() != null assert ds.getModificationType(p.getPrimitiveId()) == ChangesetModificationType.CREATED assert ds.isCreated(p.getPrimitiveId()) } /** * A simple changeset content document with one updated node * */ @Test public void test_OK_OneUpdatedNode() { OsmChangesetContentParser parser def String doc = """ """ // should be OK parser = new OsmChangesetContentParser(doc) ChangesetDataSet ds = parser.parse() assert ds.size() == 1 HistoryOsmPrimitive p = ds.getPrimitive(new SimplePrimitiveId(1, OsmPrimitiveType.NODE)); assert p != null assert p.getId() == 1 assert p.getVersion() == 1 assert p.getChangesetId() == 1 assert p.getTimestamp() != null assert ds.getModificationType(p.getPrimitiveId()) == ChangesetModificationType.UPDATED assert ds.isUpdated(p.getPrimitiveId()) } /** * A simple changeset content document with one deleted node * */ @Test public void test_OK_OneDeletedNode() { OsmChangesetContentParser parser def String doc = """ """ // should be OK parser = new OsmChangesetContentParser(doc) ChangesetDataSet ds = parser.parse() assert ds.size() == 1 HistoryOsmPrimitive p = ds.getPrimitive(new SimplePrimitiveId(1, OsmPrimitiveType.NODE)); assert p != null assert p.getId() == 1 assert p.getVersion() == 1 assert p.getChangesetId() == 1 assert p.getTimestamp() != null assert ds.getModificationType(p.getPrimitiveId()) == ChangesetModificationType.DELETED assert ds.isDeleted(p.getPrimitiveId()) } /** * A more complex test with a document including nodes, ways, and relations. * */ @Test public void test_OK_ComplexTestCase() { OsmChangesetContentParser parser def String doc = """ """ // should be OK parser = new OsmChangesetContentParser(doc) ChangesetDataSet ds = parser.parse() assert ds.size() == 3 HistoryOsmPrimitive p = ds.getPrimitive(new SimplePrimitiveId(1, OsmPrimitiveType.NODE)); assert p != null assert p.getId() == 1 assert p.getVersion() == 1 assert p.getChangesetId() == 1 assert p.getTimestamp() != null assert ds.getModificationType(p.getPrimitiveId()) == ChangesetModificationType.CREATED assert ds.isCreated(p.getPrimitiveId()) assert p.get("a.key") == "a.value" HistoryWay w = (HistoryWay)ds.getPrimitive(new SimplePrimitiveId(2, OsmPrimitiveType.WAY)); assert w != null assert w.getId() == 2 assert w.getVersion() == 2 assert w.getChangesetId() == 1 assert w.getTimestamp() != null assert ds.getModificationType(w.getPrimitiveId()) == ChangesetModificationType.UPDATED assert ds.isUpdated(w.getPrimitiveId()) assert w.getNumNodes() == 2 assert w.getNodes() == [21,22] HistoryRelation r = (HistoryRelation)ds.getPrimitive(new SimplePrimitiveId(3, OsmPrimitiveType.RELATION)); assert r != null assert r.getId() == 3 assert r.getVersion() == 3 assert r.getChangesetId() == 1 assert r.getTimestamp() != null assert ds.getModificationType(r.getPrimitiveId()) == ChangesetModificationType.DELETED assert ds.isDeleted(r.getPrimitiveId()) } }