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

Last change on this file since 7938 was 7938, checked in by bastiK, 5 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.