source: josm/trunk/test/unit/org/openstreetmap/josm/gui/conflict/properties/PropertiesMergeModelTest.java@ 8511

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

checkstyle: modifiers order

  • Property svn:eol-style set to native
File size: 4.2 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.conflict.properties;
3
4import static org.junit.Assert.assertEquals;
5import static org.junit.Assert.assertFalse;
6import static org.junit.Assert.assertTrue;
7
8import java.util.Observable;
9import java.util.Observer;
10
11import org.junit.Before;
12import org.junit.BeforeClass;
13import org.junit.Test;
14import org.openstreetmap.josm.JOSMFixture;
15import org.openstreetmap.josm.data.conflict.Conflict;
16import org.openstreetmap.josm.data.coor.LatLon;
17import org.openstreetmap.josm.data.osm.DataSet;
18import org.openstreetmap.josm.data.osm.Node;
19import org.openstreetmap.josm.data.osm.OsmPrimitive;
20import org.openstreetmap.josm.data.osm.Relation;
21import org.openstreetmap.josm.data.osm.Way;
22import org.openstreetmap.josm.gui.conflict.pair.MergeDecisionType;
23import org.openstreetmap.josm.gui.conflict.pair.properties.PropertiesMergeModel;
24
25public class PropertiesMergeModelTest {
26
27 public abstract static class TestObserver implements Observer {
28 public int numInvocations;
29
30 public void update(Observable o, Object arg) {
31 numInvocations++;
32 test();
33 }
34
35 public abstract void test();
36
37 public void assertNumInvocations(int count) {
38 assertEquals(count, numInvocations);
39 }
40 }
41
42 PropertiesMergeModel model;
43
44 @BeforeClass
45 public static void init() {
46 JOSMFixture.createUnitTestFixture().init();
47 }
48
49 /**
50 * Setup test.
51 */
52 @Before
53 public void setUp() {
54 model = new PropertiesMergeModel();
55 }
56
57 private void populate(OsmPrimitive my, OsmPrimitive their) {
58 model.populate(new Conflict<>(my, their));
59 }
60
61 @Test
62 public void populate() {
63 DataSet d1 = new DataSet();
64 DataSet d2 = new DataSet();
65 Node n1 = new Node(1);
66 Node n2 = new Node(1);
67 d1.addPrimitive(n1);
68 d2.addPrimitive(n2);
69 populate(n1, n2);
70
71 Way w1 = new Way(1);
72 Way w2 = new Way(1);
73 d1.addPrimitive(w1);
74 d2.addPrimitive(w2);
75 populate(w2, w2);
76
77 Relation r1 = new Relation(1);
78 Relation r2 = new Relation(1);
79 d1.addPrimitive(r1);
80 d2.addPrimitive(r2);
81 populate(r1, r2);
82 }
83
84 @Test
85 public void decidingAboutCoords() {
86 DataSet d1 = new DataSet();
87 DataSet d2 = new DataSet();
88
89 Node n1 = new Node(1);
90 Node n2 = new Node(1);
91 d1.addPrimitive(n1);
92 d2.addPrimitive(n2);
93 populate(n1, n2);
94 assertFalse(model.hasCoordConflict());
95
96 n1.setCoor(new LatLon(1, 1));
97 populate(n1, n2);
98 assertTrue(model.hasCoordConflict());
99
100
101 n1.cloneFrom(new Node(1));
102 n2.setCoor(new LatLon(2, 2));
103 populate(n1, n2);
104 assertTrue(model.hasCoordConflict());
105
106 n1.setCoor(new LatLon(1, 1));
107 n2.setCoor(new LatLon(2, 2));
108 populate(n1, n2);
109 assertTrue(model.hasCoordConflict());
110
111 // decide KEEP_MINE and ensure notification via Observable
112 //
113 TestObserver observerTest;
114 model.addObserver(
115 observerTest = new TestObserver() {
116 @Override
117 public void test() {
118 assertTrue(model.isCoordMergeDecision(MergeDecisionType.KEEP_MINE));
119 }
120 }
121 );
122 model.decideCoordsConflict(MergeDecisionType.KEEP_MINE);
123 assertTrue(model.isCoordMergeDecision(MergeDecisionType.KEEP_MINE));
124 observerTest.assertNumInvocations(1);
125
126 // decide KEEP_THEIR and ensure notification via Observable
127 //
128 model.deleteObserver(observerTest);
129 model.addObserver(
130 observerTest = new TestObserver() {
131 @Override
132 public void test() {
133 assertTrue(model.isCoordMergeDecision(MergeDecisionType.KEEP_THEIR));
134 }
135 }
136 );
137 model.decideCoordsConflict(MergeDecisionType.KEEP_THEIR);
138 assertTrue(model.isCoordMergeDecision(MergeDecisionType.KEEP_THEIR));
139 observerTest.assertNumInvocations(1);
140 model.deleteObserver(observerTest);
141 }
142}
Note: See TracBrowser for help on using the repository browser.