Changeset 14047 in josm for trunk/test/unit/org
- Timestamp:
- 2018-07-24T22:17:01+02:00 (7 years ago)
- Location:
- trunk/test/unit/org/openstreetmap/josm/io
- Files:
-
- 2 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/test/unit/org/openstreetmap/josm/io/OsmChangeBuilderTest.java
r14043 r14047 1 // License: GPL. For details, see LICENSE file. 1 2 package org.openstreetmap.josm.io; 2 3 3 import static groovy.test.GroovyAssert.shouldFail4 import static org.junit.Assert. *4 import static org.junit.Assert.assertEquals; 5 import static org.junit.Assert.fail; 5 6 6 import org.junit.Test 7 import org.openstreetmap.josm.data.coor.LatLon 8 import org.openstreetmap.josm.data.osm.Changeset 9 import org.openstreetmap.josm.data.osm.Node 7 import java.util.Arrays; 10 8 11 class OsmChangeBuilderTest { 9 import org.junit.Rule; 10 import org.junit.Test; 11 import org.openstreetmap.josm.data.coor.LatLon; 12 import org.openstreetmap.josm.data.osm.Changeset; 13 import org.openstreetmap.josm.data.osm.Node; 14 import org.openstreetmap.josm.testutils.JOSMTestRules; 15 import org.openstreetmap.josm.tools.Logging; 16 17 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; 18 19 /** 20 * Unit tests of {@link OsmChangeBuilder} 21 */ 22 public class OsmChangeBuilderTest { 23 24 /** 25 * Setup rule 26 */ 27 @Rule 28 @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD") 29 public JOSMTestRules test = new JOSMTestRules(); 30 31 private static void shouldFail(Runnable r) { 32 try { 33 r.run(); 34 fail("should throw exception"); 35 } catch (IllegalStateException e) { 36 Logging.trace(e); 37 } 38 } 12 39 13 40 /** … … 16 43 @Test 17 44 public void testConstructor() { 18 defChangeset cs = new Changeset(1)45 Changeset cs = new Changeset(1); 19 46 // should not fail 20 OsmChangeBuilder builder = new OsmChangeBuilder(cs) 21 22 // should not fail either - null allowed 23 builder = new OsmChangeBuilder(null) 24 25 // should not fail 26 builder = new OsmChangeBuilder(cs, "0.5") 27 28 builder = new OsmChangeBuilder(cs, null) 29 30 builder = new OsmChangeBuilder(null, null) 47 new OsmChangeBuilder(cs); 48 new OsmChangeBuilder(null); 49 new OsmChangeBuilder(cs, "0.5"); 50 new OsmChangeBuilder(cs, null); 51 new OsmChangeBuilder(null, null); 31 52 } 32 53 … … 37 58 @Test 38 59 public void testSequenceOfMethodCalls() { 39 defChangeset cs = new Changeset(1)40 OsmChangeBuilder builder = new OsmChangeBuilder(cs)60 Changeset cs = new Changeset(1); 61 OsmChangeBuilder csBuilder = new OsmChangeBuilder(cs); 41 62 42 63 // should be OK 43 builder.start()44 Node n = new Node(LatLon.ZERO) 45 builder.appendn46 builder.finish()64 csBuilder.start(); 65 Node n = new Node(LatLon.ZERO); 66 csBuilder.append(n); 67 csBuilder.finish(); 47 68 48 shouldFail( IllegalStateException){49 builder = new OsmChangeBuilder(cs) 50 builder.append n51 } 69 shouldFail(() -> { 70 OsmChangeBuilder builder = new OsmChangeBuilder(cs); 71 builder.append(n); 72 }); 52 73 53 shouldFail( IllegalStateException){54 builder = new OsmChangeBuilder(cs) 55 builder.append( [n])56 } 74 shouldFail(() -> { 75 OsmChangeBuilder builder = new OsmChangeBuilder(cs); 76 builder.append(Arrays.asList(n)); 77 }); 57 78 58 shouldFail( IllegalStateException){59 builder = new OsmChangeBuilder(cs) 60 builder.finish() 61 } 79 shouldFail(() -> { 80 OsmChangeBuilder builder = new OsmChangeBuilder(cs); 81 builder.finish(); 82 }); 62 83 63 shouldFail( IllegalStateException){64 builder = new OsmChangeBuilder(cs) 65 builder.start() 66 builder.start() 67 } 84 shouldFail(() -> { 85 OsmChangeBuilder builder = new OsmChangeBuilder(cs); 86 builder.start(); 87 builder.start(); 88 }); 68 89 } 69 90 91 /** 92 * Test building a document with a new node 93 */ 70 94 @Test 71 95 public void testDocumentWithNewNode() { 72 defChangeset cs = new Changeset(1)73 OsmChangeBuilder builder = new OsmChangeBuilder(cs) 74 Node n = new Node(LatLon.ZERO) 96 Changeset cs = new Changeset(1); 97 OsmChangeBuilder builder = new OsmChangeBuilder(cs); 98 Node n = new Node(LatLon.ZERO); 75 99 76 builder.start() 77 builder.append n78 builder.finish() 100 builder.start(); 101 builder.append(n); 102 builder.finish(); 79 103 80 def doc = new XmlParser().parseText(builder.document) 81 assert doc.@version == "0.6" 82 assert doc.@generator == "JOSM" 83 assert doc.name() == "osmChange" 84 assert doc.children().size() == 1 85 def create = doc.create 86 assert create != null 87 88 assert create.size() == 1 89 def nodes = create[0].node 90 assert nodes.size() == 1 91 def node = nodes[0] 92 assert node.@id == n.uniqueId.toString() 93 assert node.@lat != null 94 assert node.@lon != null 95 assert node.@changeset == cs.id.toString() 104 assertEquals(String.format( 105 "<osmChange version=\"0.6\" generator=\"JOSM\">%n" + 106 "<create>%n" + 107 " <node id='-6' changeset='1' lat='0.0' lon='0.0' />%n" + 108 "</create>%n" + 109 "</osmChange>%n"), builder.getDocument()); 96 110 } 97 111 … … 101 115 @Test 102 116 public void testDocumentWithModifiedNode() { 103 def Changeset cs = new Changeset(1) 104 OsmChangeBuilder builder = new OsmChangeBuilder(cs) 105 Node n = new Node(1) 106 n.coor = LatLon.ZERO 107 n.incomplete = false 108 n.modified = true 117 Changeset cs = new Changeset(1); 118 OsmChangeBuilder builder = new OsmChangeBuilder(cs); 119 Node n = new Node(LatLon.ZERO); 120 n.setOsmId(1, 1); 121 n.setModified(true); 109 122 110 builder.start() 111 builder.append n112 builder.finish() 123 builder.start(); 124 builder.append(n); 125 builder.finish(); 113 126 114 def doc = new XmlParser().parseText(builder.document) 115 assert doc.@version == "0.6" 116 assert doc.@generator == "JOSM" 117 assert doc.name() == "osmChange" 118 assert doc.children().size() == 1 119 def modify = doc.modify 120 assert modify != null 121 122 assert modify.size() == 1 123 def nodes = modify[0].node 124 assert nodes.size() == 1 125 def node = nodes[0] 126 assert node.@id == n.uniqueId.toString() 127 assert node.@lat != null 128 assert node.@lon != null 129 assert node.@changeset == cs.id.toString() 127 assertEquals(String.format( 128 "<osmChange version=\"0.6\" generator=\"JOSM\">%n" + 129 "<modify>%n" + 130 " <node id='1' version='1' changeset='1' lat='0.0' lon='0.0' />%n" + 131 "</modify>%n" + 132 "</osmChange>%n"), builder.getDocument()); 130 133 } 131 134 … … 135 138 @Test 136 139 public void testDocumentWithDeletedNode() { 137 def Changeset cs = new Changeset(1) 138 OsmChangeBuilder builder = new OsmChangeBuilder(cs) 139 Node n = new Node(1) 140 n.coor = LatLon.ZERO 141 n.incomplete = false 142 n.deleted = true 140 Changeset cs = new Changeset(1); 141 OsmChangeBuilder builder = new OsmChangeBuilder(cs); 142 Node n = new Node(LatLon.ZERO); 143 n.setOsmId(1, 1); 144 n.setDeleted(true); 143 145 144 builder.start() 145 builder.append n146 builder.finish() 146 builder.start(); 147 builder.append(n); 148 builder.finish(); 147 149 148 def doc = new XmlParser().parseText(builder.document) 149 assert doc.@version == "0.6" 150 assert doc.@generator == "JOSM" 151 assert doc.name() == "osmChange" 152 assert doc.children().size() == 1 153 def delete = doc.delete 154 assert delete != null 155 156 assert delete.size() == 1 157 def nodes = delete[0].node 158 assert nodes.size() == 1 159 def node = nodes[0] 160 assert node.@id == n.uniqueId.toString() 161 assert node.@lat == null 162 assert node.@lon == null 163 assert node.@changeset == cs.id.toString() 150 assertEquals(String.format( 151 "<osmChange version=\"0.6\" generator=\"JOSM\">%n" + 152 "<delete>%n" + 153 " <node id='1' version='1' changeset='1'/>%n" + 154 "</delete>%n" + 155 "</osmChange>%n"), builder.getDocument()); 164 156 } 165 157 166 158 /** 167 159 * Test building a mixed document. 168 *169 160 */ 170 161 @Test 171 162 public void testMixed() { 172 def Changeset cs = new Changeset(1) 173 OsmChangeBuilder builder = new OsmChangeBuilder(cs) 174 Node n1 = new Node(1) 175 n1.coor = LatLon.ZERO 176 n1.incomplete = false 177 n1.deleted = true 163 Changeset cs = new Changeset(1); 164 OsmChangeBuilder builder = new OsmChangeBuilder(cs); 165 Node n1 = new Node(LatLon.ZERO); 166 n1.setOsmId(1, 1); 167 n1.setDeleted(true); 178 168 179 Node n2 = new Node(LatLon.ZERO) 169 Node n2 = new Node(LatLon.ZERO); 180 170 181 Node n3 = new Node(2) 182 n3.coor = LatLon.ZERO 183 n3.incomplete = false 184 n3.modified = true 171 Node n3 = new Node(LatLon.ZERO); 172 n3.setOsmId(2, 1); 173 n3.setModified(true); 185 174 186 builder.start() 187 builder.append( [n1,n2,n3])188 builder.finish() 175 builder.start(); 176 builder.append(Arrays.asList(n1, n2, n3)); 177 builder.finish(); 189 178 190 def doc = new XmlParser().parseText(builder.document) 191 192 assert doc.children().size() == 3 193 assert doc.children()[0].name() == "delete" 194 assert doc.children()[1].name() == "create" 195 assert doc.children()[2].name() == "modify" 196 197 def node = doc.children()[0].node[0] 198 assert node.@id == n1.uniqueId.toString() 199 200 node = doc.children()[1].node[0] 201 assert node.@id == n2.uniqueId.toString() 202 203 node = doc.children()[2].node[0] 204 assert node.@id == n3.uniqueId.toString() 179 assertEquals(String.format( 180 "<osmChange version=\"0.6\" generator=\"JOSM\">%n" + 181 "<delete>%n" + 182 " <node id='1' version='1' changeset='1'/>%n" + 183 "</delete>%n" + 184 "<create>%n" + 185 " <node id='-3' changeset='1' lat='0.0' lon='0.0' />%n" + 186 "</create>%n" + 187 "<modify>%n" + 188 " <node id='2' version='1' changeset='1' lat='0.0' lon='0.0' />%n" + 189 "</modify>%n" + 190 "</osmChange>%n"), builder.getDocument()); 205 191 } 206 192 } -
trunk/test/unit/org/openstreetmap/josm/io/OsmChangesetContentParserTest.java
r14043 r14047 2 2 package org.openstreetmap.josm.io; 3 3 4 import static groovy.test.GroovyAssert.shouldFail 5 6 import java.nio.charset.StandardCharsets 7 8 import org.junit.Test 9 import org.openstreetmap.josm.data.osm.ChangesetDataSet 10 import org.openstreetmap.josm.data.osm.OsmPrimitiveType 11 import org.openstreetmap.josm.data.osm.SimplePrimitiveId 12 import org.openstreetmap.josm.data.osm.ChangesetDataSet.ChangesetModificationType 13 import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive 14 import org.openstreetmap.josm.data.osm.history.HistoryRelation 15 import org.openstreetmap.josm.data.osm.history.HistoryWay 16 import org.openstreetmap.josm.gui.progress.NullProgressMonitor 17 18 class OsmChangesetContentParserTest { 19 4 import static org.junit.Assert.assertEquals; 5 import static org.junit.Assert.assertNotNull; 6 import static org.junit.Assert.assertTrue; 7 import static org.junit.Assert.fail; 8 9 import java.io.ByteArrayInputStream; 10 import java.io.InputStream; 11 import java.nio.charset.StandardCharsets; 12 import java.util.Arrays; 13 14 import org.junit.Rule; 15 import org.junit.Test; 16 import org.openstreetmap.josm.data.osm.ChangesetDataSet; 17 import org.openstreetmap.josm.data.osm.ChangesetDataSet.ChangesetModificationType; 18 import org.openstreetmap.josm.data.osm.OsmPrimitiveType; 19 import org.openstreetmap.josm.data.osm.SimplePrimitiveId; 20 import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive; 21 import org.openstreetmap.josm.data.osm.history.HistoryRelation; 22 import org.openstreetmap.josm.data.osm.history.HistoryWay; 23 import org.openstreetmap.josm.gui.progress.NullProgressMonitor; 24 import org.openstreetmap.josm.testutils.JOSMTestRules; 25 import org.openstreetmap.josm.tools.Logging; 26 import org.openstreetmap.josm.tools.XmlParsingException; 27 28 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; 29 30 /** 31 * Unit tests of {@link OsmChangesetContentParser}. 32 */ 33 public class OsmChangesetContentParserTest { 34 35 /** 36 * Setup rule 37 */ 38 @Rule 39 @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD") 40 public JOSMTestRules test = new JOSMTestRules(); 41 42 private static void shouldFail(Runnable r) { 43 try { 44 r.run(); 45 fail("should throw exception"); 46 } catch (IllegalArgumentException e) { 47 Logging.trace(e); 48 } 49 } 50 51 /** 52 * Test various constructor invocations 53 */ 20 54 @Test 21 55 public void test_Constructor() { 22 OsmChangesetContentParser parser 23 24 // should be OK 25 parser = new OsmChangesetContentParser(new ByteArrayInputStream("".bytes)) 26 27 shouldFail(IllegalArgumentException) { 28 parser = new OsmChangesetContentParser((String) null) 29 } 30 31 shouldFail(IllegalArgumentException) { 32 parser = new OsmChangesetContentParser((InputStream) null) 33 } 34 } 35 36 37 @Test 38 public void test_parse_arguments() { 39 OsmChangesetContentParser parser 40 41 def String doc = """ 42 <osmChange version="0.6" generator="OpenStreetMap server"> 43 </osmChange> 44 """ 45 46 // should be OK 47 parser = new OsmChangesetContentParser(new ByteArrayInputStream(doc.getBytes(StandardCharsets.UTF_8))) 48 parser.parse null 49 50 // should be OK 51 parser = new OsmChangesetContentParser(new ByteArrayInputStream(doc.getBytes(StandardCharsets.UTF_8))) 52 parser.parse NullProgressMonitor.INSTANCE 53 54 // should be OK 55 parser = new OsmChangesetContentParser(doc) 56 parser.parse null 56 57 // should be OK 58 new OsmChangesetContentParser(new ByteArrayInputStream("".getBytes())); 59 60 shouldFail(() -> { 61 new OsmChangesetContentParser((String) null); 62 }); 63 64 shouldFail(() -> { 65 new OsmChangesetContentParser((InputStream) null); 66 }); 67 } 68 69 /** 70 * Test various invocations of {@link OsmChangesetContentParser#parse} 71 * @throws XmlParsingException never 72 */ 73 @Test 74 public void test_parse_arguments() throws XmlParsingException { 75 OsmChangesetContentParser parser; 76 77 String doc = "<osmChange version=\"0.6\" generator=\"OpenStreetMap server\"></osmChange>"; 78 79 // should be OK 80 parser = new OsmChangesetContentParser(new ByteArrayInputStream(doc.getBytes(StandardCharsets.UTF_8))); 81 parser.parse(null); 82 83 // should be OK 84 parser = new OsmChangesetContentParser(new ByteArrayInputStream(doc.getBytes(StandardCharsets.UTF_8))); 85 parser.parse(NullProgressMonitor.INSTANCE); 86 87 // should be OK 88 parser = new OsmChangesetContentParser(doc); 89 parser.parse(null); 57 90 } 58 91 59 92 /** 60 93 * A simple changeset content document with one created node 61 * 62 */ 63 @Test 64 public void test_OK_OneCreatedNode() { 65 OsmChangesetContentParser parser 66 67 def String doc = """ 68 <osmChange version="0.6" generator="OpenStreetMap server"> 69 <create> 70 <node id="1" version="1" visible="true" changeset="1" lat="1.0" lon="1.0" timestamp="2009-12-22" /> 71 </create> 72 </osmChange> 73 """ 74 75 // should be OK 76 parser = new OsmChangesetContentParser(doc) 77 ChangesetDataSet ds = parser.parse() 78 79 assert ds.size() == 1 80 HistoryOsmPrimitive p = ds.getPrimitive(new SimplePrimitiveId(1, OsmPrimitiveType.NODE)); 81 assert p != null 82 assert p.getId() == 1 83 assert p.getVersion() == 1 84 assert p.getChangesetId() == 1 85 assert p.getTimestamp() != null 86 assert ds.getModificationType(p.getPrimitiveId()) == ChangesetModificationType.CREATED 87 assert ds.isCreated(p.getPrimitiveId()) 94 * @throws XmlParsingException never 95 */ 96 @Test 97 public void test_OK_OneCreatedNode() throws XmlParsingException { 98 OsmChangesetContentParser parser; 99 100 String doc = 101 "<osmChange version=\"0.6\" generator=\"OpenStreetMap server\">\n" + 102 " <create>\n" + 103 " <node id=\"1\" version=\"1\" visible=\"true\" changeset=\"1\" lat=\"1.0\" lon=\"1.0\" timestamp=\"2009-12-22\" />\n" + 104 " </create>\n" + 105 "</osmChange>"; 106 107 // should be OK 108 parser = new OsmChangesetContentParser(doc); 109 ChangesetDataSet ds = parser.parse(); 110 111 assertEquals(1, ds.size()); 112 HistoryOsmPrimitive p = ds.getPrimitive(new SimplePrimitiveId(1, OsmPrimitiveType.NODE)); 113 assertNotNull(p); 114 assertEquals(1, p.getId()); 115 assertEquals(1, p.getVersion()); 116 assertEquals(1, p.getChangesetId()); 117 assertNotNull(p.getTimestamp()); 118 assertEquals(ChangesetModificationType.CREATED, ds.getModificationType(p.getPrimitiveId())); 119 assertTrue(ds.isCreated(p.getPrimitiveId())); 88 120 } 89 121 90 122 /** 91 123 * A simple changeset content document with one updated node 92 * 93 */ 94 @Test 95 public void test_OK_OneUpdatedNode() { 96 OsmChangesetContentParser parser 97 98 def String doc = """ 99 <osmChange version="0.6" generator="OpenStreetMap server"> 100 <modify> 101 <node id="1" version="1" visible="true" changeset="1" lat="1.0" lon="1.0" timestamp="2009-12-22" /> 102 </modify> 103 </osmChange> 104 """ 105 106 // should be OK 107 parser = new OsmChangesetContentParser(doc) 108 ChangesetDataSet ds = parser.parse() 109 110 assert ds.size() == 1 111 HistoryOsmPrimitive p = ds.getPrimitive(new SimplePrimitiveId(1, OsmPrimitiveType.NODE)); 112 assert p != null 113 assert p.getId() == 1 114 assert p.getVersion() == 1 115 assert p.getChangesetId() == 1 116 assert p.getTimestamp() != null 117 assert ds.getModificationType(p.getPrimitiveId()) == ChangesetModificationType.UPDATED 118 assert ds.isUpdated(p.getPrimitiveId()) 124 * @throws XmlParsingException never 125 */ 126 @Test 127 public void test_OK_OneUpdatedNode() throws XmlParsingException { 128 OsmChangesetContentParser parser; 129 130 String doc = 131 "<osmChange version=\"0.6\" generator=\"OpenStreetMap server\">\n" + 132 " <modify>\n" + 133 " <node id=\"1\" version=\"1\" visible=\"true\" changeset=\"1\" lat=\"1.0\" lon=\"1.0\" timestamp=\"2009-12-22\" />\n" + 134 " </modify>\n" + 135 "</osmChange>"; 136 137 // should be OK 138 parser = new OsmChangesetContentParser(doc); 139 ChangesetDataSet ds = parser.parse(); 140 141 assertEquals(1, ds.size()); 142 HistoryOsmPrimitive p = ds.getPrimitive(new SimplePrimitiveId(1, OsmPrimitiveType.NODE)); 143 assertNotNull(p); 144 assertEquals(1, p.getId()); 145 assertEquals(1, p.getVersion()); 146 assertEquals(1, p.getChangesetId()); 147 assertNotNull(p.getTimestamp()); 148 assertEquals(ChangesetModificationType.UPDATED, ds.getModificationType(p.getPrimitiveId())); 149 assertTrue(ds.isUpdated(p.getPrimitiveId())); 119 150 } 120 151 121 152 /** 122 153 * A simple changeset content document with one deleted node 123 * 124 */ 125 @Test 126 public void test_OK_OneDeletedNode() { 127 OsmChangesetContentParser parser 128 129 def String doc = """ 130 <osmChange version="0.6" generator="OpenStreetMap server"> 131 <delete> 132 <node id="1" version="1" visible="true" changeset="1" lat="1.0" lon="1.0" timestamp="2009-12-22" /> 133 </delete> 134 </osmChange> 135 """ 136 137 // should be OK 138 parser = new OsmChangesetContentParser(doc) 139 ChangesetDataSet ds = parser.parse() 140 141 assert ds.size() == 1 142 HistoryOsmPrimitive p = ds.getPrimitive(new SimplePrimitiveId(1, OsmPrimitiveType.NODE)); 143 assert p != null 144 assert p.getId() == 1 145 assert p.getVersion() == 1 146 assert p.getChangesetId() == 1 147 assert p.getTimestamp() != null 148 assert ds.getModificationType(p.getPrimitiveId()) == ChangesetModificationType.DELETED 149 assert ds.isDeleted(p.getPrimitiveId()) 154 * @throws XmlParsingException never 155 */ 156 @Test 157 public void test_OK_OneDeletedNode() throws XmlParsingException { 158 OsmChangesetContentParser parser; 159 160 String doc = 161 "<osmChange version=\"0.6\" generator=\"OpenStreetMap server\">\n" + 162 " <delete>\n" + 163 " <node id=\"1\" version=\"1\" visible=\"true\" changeset=\"1\" lat=\"1.0\" lon=\"1.0\" timestamp=\"2009-12-22\" />\n" + 164 " </delete>\n" + 165 "</osmChange>"; 166 167 // should be OK 168 parser = new OsmChangesetContentParser(doc); 169 ChangesetDataSet ds = parser.parse(); 170 171 assertEquals(1, ds.size()); 172 HistoryOsmPrimitive p = ds.getPrimitive(new SimplePrimitiveId(1, OsmPrimitiveType.NODE)); 173 assertNotNull(p); 174 assertEquals(1, p.getId()); 175 assertEquals(1, p.getVersion()); 176 assertEquals(1, p.getChangesetId()); 177 assertNotNull(p.getTimestamp()); 178 assertEquals(ChangesetModificationType.DELETED, ds.getModificationType(p.getPrimitiveId())); 179 assertTrue(ds.isDeleted(p.getPrimitiveId())); 150 180 } 151 181 152 182 /** 153 183 * A more complex test with a document including nodes, ways, and relations. 154 * 155 */ 156 @Test 157 public void test_OK_ComplexTestCase() { 158 OsmChangesetContentParser parser 159 160 def String doc = """ 161 <osmChange version="0.6" generator="OpenStreetMap server"> 162 <create> 163 <node id="1" version="1" visible="true" changeset="1" lat="1.0" lon="1.0" timestamp="2009-12-22"> 164 <tag k="a.key" v="a.value" /> 165 </node> 166 </create> 167 <modify> 168 <way id="2" version="2" visible="true" changeset="1" timestamp="2009-12-22"> 169 <nd ref="21"/> 170 <nd ref="22"/> 171 </way> 172 </modify> 173 <delete> 174 <relation id="3" version="3" visible="true" changeset="1" timestamp="2009-12-22" /> 175 </delete> 176 </osmChange> 177 """ 178 179 // should be OK 180 parser = new OsmChangesetContentParser(doc) 181 ChangesetDataSet ds = parser.parse() 182 183 assert ds.size() == 3 184 185 HistoryOsmPrimitive p = ds.getPrimitive(new SimplePrimitiveId(1, OsmPrimitiveType.NODE)); 186 assert p != null 187 assert p.getId() == 1 188 assert p.getVersion() == 1 189 assert p.getChangesetId() == 1 190 assert p.getTimestamp() != null 191 assert ds.getModificationType(p.getPrimitiveId()) == ChangesetModificationType.CREATED 192 assert ds.isCreated(p.getPrimitiveId()) 193 assert p.get("a.key") == "a.value" 194 195 HistoryWay w = (HistoryWay)ds.getPrimitive(new SimplePrimitiveId(2, OsmPrimitiveType.WAY)); 196 assert w != null 197 assert w.getId() == 2 198 assert w.getVersion() == 2 199 assert w.getChangesetId() == 1 200 assert w.getTimestamp() != null 201 assert ds.getModificationType(w.getPrimitiveId()) == ChangesetModificationType.UPDATED 202 assert ds.isUpdated(w.getPrimitiveId()) 203 assert w.getNumNodes() == 2 204 assert w.getNodes() == [21,22] 205 206 HistoryRelation r = (HistoryRelation)ds.getPrimitive(new SimplePrimitiveId(3, OsmPrimitiveType.RELATION)); 207 assert r != null 208 assert r.getId() == 3 209 assert r.getVersion() == 3 210 assert r.getChangesetId() == 1 211 assert r.getTimestamp() != null 212 assert ds.getModificationType(r.getPrimitiveId()) == ChangesetModificationType.DELETED 213 assert ds.isDeleted(r.getPrimitiveId()) 184 * @throws XmlParsingException never 185 */ 186 @Test 187 public void test_OK_ComplexTestCase() throws XmlParsingException { 188 OsmChangesetContentParser parser; 189 190 String doc = 191 "<osmChange version=\"0.6\" generator=\"OpenStreetMap server\">\n" + 192 " <create>\n" + 193 " <node id=\"1\" version=\"1\" visible=\"true\" changeset=\"1\" lat=\"1.0\" lon=\"1.0\" timestamp=\"2009-12-22\">\n" + 194 " <tag k=\"a.key\" v=\"a.value\" />\n" + 195 " </node>\n" + 196 " </create>\n" + 197 " <modify>\n" + 198 " <way id=\"2\" version=\"2\" visible=\"true\" changeset=\"1\" timestamp=\"2009-12-22\">\n" + 199 " <nd ref=\"21\"/>\n" + 200 " <nd ref=\"22\"/>\n" + 201 " </way>\n" + 202 " </modify>\n" + 203 " <delete>\n" + 204 " <relation id=\"3\" version=\"3\" visible=\"true\" changeset=\"1\" timestamp=\"2009-12-22\" />\n" + 205 " </delete>\n" + 206 "</osmChange>"; 207 208 // should be OK 209 parser = new OsmChangesetContentParser(doc); 210 ChangesetDataSet ds = parser.parse(); 211 212 assertEquals(3, ds.size()); 213 214 HistoryOsmPrimitive p = ds.getPrimitive(new SimplePrimitiveId(1, OsmPrimitiveType.NODE)); 215 assertNotNull(p); 216 assertEquals(1, p.getId()); 217 assertEquals(1, p.getVersion()); 218 assertEquals(1, p.getChangesetId()); 219 assertNotNull(p.getTimestamp()); 220 assertEquals(ChangesetModificationType.CREATED, ds.getModificationType(p.getPrimitiveId())); 221 assertTrue(ds.isCreated(p.getPrimitiveId())); 222 assertEquals("a.value", p.get("a.key")); 223 224 HistoryWay w = (HistoryWay) ds.getPrimitive(new SimplePrimitiveId(2, OsmPrimitiveType.WAY)); 225 assertNotNull(w); 226 assertEquals(2, w.getId()); 227 assertEquals(2, w.getVersion()); 228 assertEquals(1, w.getChangesetId()); 229 assertNotNull(w.getTimestamp()); 230 assertEquals(ChangesetModificationType.UPDATED, ds.getModificationType(w.getPrimitiveId())); 231 assertTrue(ds.isUpdated(w.getPrimitiveId())); 232 assertEquals(2, w.getNumNodes()); 233 assertEquals(Arrays.asList(21L, 22L), w.getNodes()); 234 235 HistoryRelation r = (HistoryRelation) ds.getPrimitive(new SimplePrimitiveId(3, OsmPrimitiveType.RELATION)); 236 assertNotNull(r); 237 assertEquals(3, r.getId()); 238 assertEquals(3, r.getVersion()); 239 assertEquals(1, r.getChangesetId()); 240 assertNotNull(r.getTimestamp()); 241 assertEquals(ChangesetModificationType.DELETED, ds.getModificationType(r.getPrimitiveId())); 242 assertTrue(ds.isDeleted(r.getPrimitiveId())); 214 243 } 215 244 }
Note:
See TracChangeset
for help on using the changeset viewer.