source: josm/trunk/test/unit/org/openstreetmap/josm/gui/conflict/tags/TagMergeModelTest.java@ 7937

Last change on this file since 7937 was 7937, checked in by bastiK, 9 years ago

add subversion property svn:eol=native

  • Property svn:eol-style set to native
File size: 7.0 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.conflict.tags;
3
4import static org.fest.reflect.core.Reflection.field;
5import static org.junit.Assert.assertEquals;
6import static org.junit.Assert.assertNull;
7
8import java.beans.PropertyChangeEvent;
9import java.beans.PropertyChangeListener;
10import java.util.List;
11
12import org.junit.BeforeClass;
13import org.junit.Test;
14import org.openstreetmap.josm.JOSMFixture;
15import org.openstreetmap.josm.data.osm.Node;
16import org.openstreetmap.josm.gui.conflict.pair.MergeDecisionType;
17import org.openstreetmap.josm.gui.conflict.pair.tags.TagMergeItem;
18import org.openstreetmap.josm.gui.conflict.pair.tags.TagMergeModel;
19
20@SuppressWarnings("unchecked")
21public class TagMergeModelTest {
22
23 @BeforeClass
24 public static void init() {
25 JOSMFixture.createUnitTestFixture().init();
26 }
27
28 @Test
29 public void addPropertyChangeListener() {
30 TagMergeModel model = new TagMergeModel();
31 PropertyChangeListener listener = new PropertyChangeListener() {
32
33 public void propertyChange(PropertyChangeEvent evt) {
34 }
35 };
36 model.addPropertyChangeListener(listener);
37
38 List<?> list = field("listeners").ofType(List.class)
39 .in(model)
40 .get();
41
42 assertEquals(1, list.size());
43 assertEquals(listener, list.get(0));
44 }
45
46 @Test
47 public void removePropertyChangeListener() {
48 TagMergeModel model = new TagMergeModel();
49 PropertyChangeListener listener = new PropertyChangeListener() {
50
51 public void propertyChange(PropertyChangeEvent evt) {
52 }
53 };
54 model.addPropertyChangeListener(listener);
55 model.removePropertyChangeListener(listener);
56
57 List<?> list = field("listeners")
58 .ofType(List.class)
59 .in(model)
60 .get();
61
62 assertEquals(0, list.size());
63 }
64
65 @Test
66 public void populateNoConflichts() {
67 Node my = new Node(1);
68 Node their = new Node(1);
69 TagMergeModel model = new TagMergeModel();
70 model.populate(my, their);
71
72 List<TagMergeItem> list = field("tagMergeItems")
73 .ofType(List.class)
74 .in(model)
75 .get();
76
77 assertEquals(0, list.size());
78 }
79
80 @Test
81 public void populateNoConflicts1() {
82 Node my = new Node(1);
83 my.put("key", "value");
84 Node their = new Node(1);
85 their.put("key", "value");
86 TagMergeModel model = new TagMergeModel();
87 model.populate(my, their);
88
89 List<TagMergeItem> list = field("tagMergeItems")
90 .ofType(List.class)
91 .in(model)
92 .get();
93
94 assertEquals(0, list.size());
95 }
96
97 @Test
98 public void populateMissingKeyMine() {
99 Node my = new Node(1);
100 Node their = new Node(1);
101 their.put("key", "value");
102 TagMergeModel model = new TagMergeModel();
103 model.populate(my, their);
104
105 List<TagMergeItem> list = field("tagMergeItems")
106 .ofType(List.class)
107 .in(model)
108 .get();
109
110 assertEquals(1, list.size());
111 TagMergeItem item = list.get(0);
112 assertEquals(MergeDecisionType.UNDECIDED, item.getMergeDecision());
113 assertEquals("key", item.getKey());
114 assertNull(item.getMyTagValue());
115 assertEquals("value", item.getTheirTagValue());
116 }
117
118 @Test
119 public void populateMissingKeyTheir() {
120 Node my = new Node(1);
121 my.put("key", "value");
122 Node their = new Node(1);
123 TagMergeModel model = new TagMergeModel();
124 model.populate(my, their);
125
126 List<TagMergeItem> list = field("tagMergeItems")
127 .ofType(List.class)
128 .in(model)
129 .get();
130
131 assertEquals(1, list.size());
132 TagMergeItem item = list.get(0);
133 assertEquals(MergeDecisionType.UNDECIDED, item.getMergeDecision());
134 assertEquals("key", item.getKey());
135 assertNull(item.getTheirTagValue());
136 assertEquals("value", item.getMyTagValue());
137 }
138
139 @Test
140 public void populateConflictingValues() {
141 Node my = new Node(1);
142 my.put("key", "myvalue");
143 Node their = new Node(1);
144 their.put("key", "theirvalue");
145 TagMergeModel model = new TagMergeModel();
146 model.populate(my, their);
147
148 List<TagMergeItem> list = field("tagMergeItems")
149 .ofType(List.class)
150 .in(model)
151 .get();
152
153 assertEquals(1, list.size());
154 TagMergeItem item = list.get(0);
155 assertEquals(MergeDecisionType.UNDECIDED, item.getMergeDecision());
156 assertEquals("key", item.getKey());
157 assertEquals("myvalue", item.getMyTagValue());
158 assertEquals("theirvalue", item.getTheirTagValue());
159 }
160
161 @Test
162 public void addItem() {
163 TagMergeItem item = new TagMergeItem("key", "myvalue", "theirvalue");
164 TagMergeModel model = new TagMergeModel();
165 model.addItem(item);
166
167 List<TagMergeItem> list = field("tagMergeItems")
168 .ofType(List.class)
169 .in(model)
170 .get();
171
172 assertEquals(1, list.size());
173 item = list.get(0);
174 assertEquals(MergeDecisionType.UNDECIDED, item.getMergeDecision());
175 assertEquals("key", item.getKey());
176 assertEquals("myvalue", item.getMyTagValue());
177 assertEquals("theirvalue", item.getTheirTagValue());
178 }
179
180 @Test
181 public void decide() {
182 TagMergeItem item = new TagMergeItem("key", "myvalue", "theirvalue");
183 TagMergeModel model = new TagMergeModel();
184 model.addItem(item);
185
186 List<TagMergeItem> list = field("tagMergeItems")
187 .ofType(List.class)
188 .in(model)
189 .get();
190
191 model.decide(0, MergeDecisionType.KEEP_MINE);
192 assertEquals(1, list.size());
193 item = list.get(0);
194 assertEquals(MergeDecisionType.KEEP_MINE, item.getMergeDecision());
195
196 model.decide(0, MergeDecisionType.KEEP_THEIR);
197 assertEquals(1, list.size());
198 item = list.get(0);
199 assertEquals(MergeDecisionType.KEEP_THEIR, item.getMergeDecision());
200
201 model.decide(0, MergeDecisionType.UNDECIDED);
202 assertEquals(1, list.size());
203 item = list.get(0);
204 assertEquals(MergeDecisionType.UNDECIDED, item.getMergeDecision());
205 }
206
207 @Test
208 public void decideMultiple() {
209
210 TagMergeModel model = new TagMergeModel();
211 for (int i=0; i < 10; i++) {
212 model.addItem(new TagMergeItem("key-" + i, "myvalue-" + i, "theirvalue-" +i));
213 }
214
215 List<TagMergeItem> list = field("tagMergeItems")
216 .ofType(List.class)
217 .in(model)
218 .get();
219
220 assertEquals(10, list.size());
221
222 model.decide(new int[] {0, 3, 5}, MergeDecisionType.KEEP_MINE);
223 for (int i = 0; i< 10; i++) {
224 TagMergeItem item = list.get(i);
225 if (i == 0 || i == 3 || i == 5) {
226 assertEquals(MergeDecisionType.KEEP_MINE, item.getMergeDecision());
227 } else {
228 assertEquals(MergeDecisionType.UNDECIDED, item.getMergeDecision());
229 }
230 }
231 }
232}
Note: See TracBrowser for help on using the repository browser.