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

Last change on this file since 3025 was 3025, checked in by jttt, 14 years ago

Fix tests

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