source: josm/trunk/test/unit/org/openstreetmap/josm/io/ParseWithChangesetReaderTest.groovy @ 11241

Last change on this file since 11241 was 8510, checked in by Don-vip, 5 years ago

checkstyle: enable relevant whitespace checks and fix them

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