// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.gui.datatransfer; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.UnsupportedFlavorException; import java.util.Arrays; import org.junit.Before; import org.junit.Test; import org.openstreetmap.josm.gui.datatransfer.LayerTransferable.Data; import org.openstreetmap.josm.gui.layer.Layer; import org.openstreetmap.josm.gui.layer.LayerManagerTest; import org.openstreetmap.josm.gui.layer.LayerManagerTest.TestLayer; import org.openstreetmap.josm.gui.layer.MainLayerManager; /** * Tests for {@link LayerTransferable} * @author Michael Zangl * @since 10605 */ public class LayerTransferableTest { private TestLayer layer1; private TestLayer layer2; private MainLayerManager manager; /** * Set up test data */ @Before public void createTestData() { layer1 = new LayerManagerTest.TestLayer(); layer2 = new LayerManagerTest.TestLayer(); manager = new MainLayerManager(); manager.addLayer(layer1); manager.addLayer(layer2); } /** * Test {@link LayerTransferable.Data} */ @Test public void testLayerData() { Data data = new Data(manager, Arrays.<Layer>asList(layer1, layer2)); // need to be identity assertSame(manager, data.getManager()); assertSame(layer1, data.getLayers().get(0)); assertSame(layer2, data.getLayers().get(1)); } /** * Test {@link LayerTransferable#isDataFlavorSupported(java.awt.datatransfer.DataFlavor)} * and {@link LayerTransferable#getTransferDataFlavors()} */ @Test public void testSupportedDataFlavor() { LayerTransferable transferable = new LayerTransferable(manager, Arrays.<Layer>asList(layer1, layer2)); assertFalse(transferable.isDataFlavorSupported(DataFlavor.imageFlavor)); assertTrue(transferable.isDataFlavorSupported(LayerTransferable.LAYER_DATA)); DataFlavor[] flavors = transferable.getTransferDataFlavors(); assertEquals(1, flavors.length); assertEquals(LayerTransferable.LAYER_DATA, flavors[0]); } /** * Test {@link LayerTransferable#getTransferData(DataFlavor)} * @throws Exception if any error occurs */ @Test public void testTransferData() throws Exception { LayerTransferable transferable = new LayerTransferable(manager, Arrays.<Layer>asList(layer1, layer2)); Object object = transferable.getTransferData(LayerTransferable.LAYER_DATA); assertTrue(object instanceof Data); Data data = (Data) object; assertSame(manager, data.getManager()); assertSame(layer1, data.getLayers().get(0)); assertSame(layer2, data.getLayers().get(1)); } /** * Test {@link LayerTransferable#getTransferData(DataFlavor)} for unsupported {@link DataFlavor} * @throws Exception if any error occurs */ @Test(expected = UnsupportedFlavorException.class) public void testTransferDataUnsupported() throws Exception { LayerTransferable transferable = new LayerTransferable(manager, Arrays.<Layer>asList(layer1, layer2)); transferable.getTransferData(DataFlavor.imageFlavor); } }