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

Last change on this file since 2605 was 2605, checked in by Gubaer, 14 years ago

Unit tests for r2604

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