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, 6 years 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.