source: josm/trunk/test/unit/org/openstreetmap/josm/io/OsmChangeBuilderTest.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: 5.7 KB
RevLine 
[7938]1package org.openstreetmap.josm.io;
2
[14019]3import static groovy.test.GroovyAssert.shouldFail
[7938]4import static org.junit.Assert.*
5
6import org.junit.Test
7import org.openstreetmap.josm.data.coor.LatLon
8import org.openstreetmap.josm.data.osm.Changeset
9import org.openstreetmap.josm.data.osm.Node
10
11class OsmChangeBuilderTest {
12
[8510]13 /**
14 * Test various constructor invocations
15 */
16 @Test
17 public void testConstructor() {
18 def Changeset cs = new Changeset(1)
19 // should not fail
20 OsmChangeBuilder builder = new OsmChangeBuilder(cs)
[7938]21
[8510]22 // should not fail either - null allowed
23 builder = new OsmChangeBuilder(null)
[7938]24
[8510]25 // should not fail
26 builder = new OsmChangeBuilder(cs, "0.5")
[7938]27
[8510]28 builder = new OsmChangeBuilder(cs, null)
[7938]29
[8510]30 builder = new OsmChangeBuilder(null, null)
31 }
[7938]32
[8510]33 /**
34 * Test the sequence of method calls. Should throw IllegalStateException if
35 * the protocol start(),append()*, finish() is violated.
36 */
37 @Test
38 public void testSequenceOfMethodCalls() {
39 def Changeset cs = new Changeset(1)
40 OsmChangeBuilder builder = new OsmChangeBuilder(cs)
[7938]41
[8510]42 // should be OK
43 builder.start()
[9214]44 Node n = new Node(LatLon.ZERO)
[8510]45 builder.append n
46 builder.finish()
[7938]47
[8510]48 shouldFail(IllegalStateException) {
49 builder = new OsmChangeBuilder(cs)
50 builder.append n
51 }
[7938]52
[8510]53 shouldFail(IllegalStateException) {
54 builder = new OsmChangeBuilder(cs)
55 builder.append([n])
56 }
[7938]57
[8510]58 shouldFail(IllegalStateException) {
59 builder = new OsmChangeBuilder(cs)
60 builder.finish()
61 }
[7938]62
[8510]63 shouldFail(IllegalStateException) {
64 builder = new OsmChangeBuilder(cs)
65 builder.start()
66 builder.start()
67 }
68 }
[7938]69
[8510]70 @Test
71 public void testDocumentWithNewNode() {
72 def Changeset cs = new Changeset(1)
73 OsmChangeBuilder builder = new OsmChangeBuilder(cs)
[9214]74 Node n = new Node(LatLon.ZERO)
[7938]75
[8510]76 builder.start()
77 builder.append n
78 builder.finish()
[7938]79
[8510]80 def doc = new XmlParser().parseText(builder.document)
81 assert doc.@version == "0.6"
82 assert doc.@generator == "JOSM"
83 assert doc.name() == "osmChange"
84 assert doc.children().size() == 1
85 def create = doc.create
86 assert create != null
[7938]87
[8510]88 assert create.size() == 1
89 def nodes = create[0].node
90 assert nodes.size() == 1
91 def node = nodes[0]
92 assert node.@id == n.uniqueId.toString()
93 assert node.@lat != null
94 assert node.@lon != null
95 assert node.@changeset == cs.id.toString()
96 }
[7938]97
[8510]98 /**
99 * Test building a document with a modified node
100 */
101 @Test
102 public void testDocumentWithModifiedNode() {
103 def Changeset cs = new Changeset(1)
104 OsmChangeBuilder builder = new OsmChangeBuilder(cs)
105 Node n = new Node(1)
[9214]106 n.coor = LatLon.ZERO
[8510]107 n.incomplete = false
108 n.modified = true
[7938]109
[8510]110 builder.start()
111 builder.append n
112 builder.finish()
[7938]113
[8510]114 def doc = new XmlParser().parseText(builder.document)
115 assert doc.@version == "0.6"
116 assert doc.@generator == "JOSM"
117 assert doc.name() == "osmChange"
118 assert doc.children().size() == 1
119 def modify = doc.modify
120 assert modify != null
[7938]121
[8510]122 assert modify.size() == 1
123 def nodes = modify[0].node
124 assert nodes.size() == 1
125 def node = nodes[0]
126 assert node.@id == n.uniqueId.toString()
127 assert node.@lat != null
128 assert node.@lon != null
129 assert node.@changeset == cs.id.toString()
130 }
[7938]131
[8510]132 /**
133 * Test building a document with a deleted node
134 */
135 @Test
136 public void testDocumentWithDeletedNode() {
137 def Changeset cs = new Changeset(1)
138 OsmChangeBuilder builder = new OsmChangeBuilder(cs)
139 Node n = new Node(1)
[9214]140 n.coor = LatLon.ZERO
[8510]141 n.incomplete = false
142 n.deleted = true
[7938]143
[8510]144 builder.start()
145 builder.append n
146 builder.finish()
[7938]147
[8510]148 def doc = new XmlParser().parseText(builder.document)
149 assert doc.@version == "0.6"
150 assert doc.@generator == "JOSM"
151 assert doc.name() == "osmChange"
152 assert doc.children().size() == 1
153 def delete = doc.delete
154 assert delete != null
[7938]155
[8510]156 assert delete.size() == 1
157 def nodes = delete[0].node
158 assert nodes.size() == 1
159 def node = nodes[0]
160 assert node.@id == n.uniqueId.toString()
161 assert node.@lat == null
162 assert node.@lon == null
163 assert node.@changeset == cs.id.toString()
164 }
[7938]165
[8510]166 /**
167 * Test building a mixed document.
168 *
169 */
170 @Test
171 public void testMixed() {
172 def Changeset cs = new Changeset(1)
173 OsmChangeBuilder builder = new OsmChangeBuilder(cs)
174 Node n1 = new Node(1)
[9214]175 n1.coor = LatLon.ZERO
[8510]176 n1.incomplete = false
177 n1.deleted = true
[7938]178
[9214]179 Node n2 = new Node(LatLon.ZERO)
[7938]180
[8510]181 Node n3 = new Node(2)
[9214]182 n3.coor = LatLon.ZERO
[8510]183 n3.incomplete = false
184 n3.modified = true
[7938]185
[8510]186 builder.start()
187 builder.append([n1,n2,n3])
188 builder.finish()
[7938]189
[8510]190 def doc = new XmlParser().parseText(builder.document)
[7938]191
[8510]192 assert doc.children().size() == 3
193 assert doc.children()[0].name() == "delete"
194 assert doc.children()[1].name() == "create"
195 assert doc.children()[2].name() == "modify"
[7938]196
[8510]197 def node = doc.children()[0].node[0]
198 assert node.@id == n1.uniqueId.toString()
[7938]199
[8510]200 node = doc.children()[1].node[0]
201 assert node.@id == n2.uniqueId.toString()
[7938]202
[8510]203 node = doc.children()[2].node[0]
204 assert node.@id == n3.uniqueId.toString()
205 }
[2605]206}
Note: See TracBrowser for help on using the repository browser.