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

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

checkstyle + remove call to org.hamcrest.CoreMatchers.is (generating a deprecation warning)

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