[10605] | 1 | // License: GPL. For details, see LICENSE file.
|
---|
| 2 | package org.openstreetmap.josm.gui.datatransfer;
|
---|
| 3 |
|
---|
[17275] | 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;
|
---|
[10605] | 9 |
|
---|
| 10 | import java.awt.datatransfer.DataFlavor;
|
---|
| 11 | import java.awt.datatransfer.UnsupportedFlavorException;
|
---|
| 12 | import java.util.Arrays;
|
---|
| 13 |
|
---|
[17275] | 14 | import org.junit.jupiter.api.BeforeEach;
|
---|
| 15 | import org.junit.jupiter.api.Test;
|
---|
[10605] | 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 | */
|
---|
[17275] | 27 | class LayerTransferableTest {
|
---|
[10605] | 28 | private TestLayer layer1;
|
---|
| 29 | private TestLayer layer2;
|
---|
| 30 | private MainLayerManager manager;
|
---|
| 31 |
|
---|
| 32 | /**
|
---|
| 33 | * Set up test data
|
---|
| 34 | */
|
---|
[17275] | 35 | @BeforeEach
|
---|
[10605] | 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
|
---|
[17275] | 48 | void testLayerData() {
|
---|
[10605] | 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
|
---|
[17275] | 62 | void testSupportedDataFlavor() {
|
---|
[10605] | 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
|
---|
[17275] | 78 | void testTransferData() throws Exception {
|
---|
[10605] | 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 | */
|
---|
[17275] | 92 | @Test
|
---|
| 93 | void testTransferDataUnsupported() {
|
---|
[10605] | 94 | LayerTransferable transferable = new LayerTransferable(manager, Arrays.<Layer>asList(layer1, layer2));
|
---|
| 95 |
|
---|
[17275] | 96 | assertThrows(UnsupportedFlavorException.class, () -> transferable.getTransferData(DataFlavor.imageFlavor));
|
---|
[10605] | 97 | }
|
---|
| 98 | }
|
---|