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

Last change on this file since 17120 was 17120, checked in by simon04, 4 years ago

see #18200 - Fix ImageDataTest after JMockit update

  • Property svn:eol-style set to native
File size: 15.4 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;
22import mockit.Mocked;
23import mockit.Verifications;
24
25/**
26 * Unit tests for class {@link ImageData}.
27 */
28public class ImageDataTest {
29
30 private static List<ImageEntry> getOneImage() {
31 ArrayList<ImageEntry> list = new ArrayList<>();
32 list.add(new ImageEntry(new File("test")));
33 return list;
34 }
35
36 @Test
37 public void testWithNullData() {
38 ImageData data = new ImageData();
39 assertEquals(0, data.getImages().size());
40 assertNull(data.getSelectedImage());
41 data.selectFirstImage();
42 assertNull(data.getSelectedImage());
43 data.selectLastImage();
44 assertNull(data.getSelectedImage());
45 data.selectFirstImage();
46 assertNull(data.getSelectedImage());
47 data.selectPreviousImage();
48 assertNull(data.getSelectedImage());
49 assertFalse(data.hasNextImage());
50 assertFalse(data.hasPreviousImage());
51 data.removeSelectedImage();
52 }
53
54 @Test
55 public void testImageEntryWithImages() {
56 assertEquals(1, new ImageData(getOneImage()).getImages().size());
57 }
58
59 @Test
60 public void testSortData(@Mocked Collections ignore) {
61 List<ImageEntry> list = getOneImage();
62
63 new ImageData(list);
64
65 new Verifications() {{
66 Collections.sort(list);
67 }};
68 }
69
70 @Test
71 public void testIsModifiedFalse() {
72 assertFalse(new ImageData(getOneImage()).isModified());
73 }
74
75 @Test
76 public void testIsModifiedTrue() {
77 List<ImageEntry> list = getOneImage();
78
79 new Expectations(list.get(0)) {{
80 list.get(0).hasNewGpsData(); result = true;
81 }};
82
83 assertTrue(new ImageData(list).isModified());
84 }
85
86 @Test
87 public void testSelectFirstImage() {
88 List<ImageEntry> list = getOneImage();
89
90 ImageData data = new ImageData(list);
91 data.selectFirstImage();
92 assertEquals(1, data.getSelectedImages().size());
93 assertEquals(list.get(0), data.getSelectedImages().get(0));
94 }
95
96 @Test
97 public void testSelectLastImage() {
98 List<ImageEntry> list = getOneImage();
99 list.add(new ImageEntry());
100
101 ImageData data = new ImageData(list);
102 data.selectLastImage();
103 assertEquals(1, data.getSelectedImages().size());
104 assertEquals(list.get(1), data.getSelectedImages().get(0));
105 }
106
107 @Test
108 public void testSelectNextImage() {
109 List<ImageEntry> list = getOneImage();
110
111 ImageData data = new ImageData(list);
112 assertTrue(data.hasNextImage());
113 data.selectNextImage();
114 assertEquals(1, data.getSelectedImages().size());
115 assertEquals(list.get(0), data.getSelectedImages().get(0));
116 assertFalse(data.hasNextImage());
117 data.selectNextImage();
118 assertEquals(list.get(0), data.getSelectedImages().get(0));
119 }
120
121 @Test
122 public void testSelectPreviousImage() {
123 List<ImageEntry> list = getOneImage();
124 list.add(new ImageEntry());
125
126 ImageData data = new ImageData(list);
127 assertFalse(data.hasPreviousImage());
128 data.selectLastImage();
129 assertTrue(data.hasPreviousImage());
130 data.selectPreviousImage();
131 assertEquals(1, data.getSelectedImages().size());
132 assertEquals(list.get(0), data.getSelectedImages().get(0));
133 data.selectPreviousImage();
134 assertEquals(list.get(0), data.getSelectedImages().get(0));
135 }
136
137 @Test
138 public void testSetSelectedImage() {
139 List<ImageEntry> list = getOneImage();
140
141 ImageData data = new ImageData(list);
142 data.setSelectedImage(list.get(0));
143 assertEquals(1, data.getSelectedImages().size());
144 assertEquals(list.get(0), data.getSelectedImages().get(0));
145 }
146
147 @Test
148 public void testClearSelectedImages() {
149 List<ImageEntry> list = getOneImage();
150
151 ImageData data = new ImageData(list);
152 data.setSelectedImage(list.get(0));
153 data.clearSelectedImage();
154 assertTrue(data.getSelectedImages().isEmpty());
155 }
156
157 @Test
158 public void testSelectionListener() {
159 List<ImageEntry> list = getOneImage();
160 ImageData data = new ImageData(list);
161 ImageDataUpdateListener listener = new ImageDataUpdateListener() {
162 @Override
163 public void selectedImageChanged(ImageData data) {}
164
165 @Override
166 public void imageDataUpdated(ImageData data) {}
167 };
168 new Expectations(listener) {{
169 listener.selectedImageChanged(data); times = 1;
170 }};
171 data.addImageDataUpdateListener(listener);
172 data.selectFirstImage();
173 data.selectFirstImage();
174 }
175
176 @Test
177 public void testRemoveSelectedImage() {
178 List<ImageEntry> list = getOneImage();
179 ImageData data = new ImageData(list);
180 data.selectFirstImage();
181 data.removeSelectedImage();
182 assertEquals(0, data.getImages().size());
183 assertEquals(0, data.getSelectedImages().size());
184 }
185
186 @Test
187 public void testRemoveSelectedImages() {
188 List<ImageEntry> list = getOneImage();
189 list.add(new ImageEntry());
190
191 ImageData data = new ImageData(list);
192 data.selectFirstImage();
193 data.addImageToSelection(list.get(1));
194 data.removeSelectedImages();
195 assertEquals(0, data.getImages().size());
196 assertEquals(0, data.getSelectedImages().size());
197 }
198
199 @Test
200 public void testRemoveSelectedImagesWithRemainingImages() {
201 List<ImageEntry> list = getOneImage();
202 list.add(new ImageEntry());
203 list.add(new ImageEntry());
204
205 ImageData data = new ImageData(list);
206 data.selectLastImage();
207 data.addImageToSelection(list.get(1));
208 data.removeSelectedImages();
209 assertEquals(1, data.getImages().size());
210 assertEquals(1, data.getSelectedImages().size());
211 }
212
213 @Test
214 public void testSelectImageAfterRemove() {
215 List<ImageEntry> list = getOneImage();
216 list.add(new ImageEntry());
217
218 ImageData data = new ImageData(list);
219 data.selectFirstImage();
220 data.removeSelectedImages();
221 assertEquals(1, data.getImages().size());
222 assertEquals(1, data.getSelectedImages().size());
223 assertEquals(list.get(0), data.getSelectedImages().get(0));
224 }
225
226 @Test
227 public void testSelectImageAfterRemoveWhenTheLastIsSelected() {
228 List<ImageEntry> list = getOneImage();
229 list.add(new ImageEntry());
230
231 ImageData data = new ImageData(list);
232 data.selectLastImage();
233 data.removeSelectedImages();
234 assertEquals(1, data.getImages().size());
235 assertEquals(1, data.getSelectedImages().size());
236 assertEquals(list.get(0), data.getSelectedImages().get(0));
237 }
238
239 @Test
240 public void testRemoveSelectedImageTriggerListener() {
241 List<ImageEntry> list = getOneImage();
242 list.add(new ImageEntry());
243 ImageData data = new ImageData(list);
244 ImageDataUpdateListener listener = new ImageDataUpdateListener() {
245 @Override
246 public void selectedImageChanged(ImageData data) {}
247
248 @Override
249 public void imageDataUpdated(ImageData data) {}
250 };
251 new Expectations(listener) {{
252 listener.selectedImageChanged(data); times = 2;
253 }};
254 data.addImageDataUpdateListener(listener);
255 data.selectFirstImage();
256 data.removeSelectedImage();
257 }
258
259 @Test
260 public void testRemoveSelectedImagesTriggerListener() {
261 List<ImageEntry> list = getOneImage();
262 list.add(new ImageEntry());
263 ImageData data = new ImageData(list);
264 ImageDataUpdateListener listener = new ImageDataUpdateListener() {
265 @Override
266 public void selectedImageChanged(ImageData data) {}
267
268 @Override
269 public void imageDataUpdated(ImageData data) {}
270 };
271 new Expectations(listener) {{
272 listener.selectedImageChanged(data); times = 2;
273 }};
274 data.addImageDataUpdateListener(listener);
275 data.selectFirstImage();
276 data.removeSelectedImages();
277 }
278
279 @Test
280 public void testRemoveImageAndTriggerListener() {
281 List<ImageEntry> list = getOneImage();
282 ImageData data = new ImageData(list);
283 ImageDataUpdateListener listener = new ImageDataUpdateListener() {
284 @Override
285 public void selectedImageChanged(ImageData data) {}
286
287 @Override
288 public void imageDataUpdated(ImageData data) {}
289 };
290 new Expectations(listener) {{
291 listener.imageDataUpdated(data); times = 1;
292 }};
293 data.addImageDataUpdateListener(listener);
294 data.removeImage(list.get(0));
295 assertEquals(0, data.getImages().size());
296 }
297
298 @Test
299 public void testMergeFrom() {
300 ImageEntry image = new ImageEntry(new File("test2"));
301 List<ImageEntry> list1 = getOneImage();
302 list1.add(image);
303 List<ImageEntry> list2 = getOneImage();
304 list2.add(new ImageEntry(new File("test3")));
305
306 ImageData data = new ImageData(list1);
307 data.setSelectedImage(list1.get(0));
308 ImageData data2 = new ImageData(list2);
309
310 new MockUp<Collections>() {
311 @Mock
312 public void sort(List<ImageEntry> o) {
313 list1.remove(image);
314 list1.add(image);
315 }
316 };
317
318 data.mergeFrom(data2);
319 assertEquals(3, data.getImages().size());
320 assertEquals(1, data.getSelectedImages().size());
321 assertEquals(list1.get(0), data.getSelectedImages().get(0));
322 }
323
324 @Test
325 public void testMergeFromSelectedImage() {
326 ImageEntry image = new ImageEntry(new File("test2"));
327 List<ImageEntry> list1 = getOneImage();
328 list1.add(image);
329 List<ImageEntry> list2 = getOneImage();
330
331 ImageData data = new ImageData(list1);
332 ImageData data2 = new ImageData(list2);
333 data2.setSelectedImage(list2.get(0));
334
335 data.mergeFrom(data2);
336 assertEquals(3, data.getImages().size());
337 assertEquals(1, data.getSelectedImages().size());
338 assertEquals(list2.get(0), data.getSelectedImages().get(0));
339 }
340
341 @Test
342 public void testAddImageToSelection() {
343 List<ImageEntry> list = getOneImage();
344 list.add(new ImageEntry(new File("test2")));
345
346 ImageData data = new ImageData(list);
347 data.addImageToSelection(list.get(0));
348 data.addImageToSelection(list.get(0));
349 assertEquals(1, data.getSelectedImages().size());
350 data.addImageToSelection(list.get(1));
351 assertEquals(2, data.getSelectedImages().size());
352 }
353
354 @Test
355 public void testRemoveImageToSelection() {
356 List<ImageEntry> list = getOneImage();
357 list.add(new ImageEntry());
358
359 ImageData data = new ImageData(list);
360 data.selectLastImage();
361 data.removeImageToSelection(list.get(1));
362 assertEquals(0, data.getSelectedImages().size());
363 data.selectFirstImage();
364 assertEquals(1, data.getSelectedImages().size());
365 }
366
367 @Test
368 public void testIsSelected() {
369 List<ImageEntry> list = getOneImage();
370 list.add(new ImageEntry(new File("test2")));
371
372 ImageData data = new ImageData(list);
373 assertFalse(data.isImageSelected(list.get(0)));
374 data.selectFirstImage();
375 assertTrue(data.isImageSelected(list.get(0)));
376 data.addImageToSelection(list.get(1));
377 assertTrue(data.isImageSelected(list.get(0)));
378 assertTrue(data.isImageSelected(list.get(1)));
379 assertFalse(data.isImageSelected(new ImageEntry()));
380 }
381
382 @Test
383 public void testActionsWithMultipleImagesSelected() {
384 List<ImageEntry> list = getOneImage();
385 list.add(new ImageEntry(new File("test2")));
386 list.add(new ImageEntry(new File("test3")));
387 list.add(new ImageEntry(new File("test3")));
388
389 ImageData data = new ImageData(list);
390 data.addImageToSelection(list.get(1));
391 data.addImageToSelection(list.get(2));
392
393 assertFalse(data.hasNextImage());
394 assertFalse(data.hasPreviousImage());
395
396 data.clearSelectedImage();
397 assertEquals(0, data.getSelectedImages().size());
398 data.addImageToSelection(list.get(1));
399 data.selectFirstImage();
400 assertEquals(1, data.getSelectedImages().size());
401 }
402
403 @Test
404 public void testTriggerListenerWhenNewImageIsSelectedAndRemoved() {
405 List<ImageEntry> list = getOneImage();
406 list.add(new ImageEntry());
407 ImageData data = new ImageData(list);
408 ImageDataUpdateListener listener = new ImageDataUpdateListener() {
409 @Override
410 public void selectedImageChanged(ImageData data) {}
411
412 @Override
413 public void imageDataUpdated(ImageData data) {}
414 };
415 new Expectations(listener) {{
416 listener.selectedImageChanged(data); times = 3;
417 }};
418 data.addImageDataUpdateListener(listener);
419 data.selectFirstImage();
420 data.addImageToSelection(list.get(1));
421 data.removeImageToSelection(list.get(0));
422 }
423
424 @Test
425 public void testUpdatePosition() {
426 List<ImageEntry> list = getOneImage();
427 ImageData data = new ImageData(list);
428
429 new Expectations(list.get(0)) {{
430 list.get(0).setPos((LatLon) any);
431 list.get(0).flagNewGpsData();
432 }};
433 data.updateImagePosition(list.get(0), new LatLon(0, 0));
434 }
435
436 @Test
437 public void testUpdateDirection() {
438 List<ImageEntry> list = getOneImage();
439 ImageData data = new ImageData(list);
440
441 new Expectations(list.get(0)) {{
442 list.get(0).setExifImgDir(0.0);
443 list.get(0).flagNewGpsData();
444 }};
445 data.updateImageDirection(list.get(0), 0);
446 }
447
448 @Test
449 public void testTriggerListenerOnUpdate() {
450 List<ImageEntry> list = getOneImage();
451 ImageData data = new ImageData(list);
452
453 ImageDataUpdateListener listener = new ImageDataUpdateListener() {
454 @Override
455 public void selectedImageChanged(ImageData data) {}
456
457 @Override
458 public void imageDataUpdated(ImageData data) {}
459 };
460 new Expectations(listener) {{
461 listener.imageDataUpdated(data); times = 1;
462 }};
463
464 data.addImageDataUpdateListener(listener);
465 data.updateImageDirection(list.get(0), 0);
466 }
467
468 @Test
469 public void testManuallyTriggerUpdateListener() {
470 List<ImageEntry> list = getOneImage();
471 ImageData data = new ImageData(list);
472
473 ImageDataUpdateListener listener = new ImageDataUpdateListener() {
474 @Override
475 public void selectedImageChanged(ImageData data) {}
476
477 @Override
478 public void imageDataUpdated(ImageData data) {}
479 };
480 new Expectations(listener) {{
481 listener.imageDataUpdated(data); times = 1;
482 }};
483
484 data.addImageDataUpdateListener(listener);
485 data.notifyImageUpdate();
486 }
487}
Note: See TracBrowser for help on using the repository browser.