source: josm/trunk/test/unit/org/openstreetmap/josm/io/ParseWithChangesetReaderTest.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: 5.2 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.io;
3
4import static groovy.test.GroovyAssert.shouldFail
5import static org.junit.Assert.*
6
7import java.nio.charset.StandardCharsets
8
9import org.junit.Test
10import org.openstreetmap.josm.data.osm.DataSet
11import org.openstreetmap.josm.data.osm.Node
12import org.openstreetmap.josm.data.osm.OsmPrimitiveType
13
14class ParseWithChangesetReaderTest {
15
16    private DataSet getDataSet(String doc) {
17        InputStream is = new ByteArrayInputStream(doc.getBytes(StandardCharsets.UTF_8))
18        DataSet ds = new OsmReader().parseDataSet(is, null)
19        is.close()
20        return ds
21    }
22
23    /**
24     * A new node with a changeset id. Ignore it.
25     */
26    @Test
27    public void test_1() {
28        String doc = """\
29         <osm version="0.6">
30        <node id="-1" lat="0.0" lon="0.0" changeset="1">
31            <tag k="external-id" v="-1"/>
32        </node>
33        </osm>
34        """
35
36        DataSet ds = getDataSet(doc)
37        Node n = ds.nodes.find {it.get("external-id") == "-1"}
38        assert n != null
39        assert n.changesetId == 0
40    }
41
42    /**
43     * A new node with an invalid changeset id. Ignore it.
44     */
45    @Test
46    public void test_11() {
47        String doc = """\
48         <osm version="0.6">
49        <node id="-1" lat="0.0" lon="0.0" changeset="0">
50            <tag k="external-id" v="-1"/>
51        </node>
52        </osm>
53        """
54
55        DataSet ds = getDataSet(doc)
56        Node n = ds.nodes.find {it.get("external-id") == "-1"}
57        assert n != null
58        assert n.changesetId == 0
59    }
60
61    /**
62     * A new node with an invalid changeset id. Ignore it.
63     */
64    @Test
65    public void test_12() {
66        String doc = """\
67         <osm version="0.6">
68        <node id="-1" lat="0.0" lon="0.0" changeset="-1">
69            <tag k="external-id" v="-1"/>
70        </node>
71        </osm>
72        """
73
74        DataSet ds = getDataSet(doc)
75        Node n = ds.nodes.find {it.get("external-id") == "-1"}
76        assert n != null
77        assert n.changesetId == 0
78    }
79
80    /**
81     * A new node with an invalid changeset id. Ignore it.
82     */
83    @Test
84    public void test_13() {
85        String doc = """\
86         <osm version="0.6">
87        <node id="-1" lat="0.0" lon="0.0" changeset="aaa">
88            <tag k="external-id" v="-1"/>
89        </node>
90        </osm>
91        """
92
93        DataSet ds = getDataSet(doc)
94        Node n = ds.nodes.find {it.get("external-id") == "-1"}
95        assert n != null
96        assert n.changesetId == 0
97    }
98
99    /**
100     * A new node with a missing changeset id. That's fine. The changeset id
101     * is reset to 0.
102     */
103    @Test
104    public void test_14() {
105        String doc = """\
106         <osm version="0.6">
107        <node id="-1" lat="0.0" lon="0.0" >
108            <tag k="external-id" v="-1"/>
109        </node>
110        </osm>
111        """
112
113        DataSet ds = getDataSet(doc)
114        Node n = ds.nodes.find {it.get("external-id") == "-1"}
115        assert n != null
116        assert n.changesetId == 0
117    }
118
119
120    /**
121     * An existing node with a missing changeset id. That's fine. The changeset id
122     * is reset to 0.
123     */
124    @Test
125    public void test_2() {
126        String doc = """\
127         <osm version="0.6">
128        <node id="1" lat="0.0" lon="0.0" version="1"/>
129        </osm>
130        """
131
132        DataSet ds = getDataSet(doc)
133        Node n = ds.getPrimitiveById(1, OsmPrimitiveType.NODE)
134        assert n != null
135        assert n.uniqueId == 1
136        assert n.changesetId == 0
137    }
138
139    /**
140     * An existing node with a valid changeset id id. That's fine. The changeset id
141     * is applied.
142     */
143    @Test
144    public void test_3() {
145        String doc = """\
146         <osm version="0.6">
147        <node id="1" lat="0.0" lon="0.0" version="1" changeset="4"/>
148        </osm>
149        """
150
151        DataSet ds = getDataSet(doc)
152        Node n = ds.getPrimitiveById(1, OsmPrimitiveType.NODE)
153        assert n != null
154        assert n.uniqueId == 1
155        assert n.changesetId == 4
156    }
157
158    /**
159     * An existing node with an invalid changeset id. That's a problem. An exception
160     * is thrown.
161     */
162    @Test
163    public void test_4() {
164        String doc = """\
165         <osm version="0.6">
166        <node id="1" lat="0.0" lon="0.0" version="1" changeset="-1"/>
167        </osm>
168        """
169
170        shouldFail(IllegalDataException) {
171            DataSet ds = getDataSet(doc)
172        }
173    }
174    /**
175     * An existing node with an invalid changeset id. That's a problem. An exception
176     * is thrown.
177     */
178    @Test
179    public void test_5() {
180        String doc = """\
181         <osm version="0.6">
182        <node id="1" lat="0.0" lon="0.0" version="1" changeset="0"/>
183        </osm>
184        """
185
186        shouldFail(IllegalDataException) {
187            DataSet ds = getDataSet(doc)
188        }
189    }
190    /**
191     * An existing node with an invalid changeset id. That's a problem. An exception
192     * is thrown.
193     */
194    @Test
195    public void test_6() {
196        String doc = """\
197             <osm version="0.6">
198            <node id="1" lat="0.0" lon="0.0" version="1" changeset="abc"/>
199            </osm>
200            """
201
202        shouldFail(IllegalDataException) {
203            DataSet ds = getDataSet(doc)
204        }
205    }
206}
Note: See TracBrowser for help on using the repository browser.