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

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

checkstyle: enable relevant whitespace checks and fix them

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