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

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

see #16567 - upgrade almost all tests to JUnit 5, except those depending on WiremockRule

See https://github.com/tomakehurst/wiremock/issues/684

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