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

Last change on this file since 16913 was 16913, checked in by simon04, 4 years ago

fix #19698 - Refactoring: make private fields final

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