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, 3 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.