source: josm/trunk/test/unit/org/openstreetmap/josm/io/OsmChangesetContentParserTest.groovy@ 8193

Last change on this file since 8193 was 7938, checked in by bastiK, 9 years ago

add more subversion property svn:eol=native

  • Property svn:eol-style set to native
File size: 6.8 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.io;
3
4import org.junit.Test
5
6import java.nio.charset.StandardCharsets
7
8import org.openstreetmap.josm.data.osm.ChangesetDataSet;
9import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
10import org.openstreetmap.josm.data.osm.SimplePrimitiveId;
11import org.openstreetmap.josm.data.osm.ChangesetDataSet.ChangesetModificationType;
12import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive;
13import org.openstreetmap.josm.data.osm.history.HistoryRelation;
14import org.openstreetmap.josm.data.osm.history.HistoryWay;
15import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
16
17
18class OsmChangesetContentParserTest {
19 final shouldFail = new GroovyTestCase().&shouldFail
20
21 @Test
22 public void test_Constructor() {
23 OsmChangesetContentParser parser
24
25 // should be OK
26 parser = new OsmChangesetContentParser(new ByteArrayInputStream("".bytes))
27
28 shouldFail(IllegalArgumentException) {
29 parser = new OsmChangesetContentParser((String) null)
30 }
31
32 shouldFail(IllegalArgumentException) {
33 parser = new OsmChangesetContentParser((InputStream) null)
34 }
35 }
36
37
38 @Test
39 public void test_parse_arguments() {
40 OsmChangesetContentParser parser
41
42 def String doc = """
43 <osmChange version="0.6" generator="OpenStreetMap server">
44 </osmChange>
45 """
46
47 // should be OK
48 parser = new OsmChangesetContentParser(new ByteArrayInputStream(doc.getBytes(StandardCharsets.UTF_8)))
49 parser.parse null
50
51 // should be OK
52 parser = new OsmChangesetContentParser(new ByteArrayInputStream(doc.getBytes(StandardCharsets.UTF_8)))
53 parser.parse NullProgressMonitor.INSTANCE
54
55 // should be OK
56 parser = new OsmChangesetContentParser(doc)
57 parser.parse null
58 }
59
60 /**
61 * A simple changeset content document with one created node
62 *
63 */
64 @Test
65 public void test_OK_OneCreatedNode() {
66 OsmChangesetContentParser parser
67
68 def String doc = """
69 <osmChange version="0.6" generator="OpenStreetMap server">
70 <create>
71 <node id="1" version="1" visible="true" changeset="1" lat="1.0" lon="1.0" timestamp="2009-12-22" />
72 </create>
73 </osmChange>
74 """
75
76 // should be OK
77 parser = new OsmChangesetContentParser(doc)
78 ChangesetDataSet ds = parser.parse()
79
80 assert ds.size() == 1
81 HistoryOsmPrimitive p = ds.getPrimitive(new SimplePrimitiveId(1, OsmPrimitiveType.NODE));
82 assert p != null
83 assert p.getId() == 1
84 assert p.getVersion() == 1
85 assert p.getChangesetId() == 1
86 assert p.getTimestamp() != null
87 assert ds.getModificationType(p.getPrimitiveId()) == ChangesetModificationType.CREATED
88 assert ds.isCreated(p.getPrimitiveId())
89 }
90
91 /**
92 * A simple changeset content document with one updated node
93 *
94 */
95 @Test
96 public void test_OK_OneUpdatedNode() {
97 OsmChangesetContentParser parser
98
99 def String doc = """
100 <osmChange version="0.6" generator="OpenStreetMap server">
101 <modify>
102 <node id="1" version="1" visible="true" changeset="1" lat="1.0" lon="1.0" timestamp="2009-12-22" />
103 </modify>
104 </osmChange>
105 """
106
107 // should be OK
108 parser = new OsmChangesetContentParser(doc)
109 ChangesetDataSet ds = parser.parse()
110
111 assert ds.size() == 1
112 HistoryOsmPrimitive p = ds.getPrimitive(new SimplePrimitiveId(1, OsmPrimitiveType.NODE));
113 assert p != null
114 assert p.getId() == 1
115 assert p.getVersion() == 1
116 assert p.getChangesetId() == 1
117 assert p.getTimestamp() != null
118 assert ds.getModificationType(p.getPrimitiveId()) == ChangesetModificationType.UPDATED
119 assert ds.isUpdated(p.getPrimitiveId())
120 }
121
122 /**
123 * A simple changeset content document with one deleted node
124 *
125 */
126 @Test
127 public void test_OK_OneDeletedNode() {
128 OsmChangesetContentParser parser
129
130 def String doc = """
131 <osmChange version="0.6" generator="OpenStreetMap server">
132 <delete>
133 <node id="1" version="1" visible="true" changeset="1" lat="1.0" lon="1.0" timestamp="2009-12-22" />
134 </delete>
135 </osmChange>
136 """
137
138 // should be OK
139 parser = new OsmChangesetContentParser(doc)
140 ChangesetDataSet ds = parser.parse()
141
142 assert ds.size() == 1
143 HistoryOsmPrimitive p = ds.getPrimitive(new SimplePrimitiveId(1, OsmPrimitiveType.NODE));
144 assert p != null
145 assert p.getId() == 1
146 assert p.getVersion() == 1
147 assert p.getChangesetId() == 1
148 assert p.getTimestamp() != null
149 assert ds.getModificationType(p.getPrimitiveId()) == ChangesetModificationType.DELETED
150 assert ds.isDeleted(p.getPrimitiveId())
151 }
152
153 /**
154 * A more complex test with a document including nodes, ways, and relations.
155 *
156 */
157 @Test
158 public void test_OK_ComplexTestCase() {
159 OsmChangesetContentParser parser
160
161 def String doc = """
162 <osmChange version="0.6" generator="OpenStreetMap server">
163 <create>
164 <node id="1" version="1" visible="true" changeset="1" lat="1.0" lon="1.0" timestamp="2009-12-22">
165 <tag k="a.key" v="a.value" />
166 </node>
167 </create>
168 <modify>
169 <way id="2" version="2" visible="true" changeset="1" timestamp="2009-12-22">
170 <nd ref="21"/>
171 <nd ref="22"/>
172 </way>
173 </modify>
174 <delete>
175 <relation id="3" version="3" visible="true" changeset="1" timestamp="2009-12-22" />
176 </delete>
177 </osmChange>
178 """
179
180 // should be OK
181 parser = new OsmChangesetContentParser(doc)
182 ChangesetDataSet ds = parser.parse()
183
184 assert ds.size() == 3
185
186 HistoryOsmPrimitive p = ds.getPrimitive(new SimplePrimitiveId(1, OsmPrimitiveType.NODE));
187 assert p != null
188 assert p.getId() == 1
189 assert p.getVersion() == 1
190 assert p.getChangesetId() == 1
191 assert p.getTimestamp() != null
192 assert ds.getModificationType(p.getPrimitiveId()) == ChangesetModificationType.CREATED
193 assert ds.isCreated(p.getPrimitiveId())
194 assert p.get("a.key") == "a.value"
195
196 HistoryWay w = (HistoryWay)ds.getPrimitive(new SimplePrimitiveId(2, OsmPrimitiveType.WAY));
197 assert w != null
198 assert w.getId() == 2
199 assert w.getVersion() == 2
200 assert w.getChangesetId() == 1
201 assert w.getTimestamp() != null
202 assert ds.getModificationType(w.getPrimitiveId()) == ChangesetModificationType.UPDATED
203 assert ds.isUpdated(w.getPrimitiveId())
204 assert w.getNumNodes() == 2
205 assert w.getNodes() == [21,22]
206
207 HistoryRelation r = (HistoryRelation)ds.getPrimitive(new SimplePrimitiveId(3, OsmPrimitiveType.RELATION));
208 assert r != null
209 assert r.getId() == 3
210 assert r.getVersion() == 3
211 assert r.getChangesetId() == 1
212 assert r.getTimestamp() != null
213 assert ds.getModificationType(r.getPrimitiveId()) == ChangesetModificationType.DELETED
214 assert ds.isDeleted(r.getPrimitiveId())
215 }
216}
Note: See TracBrowser for help on using the repository browser.