source: josm/trunk/test/unit/org/openstreetmap/josm/data/osm/APIDataSetTest.java@ 4541

Last change on this file since 4541 was 3577, checked in by jttt, 14 years ago

Fix tests

File size: 5.2 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.data.osm;
3
4import static org.junit.Assert.assertEquals;
5import static org.junit.Assert.fail;
6
7import java.util.List;
8
9import org.junit.BeforeClass;
10import org.junit.Test;
11import org.openstreetmap.josm.Main;
12import org.openstreetmap.josm.actions.upload.CyclicUploadDependencyException;
13import org.openstreetmap.josm.data.APIDataSet;
14import org.openstreetmap.josm.data.Preferences;
15
16
17public class APIDataSetTest {
18
19 @BeforeClass
20 public static void init() {
21 Main.pref = new Preferences();
22 }
23
24 @Test
25 public void oneNewRelationOnly() {
26 Relation r = new Relation();
27 r.put("name", "r1");
28 DataSet ds = new DataSet();
29 ds.addPrimitive(r);
30
31 APIDataSet apiDataSet = new APIDataSet();
32 apiDataSet.init(ds);
33 try {
34 apiDataSet.adjustRelationUploadOrder();
35 } catch(CyclicUploadDependencyException e) {
36 fail("unexpected exception:" + e);
37 }
38 List<OsmPrimitive> toAdd = apiDataSet.getPrimitivesToAdd();
39
40 assertEquals(1, toAdd.size());
41 assertEquals(r, toAdd.get(0));
42 }
43
44 @Test
45 public void newParentChildPair() {
46 DataSet ds = new DataSet();
47 Relation r1 = new Relation();
48 ds.addPrimitive(r1);
49 r1.put("name", "r1");
50
51 Relation r2 = new Relation();
52 ds.addPrimitive(r2);
53 r2.put("name", "r2");
54
55 r1.addMember(new RelationMember("", r2));
56
57 APIDataSet apiDataSet = new APIDataSet();
58 apiDataSet.init(ds);
59 try {
60 apiDataSet.adjustRelationUploadOrder();
61 } catch(CyclicUploadDependencyException e) {
62 fail("unexpected exception:" + e);
63 }
64 List<OsmPrimitive> toAdd = apiDataSet.getPrimitivesToAdd();
65
66 assertEquals(2, toAdd.size());
67 assertEquals(r2, toAdd.get(0)); // child first
68 assertEquals(r1, toAdd.get(1)); // ... then the parent
69 }
70
71 @Test
72 public void oneExistingAndThreNewInAChain() {
73 DataSet ds = new DataSet();
74
75 Relation r1 = new Relation();
76 ds.addPrimitive(r1);
77 r1.put("name", "r1");
78
79 Relation r2 = new Relation();
80 ds.addPrimitive(r2);
81 r2.put("name", "r2");
82
83 Relation r3 = new Relation();
84 ds.addPrimitive(r3);
85 r3.put("name", "r3");
86
87 Relation r4 = new Relation(1, 1);
88 ds.addPrimitive(r4);
89 r4.put("name", "r4");
90 r4.setModified(true);
91
92 r1.addMember(new RelationMember("", r2));
93 r2.addMember(new RelationMember("", r3));
94
95 APIDataSet apiDataSet = new APIDataSet();
96 apiDataSet.init(ds);
97 try {
98 apiDataSet.adjustRelationUploadOrder();
99 } catch(CyclicUploadDependencyException e) {
100 fail("unexpected exception:" + e);
101 }
102 List<OsmPrimitive> toAdd = apiDataSet.getPrimitivesToAdd();
103
104 assertEquals(3, toAdd.size());
105 assertEquals(r3, toAdd.get(0));
106 assertEquals(r2, toAdd.get(1));
107 assertEquals(r1, toAdd.get(2));
108
109 List<OsmPrimitive> toUpdate = apiDataSet.getPrimitivesToUpdate();
110 assertEquals(1, toUpdate.size());
111 assertEquals(r4, toUpdate.get(0));
112 }
113
114 @Test
115 public void oneParentTwoNewChildren() {
116 DataSet ds = new DataSet();
117 Relation r1 = new Relation();
118 ds.addPrimitive(r1);
119 r1.put("name", "r1");
120
121 Relation r2 = new Relation();
122 ds.addPrimitive(r2);
123 r2.put("name", "r2");
124
125 Relation r3 = new Relation();
126 ds.addPrimitive(r3);
127 r3.put("name", "r3");
128
129 r1.addMember(new RelationMember("", r2));
130 r1.addMember(new RelationMember("", r3));
131
132
133 APIDataSet apiDataSet = new APIDataSet();
134 apiDataSet.init(ds);
135 try {
136 apiDataSet.adjustRelationUploadOrder();
137 } catch(CyclicUploadDependencyException e) {
138 fail("unexpected exception:" + e);
139 }
140 List<OsmPrimitive> toAdd = apiDataSet.getPrimitivesToAdd();
141
142 assertEquals(3, toAdd.size());
143 assertEquals(true, toAdd.indexOf(r2) < toAdd.indexOf(r1));
144 assertEquals(true, toAdd.indexOf(r3) < toAdd.indexOf(r1));
145 }
146
147 @Test
148 public void oneCycle() {
149 DataSet ds = new DataSet();
150 Relation r1 = new Relation();
151 ds.addPrimitive(r1);
152 r1.put("name", "r1");
153
154 Relation r2 = new Relation();
155 ds.addPrimitive(r2);
156 r2.put("name", "r2");
157
158 Relation r3 = new Relation();
159 ds.addPrimitive(r3);
160 r3.put("name", "r3");
161
162 r1.addMember(new RelationMember("", r2));
163 r2.addMember(new RelationMember("", r3));
164 r3.addMember(new RelationMember("", r1));
165
166 APIDataSet apiDataSet = new APIDataSet();
167 apiDataSet.init(ds);
168 try {
169 apiDataSet.adjustRelationUploadOrder();
170 fail("expected cyclic upload dependency exception not thrown");
171 } catch(CyclicUploadDependencyException e) {
172 System.out.println(e);
173 }
174 }
175}
Note: See TracBrowser for help on using the repository browser.