1 | // License: GPL. For details, see LICENSE file.
|
---|
2 | package org.openstreetmap.josm.gui.datatransfer;
|
---|
3 |
|
---|
4 | import static org.junit.jupiter.api.Assertions.assertEquals;
|
---|
5 | import static org.junit.jupiter.api.Assertions.assertFalse;
|
---|
6 | import static org.junit.jupiter.api.Assertions.assertSame;
|
---|
7 | import static org.junit.jupiter.api.Assertions.assertTrue;
|
---|
8 | import static org.junit.jupiter.api.Assertions.assertThrows;
|
---|
9 |
|
---|
10 | import java.awt.datatransfer.DataFlavor;
|
---|
11 | import java.awt.datatransfer.UnsupportedFlavorException;
|
---|
12 | import java.util.Arrays;
|
---|
13 |
|
---|
14 | import org.junit.jupiter.api.BeforeEach;
|
---|
15 | import org.junit.jupiter.api.Test;
|
---|
16 | import org.openstreetmap.josm.gui.datatransfer.LayerTransferable.Data;
|
---|
17 | import org.openstreetmap.josm.gui.layer.Layer;
|
---|
18 | import org.openstreetmap.josm.gui.layer.LayerManagerTest;
|
---|
19 | import org.openstreetmap.josm.gui.layer.LayerManagerTest.TestLayer;
|
---|
20 | import org.openstreetmap.josm.gui.layer.MainLayerManager;
|
---|
21 |
|
---|
22 | /**
|
---|
23 | * Tests for {@link LayerTransferable}
|
---|
24 | * @author Michael Zangl
|
---|
25 | * @since 10605
|
---|
26 | */
|
---|
27 | class LayerTransferableTest {
|
---|
28 | private TestLayer layer1;
|
---|
29 | private TestLayer layer2;
|
---|
30 | private MainLayerManager manager;
|
---|
31 |
|
---|
32 | /**
|
---|
33 | * Set up test data
|
---|
34 | */
|
---|
35 | @BeforeEach
|
---|
36 | public void createTestData() {
|
---|
37 | layer1 = new LayerManagerTest.TestLayer();
|
---|
38 | layer2 = new LayerManagerTest.TestLayer();
|
---|
39 | manager = new MainLayerManager();
|
---|
40 | manager.addLayer(layer1);
|
---|
41 | manager.addLayer(layer2);
|
---|
42 | }
|
---|
43 |
|
---|
44 | /**
|
---|
45 | * Test {@link LayerTransferable.Data}
|
---|
46 | */
|
---|
47 | @Test
|
---|
48 | void testLayerData() {
|
---|
49 | Data data = new Data(manager, Arrays.<Layer>asList(layer1, layer2));
|
---|
50 |
|
---|
51 | // need to be identity
|
---|
52 | assertSame(manager, data.getManager());
|
---|
53 | assertSame(layer1, data.getLayers().get(0));
|
---|
54 | assertSame(layer2, data.getLayers().get(1));
|
---|
55 | }
|
---|
56 |
|
---|
57 | /**
|
---|
58 | * Test {@link LayerTransferable#isDataFlavorSupported(java.awt.datatransfer.DataFlavor)}
|
---|
59 | * and {@link LayerTransferable#getTransferDataFlavors()}
|
---|
60 | */
|
---|
61 | @Test
|
---|
62 | void testSupportedDataFlavor() {
|
---|
63 | LayerTransferable transferable = new LayerTransferable(manager, Arrays.<Layer>asList(layer1, layer2));
|
---|
64 |
|
---|
65 | assertFalse(transferable.isDataFlavorSupported(DataFlavor.imageFlavor));
|
---|
66 | assertTrue(transferable.isDataFlavorSupported(LayerTransferable.LAYER_DATA));
|
---|
67 |
|
---|
68 | DataFlavor[] flavors = transferable.getTransferDataFlavors();
|
---|
69 | assertEquals(1, flavors.length);
|
---|
70 | assertEquals(LayerTransferable.LAYER_DATA, flavors[0]);
|
---|
71 | }
|
---|
72 |
|
---|
73 | /**
|
---|
74 | * Test {@link LayerTransferable#getTransferData(DataFlavor)}
|
---|
75 | * @throws Exception if any error occurs
|
---|
76 | */
|
---|
77 | @Test
|
---|
78 | void testTransferData() throws Exception {
|
---|
79 | LayerTransferable transferable = new LayerTransferable(manager, Arrays.<Layer>asList(layer1, layer2));
|
---|
80 |
|
---|
81 | Object object = transferable.getTransferData(LayerTransferable.LAYER_DATA);
|
---|
82 | assertTrue(object instanceof Data);
|
---|
83 | Data data = (Data) object;
|
---|
84 | assertSame(manager, data.getManager());
|
---|
85 | assertSame(layer1, data.getLayers().get(0));
|
---|
86 | assertSame(layer2, data.getLayers().get(1));
|
---|
87 | }
|
---|
88 |
|
---|
89 | /**
|
---|
90 | * Test {@link LayerTransferable#getTransferData(DataFlavor)} for unsupported {@link DataFlavor}
|
---|
91 | */
|
---|
92 | @Test
|
---|
93 | void testTransferDataUnsupported() {
|
---|
94 | LayerTransferable transferable = new LayerTransferable(manager, Arrays.<Layer>asList(layer1, layer2));
|
---|
95 |
|
---|
96 | assertThrows(UnsupportedFlavorException.class, () -> transferable.getTransferData(DataFlavor.imageFlavor));
|
---|
97 | }
|
---|
98 | }
|
---|