Index: trunk/test/unit/org/openstreetmap/josm/actions/PasteTagsActionTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/actions/PasteTagsActionTest.java	(revision 10736)
+++ 	(revision )
@@ -1,55 +1,0 @@
-// License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.actions;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import java.util.Arrays;
-
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.actions.PasteTagsAction.TagPaster;
-import org.openstreetmap.josm.data.osm.NodeData;
-import org.openstreetmap.josm.data.osm.PrimitiveData;
-import org.openstreetmap.josm.data.osm.RelationData;
-import org.openstreetmap.josm.data.osm.WayData;
-
-/**
- * Unit tests for class {@link PasteTagsAction}.
- */
-public class PasteTagsActionTest {
-
-    /**
-     * Setup test.
-     */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init();
-    }
-
-    private static boolean isHeterogeneousSource(PrimitiveData... t) {
-        return new TagPaster(Arrays.asList(t), null).isHeterogeneousSource();
-    }
-
-    /**
-     * Unit test of {@link TagPaster#isHeterogeneousSource}.
-     */
-    @Test
-    public void testTagPasterIsHeterogeneousSource() {
-        // 0 item
-        assertFalse(isHeterogeneousSource());
-        // 1 item
-        assertFalse(isHeterogeneousSource(new NodeData()));
-        assertFalse(isHeterogeneousSource(new WayData()));
-        assertFalse(isHeterogeneousSource(new RelationData()));
-        // 2 items of same type
-        assertFalse(isHeterogeneousSource(new NodeData(), new NodeData()));
-        assertFalse(isHeterogeneousSource(new WayData(), new WayData()));
-        assertFalse(isHeterogeneousSource(new RelationData(), new RelationData()));
-        // 2 items of different type
-        assertTrue(isHeterogeneousSource(new NodeData(), new WayData()));
-        assertTrue(isHeterogeneousSource(new NodeData(), new RelationData()));
-        assertTrue(isHeterogeneousSource(new WayData(), new RelationData()));
-    }
-}
Index: trunk/test/unit/org/openstreetmap/josm/gui/datatransfer/data/PrimitiveTagTransferDataTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/datatransfer/data/PrimitiveTagTransferDataTest.java	(revision 10737)
+++ trunk/test/unit/org/openstreetmap/josm/gui/datatransfer/data/PrimitiveTagTransferDataTest.java	(revision 10737)
@@ -0,0 +1,120 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.datatransfer.data;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Arrays;
+import java.util.Map;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.data.osm.NodeData;
+import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
+import org.openstreetmap.josm.data.osm.PrimitiveData;
+import org.openstreetmap.josm.data.osm.RelationData;
+import org.openstreetmap.josm.data.osm.TagCollection;
+import org.openstreetmap.josm.data.osm.WayData;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
+/**
+ * Test {@link PrimitiveTagTransferData}
+ * @author Michael Zangl
+ */
+public class PrimitiveTagTransferDataTest {
+    /**
+     * Prefs only required because of the dependencies of OSM primitives.
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences();
+
+    private static boolean isHeterogeneousSource(PrimitiveData... t) {
+        return new PrimitiveTagTransferData(Arrays.asList(t)).isHeterogeneousSource();
+    }
+
+    /**
+     * Test method for {@link PrimitiveTagTransferData#PrimitiveTagTransferData(PrimitiveTransferData)}.
+     */
+    @Test
+    public void testPrimitiveTagTransferDataPrimitiveTransferData() {
+        PrimitiveTagTransferData data = new PrimitiveTagTransferData(PrimitiveTransferData.getData(Arrays.asList(new Node(), new Node())));
+        assertEquals(2, data.getSourcePrimitiveCount(OsmPrimitiveType.NODE));
+        assertEquals(0, data.getSourcePrimitiveCount(OsmPrimitiveType.WAY));
+        assertEquals(0, data.getSourcePrimitiveCount(OsmPrimitiveType.RELATION));
+    }
+
+    /**
+     * Test method for {@link PrimitiveTagTransferData#isHeterogeneousSource()}.
+     */
+    @Test
+    public void testIsHeterogeneousSource() {
+        // 0 item
+        assertFalse(isHeterogeneousSource());
+        // 1 item
+        assertFalse(isHeterogeneousSource(new NodeData()));
+        assertFalse(isHeterogeneousSource(new WayData()));
+        assertFalse(isHeterogeneousSource(new RelationData()));
+        // 2 items of same type
+        assertFalse(isHeterogeneousSource(new NodeData(), new NodeData()));
+        assertFalse(isHeterogeneousSource(new WayData(), new WayData()));
+        assertFalse(isHeterogeneousSource(new RelationData(), new RelationData()));
+        // 2 items of different type
+        assertTrue(isHeterogeneousSource(new NodeData(), new WayData()));
+        assertTrue(isHeterogeneousSource(new NodeData(), new RelationData()));
+        assertTrue(isHeterogeneousSource(new WayData(), new RelationData()));
+    }
+
+    /**
+     * Test method for {@link PrimitiveTagTransferData#getForPrimitives(OsmPrimitiveType)}.
+     */
+    @Test
+    public void testGetForPrimitives() {
+        PrimitiveTagTransferData data = createTestData();
+        TagCollection forNode = data.getForPrimitives(OsmPrimitiveType.NODE);
+        assertEquals(1, forNode.getKeys().size());
+        assertEquals(2, forNode.getValues("k").size());
+        TagCollection forWay = data.getForPrimitives(OsmPrimitiveType.WAY);
+        assertEquals(1, forWay.getKeys().size());
+        assertEquals(1, forWay.getValues("x").size());
+        TagCollection forRelation = data.getForPrimitives(OsmPrimitiveType.RELATION);
+        assertEquals(0, forRelation.getKeys().size());
+    }
+
+    private PrimitiveTagTransferData createTestData() {
+        NodeData nd1 = new NodeData();
+        nd1.put("k", "v");
+        NodeData nd2 = new NodeData();
+        nd2.put("k", "v2");
+        WayData way = new WayData();
+        way.put("x", "v");
+        return new PrimitiveTagTransferData(Arrays.asList(nd1, nd2, way));
+    }
+
+    /**
+     * Test method for {@link PrimitiveTagTransferData#getSourcePrimitiveCount(OsmPrimitiveType)}.
+     */
+    @Test
+    public void testGetSourcePrimitiveCount() {
+        PrimitiveTagTransferData data = createTestData();
+        assertEquals(2, data.getSourcePrimitiveCount(OsmPrimitiveType.NODE));
+        assertEquals(1, data.getSourcePrimitiveCount(OsmPrimitiveType.WAY));
+        assertEquals(0, data.getSourcePrimitiveCount(OsmPrimitiveType.RELATION));
+    }
+
+    /**
+     * Test method for {@link PrimitiveTagTransferData#getStatistics()}.
+     */
+    @Test
+    public void testGetStatistics() {
+        PrimitiveTagTransferData data = createTestData();
+        Map<OsmPrimitiveType, Integer> stats = data.getStatistics();
+        assertEquals(2, (int) stats.get(OsmPrimitiveType.NODE));
+        assertEquals(1, (int) stats.get(OsmPrimitiveType.WAY));
+        assertEquals(null, stats.get(OsmPrimitiveType.RELATION));
+    }
+}
