source: josm/trunk/test/unit/org/openstreetmap/josm/data/osm/OsmPrimitiveTest.java@ 3459

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

Fix tests

  • Property svn:mime-type set to text/plain
File size: 4.1 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.data.osm;
3
4import java.util.Arrays;
5import java.util.HashSet;
6
7import org.junit.Assert;
8import org.junit.BeforeClass;
9import org.junit.Test;
10import org.openstreetmap.josm.Main;
11import org.openstreetmap.josm.data.coor.LatLon;
12import org.openstreetmap.josm.data.projection.Mercator;
13
14public class OsmPrimitiveTest {
15
16 private void compareReferrers(OsmPrimitive actual, OsmPrimitive... expected) {
17 Assert.assertEquals(new HashSet<OsmPrimitive>(Arrays.asList(expected)),
18 new HashSet<OsmPrimitive>(actual.getReferrers()));
19 }
20
21 private DataSet dataSet = new DataSet();
22
23 @BeforeClass
24 public static void setUp() {
25 Main.proj = new Mercator();
26 }
27
28 @Test
29 public void simpleReferrersTest() {
30 Node n1 = new Node(new LatLon(0.0, 0.0));
31 Way w1 = new Way();
32 w1.addNode(n1);
33 dataSet.addPrimitive(n1);
34 dataSet.addPrimitive(w1);
35 compareReferrers(n1, w1);
36 }
37
38 @Test
39 public void addAndRemoveReferrer() {
40 Node n1 = new Node(new LatLon(0.0, 0.0));
41 Node n2 = new Node(new LatLon(0.0, 0.0));
42 Way w1 = new Way();
43 w1.addNode(n1);
44 w1.addNode(n2);
45 w1.addNode(n1);
46 w1.removeNode(n1);
47 dataSet.addPrimitive(n1);
48 dataSet.addPrimitive(n2);
49 dataSet.addPrimitive(w1);
50 compareReferrers(n1);
51 compareReferrers(n2, w1);
52 }
53
54 @Test
55 public void multipleReferrers() {
56 Node n1 = new Node(new LatLon(0.0, 0.0));
57 Way w1 = new Way();
58 Way w2 = new Way();
59 Relation r1 = new Relation();
60 w1.addNode(n1);
61 w2.addNode(n1);
62 r1.addMember(new RelationMember("", n1));
63 dataSet.addPrimitive(n1);
64 dataSet.addPrimitive(w1);
65 dataSet.addPrimitive(w2);
66 dataSet.addPrimitive(r1);
67 compareReferrers(n1, w1, w2, r1);
68 }
69
70 @Test
71 public void removeMemberFromRelationReferrerTest() {
72 Node n1 = new Node(new LatLon(0, 0));
73 Relation r1 = new Relation();
74 r1.addMember(new RelationMember("", n1));
75 r1.addMember(new RelationMember("", n1));
76 r1.removeMember(0);
77 dataSet.addPrimitive(n1);
78 dataSet.addPrimitive(r1);
79 compareReferrers(n1, r1);
80 }
81
82 @Test
83 public void setRelationMemberReferrerTest() {
84 Node n1 = new Node(new LatLon(0, 0));
85 Node n2 = new Node(new LatLon(0, 0));
86 Relation r1 = new Relation();
87 Relation r2 = new Relation();
88 r1.addMember(new RelationMember("", n1));
89 r2.addMember(new RelationMember("", n2));
90 r2.setMember(0, r1.getMember(0));
91 dataSet.addPrimitive(n1);
92 dataSet.addPrimitive(n2);
93 dataSet.addPrimitive(r1);
94 dataSet.addPrimitive(r2);
95 compareReferrers(n1, r1, r2);
96 compareReferrers(n2);
97 }
98
99 @Test
100 public void removePrimitiveReferrerTest() {
101 Node n1 = new Node(new LatLon(0.0, 0.0));
102 Way w1 = new Way();
103 w1.addNode(n1);
104 w1.setDeleted(true);
105 dataSet.addPrimitive(n1);
106 compareReferrers(n1);
107 w1.setDeleted(false);
108 dataSet.addPrimitive(w1);
109
110 compareReferrers(n1, w1);
111
112 Relation r1 = new Relation();
113 r1.addMember(new RelationMember("", w1));
114 r1.setDeleted(true);
115 dataSet.addPrimitive(r1);
116 compareReferrers(w1);
117 r1.setDeleted(false);
118 compareReferrers(w1, r1);
119 }
120
121 @Test
122 public void nodeFromMultipleDatasets() {
123 // n has two referrers - w1 and w2. But only w1 is returned because it is in the same dataset as n
124 Node n = new Node(new LatLon(0.0, 0.0));
125
126 Way w1 = new Way();
127 w1.addNode(n);
128 dataSet.addPrimitive(n);
129 dataSet.addPrimitive(w1);
130 new Way(w1);
131
132 Assert.assertEquals(n.getReferrers().size(), 1);
133 Assert.assertEquals(n.getReferrers().get(0), w1);
134 }
135
136 @Test(expected=DataIntegrityProblemException.class)
137 public void checkMustBeInDatasate() {
138 Node n = new Node();
139 n.getReferrers();
140 }
141
142}
Note: See TracBrowser for help on using the repository browser.