source: josm/trunk/test/unit/org/openstreetmap/josm/data/ImageDataTest.java@ 14590

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

fix #17050 - Refactor the GeoImageLayer and related to use a Data class with a selection listener (patch by francois2, modified)

  • Property svn:eol-style set to native
File size: 9.7 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.data;
3
4import static org.junit.Assert.assertEquals;
5import static org.junit.Assert.assertFalse;
6import static org.junit.Assert.assertNull;
7import static org.junit.Assert.assertTrue;
8
9import java.io.File;
10import java.util.ArrayList;
11import java.util.Collections;
12import java.util.List;
13
14import org.junit.Test;
15import org.openstreetmap.josm.data.ImageData.ImageDataUpdateListener;
16import org.openstreetmap.josm.data.coor.LatLon;
17import org.openstreetmap.josm.gui.layer.geoimage.ImageEntry;
18
19import mockit.Expectations;
20import mockit.Mock;
21import mockit.MockUp;
22
23/**
24 * Unit tests for class {@link ImageData}.
25 */
26public class ImageDataTest {
27
28 private static List<ImageEntry> getOneImage() {
29 ArrayList<ImageEntry> list = new ArrayList<>();
30 list.add(new ImageEntry(new File("test")));
31 return list;
32 }
33
34 @Test
35 public void testWithullData() {
36 ImageData data = new ImageData();
37 assertEquals(0, data.getImages().size());
38 assertNull(data.getSelectedImage());
39 data.selectFirstImage();
40 assertNull(data.getSelectedImage());
41 data.selectLastImage();
42 assertNull(data.getSelectedImage());
43 data.selectFirstImage();
44 assertNull(data.getSelectedImage());
45 data.selectPreviousImage();
46 assertNull(data.getSelectedImage());
47 assertFalse(data.hasNextImage());
48 assertFalse(data.hasPreviousImage());
49 data.removeSelectedImage();
50 }
51
52 @Test
53 public void testmageEntryWithImages() {
54 assertEquals(1, new ImageData(this.getOneImage()).getImages().size());
55 }
56
57 @Test
58 public void testSortData() {
59 List<ImageEntry> list = this.getOneImage();
60
61 new Expectations(Collections.class) {{
62 Collections.sort(list);
63 }};
64
65 new ImageData(list);
66 }
67
68 @Test
69 public void testIsModifiedFalse() {
70 assertFalse(new ImageData(this.getOneImage()).isModified());
71 }
72
73 @Test
74 public void testIsModifiedTrue() {
75 List<ImageEntry> list = this.getOneImage();
76
77 new Expectations(list.get(0)) {{
78 list.get(0).hasNewGpsData(); result = true;
79 }};
80
81 assertTrue(new ImageData(list).isModified());
82 }
83
84 @Test
85 public void testSelectFirstImage() {
86 List<ImageEntry> list = this.getOneImage();
87
88 ImageData data = new ImageData(list);
89 data.selectFirstImage();
90 assertEquals(list.get(0), data.getSelectedImage());
91 }
92
93 @Test
94 public void testSelectLastImage() {
95 List<ImageEntry> list = this.getOneImage();
96 list.add(new ImageEntry());
97
98 ImageData data = new ImageData(list);
99 data.selectLastImage();
100 assertEquals(list.get(1), data.getSelectedImage());
101 }
102
103 @Test
104 public void testSelectNextImage() {
105 List<ImageEntry> list = this.getOneImage();
106
107 ImageData data = new ImageData(list);
108 assertTrue(data.hasNextImage());
109 data.selectNextImage();
110 assertEquals(list.get(0), data.getSelectedImage());
111 assertFalse(data.hasNextImage());
112 data.selectNextImage();
113 assertEquals(list.get(0), data.getSelectedImage());
114 }
115
116 @Test
117 public void testSelectPreviousImage() {
118 List<ImageEntry> list = this.getOneImage();
119 list.add(new ImageEntry());
120
121 ImageData data = new ImageData(list);
122 assertFalse(data.hasPreviousImage());
123 data.selectLastImage();
124 assertTrue(data.hasPreviousImage());
125 data.selectPreviousImage();
126 assertEquals(list.get(0), data.getSelectedImage());
127 data.selectPreviousImage();
128 assertEquals(list.get(0), data.getSelectedImage());
129 }
130
131 @Test
132 public void testSetSelectedImage() {
133 List<ImageEntry> list = this.getOneImage();
134
135 ImageData data = new ImageData(list);
136 data.setSelectedImage(list.get(0));
137 assertEquals(list.get(0), data.getSelectedImage());
138 }
139
140 @Test
141 public void testClearSelectedImage() {
142 List<ImageEntry> list = this.getOneImage();
143
144 ImageData data = new ImageData(list);
145 data.setSelectedImage(list.get(0));
146 data.clearSelectedImage();
147 assertNull(data.getSelectedImage());
148 }
149
150 @Test
151 public void testSelectionListener() {
152 List<ImageEntry> list = this.getOneImage();
153 ImageData data = new ImageData(list);
154 ImageDataUpdateListener listener = new ImageDataUpdateListener() {
155 @Override
156 public void selectedImageChanged(ImageData data) {}
157
158 @Override
159 public void imageDataUpdated(ImageData data) {}
160 };
161 new Expectations(listener) {{
162 listener.selectedImageChanged(data); times = 1;
163 }};
164 data.addImageDataUpdateListener(listener);
165 data.selectFirstImage();
166 data.selectFirstImage();
167 }
168
169 @Test
170 public void testRemoveSelectedImage() {
171 List<ImageEntry> list = this.getOneImage();
172 ImageData data = new ImageData(list);
173 data.selectFirstImage();
174 data.removeSelectedImage();
175 assertEquals(0, data.getImages().size());
176 assertNull(data.getSelectedImage());
177 }
178
179 @Test
180 public void testRemoveSelectedWithImageTriggerListener() {
181 List<ImageEntry> list = this.getOneImage();
182 list.add(new ImageEntry());
183 ImageData data = new ImageData(list);
184 ImageDataUpdateListener listener = new ImageDataUpdateListener() {
185 @Override
186 public void selectedImageChanged(ImageData data) {}
187
188 @Override
189 public void imageDataUpdated(ImageData data) {}
190 };
191 new Expectations(listener) {{
192 listener.selectedImageChanged(data); times = 2;
193 }};
194 data.addImageDataUpdateListener(listener);
195 data.selectFirstImage();
196 data.removeSelectedImage();
197 }
198
199 @Test
200 public void testRemoveImageAndTriggerListener() {
201 List<ImageEntry> list = this.getOneImage();
202 ImageData data = new ImageData(list);
203 ImageDataUpdateListener listener = new ImageDataUpdateListener() {
204 @Override
205 public void selectedImageChanged(ImageData data) {}
206
207 @Override
208 public void imageDataUpdated(ImageData data) {}
209 };
210 new Expectations(listener) {{
211 listener.imageDataUpdated(data); times = 1;
212 }};
213 data.addImageDataUpdateListener(listener);
214 data.removeImage(list.get(0));
215 assertEquals(0, data.getImages().size());
216 }
217
218 @Test
219 public void testMergeFrom() {
220 ImageEntry image = new ImageEntry(new File("test2"));
221 List<ImageEntry> list1 = this.getOneImage();
222 list1.add(image);
223 List<ImageEntry> list2 = this.getOneImage();
224 list2.add(new ImageEntry(new File("test3")));
225
226 ImageData data = new ImageData(list1);
227 data.setSelectedImage(list1.get(0));
228 ImageData data2 = new ImageData(list2);
229
230 new MockUp<Collections>() {
231 @Mock
232 public void sort(List<ImageEntry> o) {
233 list1.remove(image);
234 list1.add(image);
235 }
236 };
237
238 data.mergeFrom(data2);
239 assertEquals(3, data.getImages().size());
240 assertEquals(list1.get(0), data.getSelectedImage());
241 }
242
243 @Test
244 public void testMergeFromSelectedImage() {
245 ImageEntry image = new ImageEntry(new File("test2"));
246 List<ImageEntry> list1 = this.getOneImage();
247 list1.add(image);
248 List<ImageEntry> list2 = this.getOneImage();
249
250 ImageData data = new ImageData(list1);
251 ImageData data2 = new ImageData(list2);
252 data2.setSelectedImage(list2.get(0));
253
254 data.mergeFrom(data2);
255 assertEquals(3, data.getImages().size());
256 assertEquals(list2.get(0), data.getSelectedImage());
257 }
258
259 @Test
260 public void testUpdatePosition() {
261 List<ImageEntry> list = this.getOneImage();
262 ImageData data = new ImageData(list);
263
264 new Expectations(list.get(0)) {{
265 list.get(0).setPos((LatLon) any);
266 list.get(0).flagNewGpsData();
267 }};
268 data.updateImagePosition(list.get(0), new LatLon(0, 0));
269 }
270
271 @Test
272 public void testUpdateDirection() {
273 List<ImageEntry> list = this.getOneImage();
274 ImageData data = new ImageData(list);
275
276 new Expectations(list.get(0)) {{
277 list.get(0).setExifImgDir(0.0);
278 list.get(0).flagNewGpsData();
279 }};
280 data.updateImageDirection(list.get(0), 0);
281 }
282
283 @Test
284 public void testTriggerListenerOnUpdate() {
285 List<ImageEntry> list = this.getOneImage();
286 ImageData data = new ImageData(list);
287
288 ImageDataUpdateListener listener = new ImageDataUpdateListener() {
289 @Override
290 public void selectedImageChanged(ImageData data) {}
291
292 @Override
293 public void imageDataUpdated(ImageData data) {}
294 };
295 new Expectations(listener) {{
296 listener.imageDataUpdated(data); times = 1;
297 }};
298
299 data.addImageDataUpdateListener(listener);
300 data.updateImageDirection(list.get(0), 0);
301 }
302
303 @Test
304 public void testManuallyTriggerUpdateListener() {
305 List<ImageEntry> list = this.getOneImage();
306 ImageData data = new ImageData(list);
307
308 ImageDataUpdateListener listener = new ImageDataUpdateListener() {
309 @Override
310 public void selectedImageChanged(ImageData data) {}
311
312 @Override
313 public void imageDataUpdated(ImageData data) {}
314 };
315 new Expectations(listener) {{
316 listener.imageDataUpdated(data); times = 1;
317 }};
318
319 data.addImageDataUpdateListener(listener);
320 data.notifyImageUpdate();
321 }
322}
Note: See TracBrowser for help on using the repository browser.