source: josm/trunk/test/unit/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverModelTest.java@ 17536

Last change on this file since 17536 was 17275, checked in by Don-vip, 4 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
File size: 5.3 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.conflict.tags;
3
4import static org.junit.jupiter.api.Assertions.assertEquals;
5import static org.junit.jupiter.api.Assertions.assertFalse;
6import static org.junit.jupiter.api.Assertions.assertTrue;
7
8import java.util.Arrays;
9import java.util.Collections;
10import java.util.List;
11
12import org.junit.jupiter.api.extension.RegisterExtension;
13import org.junit.jupiter.api.Test;
14import org.openstreetmap.josm.data.coor.LatLon;
15import org.openstreetmap.josm.data.osm.DataSet;
16import org.openstreetmap.josm.data.osm.Node;
17import org.openstreetmap.josm.data.osm.Relation;
18import org.openstreetmap.josm.data.osm.RelationMember;
19import org.openstreetmap.josm.data.osm.Way;
20import org.openstreetmap.josm.testutils.JOSMTestRules;
21
22import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
23
24/**
25 * Unit tests of {@link RelationMemberConflictResolverModel} class.
26 */
27class RelationMemberConflictResolverModelTest {
28
29 /**
30 * Setup test.
31 */
32 @RegisterExtension
33 @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
34 public JOSMTestRules test = new JOSMTestRules();
35
36 List<Way> buildTestDataSet() {
37 final DataSet ds = new DataSet();
38 final Node n1 = new Node(new LatLon(1, 1));
39 final Node n2 = new Node(new LatLon(2, 2));
40 final Node n3 = new Node(new LatLon(3, 3));
41 final Way w1 = new Way();
42 final Way w2 = new Way();
43 final Way w3 = new Way();
44 ds.addPrimitive(n1);
45 ds.addPrimitive(n2);
46 ds.addPrimitive(n3);
47 ds.addPrimitive(w1);
48 ds.addPrimitive(w2);
49 ds.addPrimitive(w3);
50 w1.addNode(n1);
51 w1.addNode(n2);
52 w2.addNode(n2);
53 w2.addNode(n3);
54 w3.addNode(n3);
55 w3.addNode(n1);
56 return Arrays.asList(w1, w2, w3);
57 }
58
59 @Test
60 void testSameRoles() throws Exception {
61 final List<Way> ways = buildTestDataSet();
62 final Relation r = new Relation();
63 r.addMember(new RelationMember("foo", ways.get(0)));
64 r.addMember(new RelationMember("foo", ways.get(1)));
65
66 final RelationMemberConflictResolverModel model = new RelationMemberConflictResolverModel();
67 model.populate(Collections.singleton(r), ways.subList(0, 2));
68 model.prepareDefaultRelationDecisions();
69 assertTrue(model.isResolvedCompletely());
70 assertEquals(RelationMemberConflictDecisionType.KEEP, model.getDecision(0).getDecision());
71 assertEquals(ways.get(0), model.getDecision(0).getOriginalPrimitive());
72 assertEquals("foo", model.getDecision(0).getRole());
73 assertEquals(RelationMemberConflictDecisionType.REMOVE, model.getDecision(1).getDecision());
74 assertEquals(ways.get(1), model.getDecision(1).getOriginalPrimitive());
75 }
76
77 @Test
78 void testDifferentRoles() throws Exception {
79 final List<Way> ways = buildTestDataSet();
80 final Relation r = new Relation();
81 r.addMember(new RelationMember("foo", ways.get(0)));
82 r.addMember(new RelationMember("bar", ways.get(1)));
83
84 final RelationMemberConflictResolverModel model = new RelationMemberConflictResolverModel();
85 model.populate(Collections.singleton(r), ways.subList(0, 2));
86 model.prepareDefaultRelationDecisions();
87 assertFalse(model.isResolvedCompletely());
88 }
89
90 @Test
91 void testDifferentPresence() throws Exception {
92 final List<Way> ways = buildTestDataSet();
93 final Relation r = new Relation();
94 r.addMember(new RelationMember("foo", ways.get(0)));
95
96 final RelationMemberConflictResolverModel model = new RelationMemberConflictResolverModel();
97 model.populate(Collections.singleton(r), ways.subList(0, 2));
98 model.prepareDefaultRelationDecisions();
99 assertFalse(model.isResolvedCompletely());
100 }
101
102 @Test
103 void testEveryMemberIsPresentTwice() throws Exception {
104 final List<Way> ways = buildTestDataSet();
105 final Relation r = new Relation();
106 r.addMember(new RelationMember("foo", ways.get(0)));
107 r.addMember(new RelationMember("foo", ways.get(1)));
108 r.addMember(new RelationMember("xoo", ways.get(2)));
109 r.addMember(new RelationMember("bar", ways.get(0)));
110 r.addMember(new RelationMember("bar", ways.get(1)));
111 r.addMember(new RelationMember("xoo", ways.get(2)));
112
113 final RelationMemberConflictResolverModel model = new RelationMemberConflictResolverModel();
114 model.populate(Collections.singleton(r), ways.subList(0, 2));
115 model.prepareDefaultRelationDecisions();
116 assertTrue(model.isResolvedCompletely());
117 assertEquals(RelationMemberConflictDecisionType.KEEP, model.getDecision(0).getDecision());
118 assertEquals(ways.get(0), model.getDecision(0).getOriginalPrimitive());
119 assertEquals("foo", model.getDecision(0).getRole());
120 assertEquals(RelationMemberConflictDecisionType.KEEP, model.getDecision(1).getDecision());
121 assertEquals(ways.get(0), model.getDecision(1).getOriginalPrimitive());
122 assertEquals("bar", model.getDecision(1).getRole());
123 assertEquals(RelationMemberConflictDecisionType.REMOVE, model.getDecision(2).getDecision());
124 assertEquals(RelationMemberConflictDecisionType.REMOVE, model.getDecision(3).getDecision());
125 }
126}
Note: See TracBrowser for help on using the repository browser.