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

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

add more unit tests, fix packages, rename manual functional unit tests (with a main() method) to *TestFT.java

  • 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.pair.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 /**
45 * Setup test.
46 */
47 @BeforeClass
48 public static void init() {
49 JOSMFixture.createUnitTestFixture().init();
50 }
51
52 /**
53 * Setup test.
54 */
55 @Before
56 public void setUp() {
57 model = new PropertiesMergeModel();
58 }
59
60 private void populate(OsmPrimitive my, OsmPrimitive their) {
61 model.populate(new Conflict<>(my, their));
62 }
63
64 @Test
65 public void populate() {
66 DataSet d1 = new DataSet();
67 DataSet d2 = new DataSet();
68 Node n1 = new Node(1);
69 Node n2 = new Node(1);
70 d1.addPrimitive(n1);
71 d2.addPrimitive(n2);
72 populate(n1, n2);
73
74 Way w1 = new Way(1);
75 Way w2 = new Way(1);
76 d1.addPrimitive(w1);
77 d2.addPrimitive(w2);
78 populate(w2, w2);
79
80 Relation r1 = new Relation(1);
81 Relation r2 = new Relation(1);
82 d1.addPrimitive(r1);
83 d2.addPrimitive(r2);
84 populate(r1, r2);
85 }
86
87 @Test
88 public void decidingAboutCoords() {
89 DataSet d1 = new DataSet();
90 DataSet d2 = new DataSet();
91
92 Node n1 = new Node(1);
93 Node n2 = new Node(1);
94 d1.addPrimitive(n1);
95 d2.addPrimitive(n2);
96 populate(n1, n2);
97 assertFalse(model.hasCoordConflict());
98
99 n1.setCoor(new LatLon(1, 1));
100 populate(n1, n2);
101 assertTrue(model.hasCoordConflict());
102
103
104 n1.cloneFrom(new Node(1));
105 n2.setCoor(new LatLon(2, 2));
106 populate(n1, n2);
107 assertTrue(model.hasCoordConflict());
108
109 n1.setCoor(new LatLon(1, 1));
110 n2.setCoor(new LatLon(2, 2));
111 populate(n1, n2);
112 assertTrue(model.hasCoordConflict());
113
114 // decide KEEP_MINE and ensure notification via Observable
115 //
116 TestObserver observerTest;
117 model.addObserver(
118 observerTest = new TestObserver() {
119 @Override
120 public void test() {
121 assertTrue(model.isCoordMergeDecision(MergeDecisionType.KEEP_MINE));
122 }
123 }
124 );
125 model.decideCoordsConflict(MergeDecisionType.KEEP_MINE);
126 assertTrue(model.isCoordMergeDecision(MergeDecisionType.KEEP_MINE));
127 observerTest.assertNumInvocations(1);
128
129 // decide KEEP_THEIR and ensure notification via Observable
130 //
131 model.deleteObserver(observerTest);
132 model.addObserver(
133 observerTest = new TestObserver() {
134 @Override
135 public void test() {
136 assertTrue(model.isCoordMergeDecision(MergeDecisionType.KEEP_THEIR));
137 }
138 }
139 );
140 model.decideCoordsConflict(MergeDecisionType.KEEP_THEIR);
141 assertTrue(model.isCoordMergeDecision(MergeDecisionType.KEEP_THEIR));
142 observerTest.assertNumInvocations(1);
143 model.deleteObserver(observerTest);
144 }
145}
Note: See TracBrowser for help on using the repository browser.