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

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

improve/cleanup unit tests

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