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

Last change on this file since 6881 was 6881, checked in by Don-vip, 10 years ago

javadoc/code style/minor refactorization

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