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

Last change on this file since 14019 was 14019, checked in by Don-vip, 6 years ago

update to Groovy 2.5.0 and Eclipse Photon (4.8.0)

  • Property svn:eol-style set to native
File size: 7.3 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.io;
3
4import static groovy.test.GroovyAssert.shouldFail
5
6import java.nio.charset.StandardCharsets
7
8import org.junit.Test
9import org.openstreetmap.josm.data.osm.ChangesetDataSet
10import org.openstreetmap.josm.data.osm.OsmPrimitiveType
11import org.openstreetmap.josm.data.osm.SimplePrimitiveId
12import org.openstreetmap.josm.data.osm.ChangesetDataSet.ChangesetModificationType
13import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive
14import org.openstreetmap.josm.data.osm.history.HistoryRelation
15import org.openstreetmap.josm.data.osm.history.HistoryWay
16import org.openstreetmap.josm.gui.progress.NullProgressMonitor
17
18class OsmChangesetContentParserTest {
19
20 @Test
21 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
57 }
58
59 /**
60 * 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())
88 }
89
90 /**
91 * 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())
119 }
120
121 /**
122 * 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())
150 }
151
152 /**
153 * 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())
214 }
215}
Note: See TracBrowser for help on using the repository browser.