// 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.assertTrue; import static org.openstreetmap.josm.gui.datatransfer.RelationMemberTransferable.RELATION_MEMBER_DATA; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.UnsupportedFlavorException; import java.util.Collection; import java.util.Collections; import org.junit.Rule; import org.junit.Test; import org.openstreetmap.josm.data.osm.Node; import org.openstreetmap.josm.data.osm.PrimitiveData; import org.openstreetmap.josm.data.osm.RelationMember; import org.openstreetmap.josm.data.osm.RelationMemberData; import org.openstreetmap.josm.gui.datatransfer.data.PrimitiveTransferData; import org.openstreetmap.josm.testutils.JOSMTestRules; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; /** * Unit tests of {@link RelationMemberTransferable} class. */ public class RelationMemberTransferableTest { /** * Setup tests */ @Rule @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD") public JOSMTestRules test = new JOSMTestRules(); /** * Test of {@link RelationMemberTransferable#getTransferDataFlavors()} method. */ @Test public void testGetTransferDataFlavors() { DataFlavor[] flavors = new RelationMemberTransferable(Collections.<RelationMember>emptyList()).getTransferDataFlavors(); assertEquals(3, flavors.length); assertEquals(RELATION_MEMBER_DATA, flavors[0]); assertEquals(PrimitiveTransferData.DATA_FLAVOR, flavors[1]); assertEquals(DataFlavor.stringFlavor, flavors[2]); } /** * Test of {@link RelationMemberTransferable#isDataFlavorSupported} method. */ @Test public void testIsDataFlavorSupported() { RelationMemberTransferable transferable = new RelationMemberTransferable(Collections.<RelationMember>emptyList()); assertTrue(transferable.isDataFlavorSupported(RELATION_MEMBER_DATA)); assertTrue(transferable.isDataFlavorSupported(PrimitiveTransferData.DATA_FLAVOR)); assertFalse(transferable.isDataFlavorSupported(null)); } /** * Test of {@link RelationMemberTransferable#getTransferData} method - nominal case. * @throws UnsupportedFlavorException never */ @Test public void testGetTransferDataNominal() throws UnsupportedFlavorException { RelationMemberTransferable rmt = new RelationMemberTransferable(Collections.singleton(new RelationMember("test", new Node(1)))); assertEquals("node 1 test # incomplete\n", rmt.getTransferData(DataFlavor.stringFlavor)); Collection<RelationMemberData> td = ((RelationMemberTransferable.Data) rmt.getTransferData(RELATION_MEMBER_DATA)) .getRelationMemberData(); assertEquals(1, td.size()); assertEquals(1, td.iterator().next().getMemberId()); assertEquals("test", td.iterator().next().getRole()); Collection<PrimitiveData> primitives = ((PrimitiveTransferData) rmt.getTransferData(PrimitiveTransferData.DATA_FLAVOR)) .getDirectlyAdded(); assertEquals(1, primitives.size()); assertEquals(1, primitives.iterator().next().getId()); } /** * Test of {@link RelationMemberTransferable#getTransferData} method - error case. * @throws UnsupportedFlavorException always */ @Test(expected = UnsupportedFlavorException.class) public void testGetTransferDataError() throws UnsupportedFlavorException { new RelationMemberTransferable(Collections.singleton(new RelationMember(null, new Node(1)))).getTransferData(null); } }