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

Last change on this file since 9339 was 9231, checked in by Don-vip, 8 years ago

javadoc update

File size: 5.1 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
22/**
23 * Unit tests of {@link RelationMemberConflictResolverModel} class.
24 */
25public class RelationMemberConflictResolverModelTest {
26
27 /**
28 * Setup test.
29 */
30 @BeforeClass
31 public static void init() {
32 JOSMFixture.createUnitTestFixture().init();
33 }
34
35 List<Way> buildTestDataSet() {
36 final DataSet ds = new DataSet();
37 final Node n1 = new Node(new LatLon(1, 1));
38 final Node n2 = new Node(new LatLon(2, 2));
39 final Node n3 = new Node(new LatLon(3, 3));
40 final Way w1 = new Way();
41 final Way w2 = new Way();
42 final Way w3 = new Way();
43 ds.addPrimitive(n1);
44 ds.addPrimitive(n2);
45 ds.addPrimitive(n3);
46 ds.addPrimitive(w1);
47 ds.addPrimitive(w2);
48 ds.addPrimitive(w3);
49 w1.addNode(n1);
50 w1.addNode(n2);
51 w2.addNode(n2);
52 w2.addNode(n3);
53 w3.addNode(n3);
54 w3.addNode(n1);
55 return Arrays.asList(w1, w2, w3);
56 }
57
58 @Test
59 public void testSameRoles() throws Exception {
60 final List<Way> ways = buildTestDataSet();
61 final Relation r = new Relation();
62 r.addMember(new RelationMember("foo", ways.get(0)));
63 r.addMember(new RelationMember("foo", ways.get(1)));
64
65 final RelationMemberConflictResolverModel model = new RelationMemberConflictResolverModel();
66 model.populate(Collections.singleton(r), ways.subList(0, 2));
67 model.prepareDefaultRelationDecisions();
68 assertTrue(model.isResolvedCompletely());
69 assertEquals(RelationMemberConflictDecisionType.KEEP, model.getDecision(0).getDecision());
70 assertEquals(ways.get(0), model.getDecision(0).getOriginalPrimitive());
71 assertEquals("foo", model.getDecision(0).getRole());
72 assertEquals(RelationMemberConflictDecisionType.REMOVE, model.getDecision(1).getDecision());
73 assertEquals(ways.get(1), model.getDecision(1).getOriginalPrimitive());
74 }
75
76 @Test
77 public void testDifferentRoles() throws Exception {
78 final List<Way> ways = buildTestDataSet();
79 final Relation r = new Relation();
80 r.addMember(new RelationMember("foo", ways.get(0)));
81 r.addMember(new RelationMember("bar", ways.get(1)));
82
83 final RelationMemberConflictResolverModel model = new RelationMemberConflictResolverModel();
84 model.populate(Collections.singleton(r), ways.subList(0, 2));
85 model.prepareDefaultRelationDecisions();
86 assertFalse(model.isResolvedCompletely());
87 }
88
89 @Test
90 public void testDifferentPresence() throws Exception {
91 final List<Way> ways = buildTestDataSet();
92 final Relation r = new Relation();
93 r.addMember(new RelationMember("foo", ways.get(0)));
94
95 final RelationMemberConflictResolverModel model = new RelationMemberConflictResolverModel();
96 model.populate(Collections.singleton(r), ways.subList(0, 2));
97 model.prepareDefaultRelationDecisions();
98 assertFalse(model.isResolvedCompletely());
99 }
100
101 @Test
102 public void testEveryMemberIsPresentTwice() throws Exception {
103 final List<Way> ways = buildTestDataSet();
104 final Relation r = new Relation();
105 r.addMember(new RelationMember("foo", ways.get(0)));
106 r.addMember(new RelationMember("foo", ways.get(1)));
107 r.addMember(new RelationMember("xoo", ways.get(2)));
108 r.addMember(new RelationMember("bar", ways.get(0)));
109 r.addMember(new RelationMember("bar", ways.get(1)));
110 r.addMember(new RelationMember("xoo", ways.get(2)));
111
112 final RelationMemberConflictResolverModel model = new RelationMemberConflictResolverModel();
113 model.populate(Collections.singleton(r), ways.subList(0, 2));
114 model.prepareDefaultRelationDecisions();
115 assertTrue(model.isResolvedCompletely());
116 assertEquals(RelationMemberConflictDecisionType.KEEP, model.getDecision(0).getDecision());
117 assertEquals(ways.get(0), model.getDecision(0).getOriginalPrimitive());
118 assertEquals("foo", model.getDecision(0).getRole());
119 assertEquals(RelationMemberConflictDecisionType.KEEP, model.getDecision(1).getDecision());
120 assertEquals(ways.get(0), model.getDecision(1).getOriginalPrimitive());
121 assertEquals("bar", model.getDecision(1).getRole());
122 assertEquals(RelationMemberConflictDecisionType.REMOVE, model.getDecision(2).getDecision());
123 assertEquals(RelationMemberConflictDecisionType.REMOVE, model.getDecision(3).getDecision());
124 }
125}
Note: See TracBrowser for help on using the repository browser.