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

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

update to Groovy 2.5.0 and Eclipse Photon (4.8.0)

  • Property svn:eol-style set to native
File size: 6.3 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 org.junit.Test
8import org.openstreetmap.josm.data.coor.LatLon
9import org.openstreetmap.josm.data.osm.Changeset
10import org.openstreetmap.josm.data.osm.Node
11import org.openstreetmap.josm.data.osm.OsmPrimitiveType
12import org.openstreetmap.josm.data.osm.Relation
13import org.openstreetmap.josm.data.osm.SimplePrimitiveId
14import org.openstreetmap.josm.data.osm.Way
15import org.openstreetmap.josm.gui.progress.NullProgressMonitor
16import org.openstreetmap.josm.tools.XmlParsingException
17
18class DiffResultProcessorTest {
19
20    @Test
21    public void testConstructor() {
22        Node n = new Node(1)
23        // these calls should not fail
24        //
25        new DiffResultProcessor(null)
26        new DiffResultProcessor([])
27        new DiffResultProcessor([n])
28    }
29
30    @Test
31    public void testParse_NOK_Cases() {
32        def DiffResultProcessor processor  = new DiffResultProcessor([])
33
34        shouldFail(IllegalArgumentException) {
35            processor.parse null, NullProgressMonitor.INSTANCE
36        }
37
38        shouldFail(XmlParsingException) {
39            processor.parse "", NullProgressMonitor.INSTANCE
40        }
41
42        shouldFail(XmlParsingException) {
43            processor.parse "<x></x>", NullProgressMonitor.INSTANCE
44        }
45    }
46
47    @Test
48    public void testParse_OK_Cases() {
49        def DiffResultProcessor processor  = new DiffResultProcessor([])
50        String doc = """\
51        <diffResult version="0.6" generator="Test Data">
52            <node old_id="-1" new_id="1" new_version="1"/>
53            <way old_id="-2" new_id="2" new_version="1"/>
54            <relation old_id="-3" new_id="3" new_version="1"/>
55        </diffResult>
56        """
57
58        processor.parse doc, null
59        assert processor.@diffResults.size() == 3
60        SimplePrimitiveId id = new SimplePrimitiveId(-1, OsmPrimitiveType.NODE)
61        def entry = processor.@diffResults[id]
62        assert entry != null
63        assert entry.newId == 1
64        assert entry.newVersion == 1
65
66        id = new SimplePrimitiveId(-2, OsmPrimitiveType.WAY)
67        entry = processor.@diffResults[id]
68        assert entry != null
69        assert entry.newId == 2
70        assert entry.newVersion == 1
71
72        id = new SimplePrimitiveId(-3, OsmPrimitiveType.RELATION)
73        entry = processor.@diffResults[id]
74        assert entry != null
75        assert entry.newId == 3
76        assert entry.newVersion == 1
77    }
78
79    @Test
80    public void testPostProcess_Invocation_Variants() {
81        def DiffResultProcessor processor  = new DiffResultProcessor([])
82        String doc = """\
83        <diffResult version="0.6" generator="Test Data">
84            <node old_id="-1" new_id="1" new_version="1"/>
85            <way old_id="-2" new_id="2" new_version="1"/>
86            <relation old_id="-3" new_id="3" new_version="1"/>
87        </diffResult>
88        """
89
90        processor.parse doc, null
91
92        // should all be ok
93        //
94        processor.postProcess null, null
95        processor.postProcess null, NullProgressMonitor.INSTANCE
96        processor.postProcess new Changeset(1), null
97        processor.postProcess new Changeset(1), NullProgressMonitor.INSTANCE
98    }
99
100    @Test
101    public void testPostProcess_OK() {
102
103        Node n = new Node()
104        Way w = new Way()
105        Relation r = new Relation()
106
107        String doc = """\
108            <diffResult version="0.6" generator="Test Data">
109                <node old_id="${n.uniqueId}" new_id="1" new_version="10"/>
110                <way old_id="${w.uniqueId}" new_id="2" new_version="11"/>
111                <relation old_id="${r.uniqueId}" new_id="3" new_version="12"/>
112            </diffResult>
113            """
114
115        def DiffResultProcessor processor  = new DiffResultProcessor([n,w,r])
116        processor.parse doc, null
117        def processed = processor.postProcess(new Changeset(5), null)
118        assert processed.size() == 3
119        n = processed.find {it.uniqueId == 1}
120        assert n.changesetId == 5
121        assert n.version == 10
122
123        w = processed.find {it.uniqueId == 2}
124        assert w.changesetId == 5
125        assert w.version == 11
126
127        r = processed.find {it.uniqueId == 3}
128        assert r.changesetId == 5
129        assert r.version == 12
130    }
131
132    @Test
133    public void testPostProcess_ForCreatedElement() {
134
135        Node n = new Node()
136        String doc = """\
137            <diffResult version="0.6" generator="Test Data">
138                <node old_id="${n.uniqueId}" new_id="1" new_version="1"/>
139            </diffResult>
140            """
141
142        def DiffResultProcessor processor  = new DiffResultProcessor([n])
143        processor.parse doc, null
144        def processed = processor.postProcess(new Changeset(5), null)
145        assert processed.size() == 1
146        n = processed.find {it.uniqueId == 1}
147        assert n.changesetId == 5
148        assert n.version == 1
149    }
150
151    @Test
152    public void testPostProcess_ForModifiedElement() {
153
154        Node n = new Node(1)
155        n.coor = new LatLon(1,1)
156        n.setOsmId 1, 2
157        n.modified = true
158        String doc = """\
159            <diffResult version="0.6" generator="Test Data">
160                <node old_id="${n.uniqueId}" new_id="${n.uniqueId}" new_version="3"/>
161            </diffResult>
162            """
163
164        def DiffResultProcessor processor  = new DiffResultProcessor([n])
165        processor.parse doc, null
166        def processed = processor.postProcess(new Changeset(5), null)
167        assert processed.size() == 1
168        n = processed.find {it.uniqueId == 1}
169        assert n.changesetId == 5
170        assert n.version == 3
171    }
172
173    @Test
174    public void testPostProcess_ForDeletedElement() {
175
176        Node n = new Node(1)
177        n.coor = new LatLon(1,1)
178        n.setOsmId 1, 2
179        n.deleted = true
180        String doc = """\
181            <diffResult version="0.6" generator="Test Data">
182                <node old_id="${n.uniqueId}"/>
183            </diffResult>
184            """
185
186        def DiffResultProcessor processor  = new DiffResultProcessor([n])
187        processor.parse doc, null
188        def processed = processor.postProcess(new Changeset(5), null)
189        assert processed.size() == 1
190        n = processed.find {it.uniqueId == 1}
191        assert n.changesetId == 5
192        assert n.version == 2
193    }
194}
Note: See TracBrowser for help on using the repository browser.