Index: test/functional/DeleteTest.java
===================================================================
--- test/functional/DeleteTest.java	(revision 285)
+++ test/functional/DeleteTest.java	(revision 285)
@@ -0,0 +1,31 @@
+import org.openstreetmap.josm.Main;
+
+import framework.FunctionalTestCase;
+
+
+public class DeleteTest extends FunctionalTestCase {
+
+	public void test() throws Exception {
+	    key("ctrl-n", "n");
+	    click(100,400);
+	    key("d");
+	    assertEquals(1, Main.ds.allPrimitives().size());
+	    assertEquals(0, Main.ds.allNonDeletedPrimitives().size());
+	    
+	    key("ctrl-z", "ctrl-a", "shift-n", "shift-n");
+	    click(150,400);
+	    key("s");
+	    click(150,400);
+	    key("d");
+	    assertEquals(3, Main.ds.allNonDeletedPrimitives().size());
+	    
+	    click(150,400);
+	    assertPopup();
+	    assertEquals(3, Main.ds.allNonDeletedPrimitives().size());
+	    
+	    click(125, 400);
+	    click(100, 400);
+	    click(150, 400);
+	    assertEquals(0, Main.ds.allNonDeletedPrimitives().size());
+    }
+}
Index: test/functional/SelectionTest.java
===================================================================
--- test/functional/SelectionTest.java	(revision 285)
+++ test/functional/SelectionTest.java	(revision 285)
@@ -0,0 +1,18 @@
+import org.openstreetmap.josm.Main;
+
+import framework.FunctionalTestCase;
+
+public class SelectionTest extends FunctionalTestCase {
+
+	public void test() throws Exception {
+	    key("ctrl-n", "n");
+	    click(100,400);
+	    key("shift-n", "shift-n");
+	    click(150,400);
+	    click(200,400);
+	    click(250,500);
+	    key("shift-s");
+	    drag(250,500,100,400);
+	    assertEquals(7, Main.ds.getSelected().size());
+    }
+}
Index: test/functional/WayTest.java
===================================================================
--- test/functional/WayTest.java	(revision 284)
+++ test/functional/WayTest.java	(revision 285)
@@ -7,26 +7,26 @@
 
 	public void test() throws Exception {
-	    key("ctrl-n", "n");
-	    click(100,400);
-	    click(150,400);
-	    click(200,400);
-	    key("g");
-	    drag(200,400,150,400);
-	    drag(150,400,100,400);
-	    key("s", "ctrl-a", "w");
-	    assertPopup();
-	    assertEquals(1, Main.ds.ways.size());
-	    
-	    key("ctrl-a", "s");
-	    click(125,400,"ctrl");
-	    key("w");
-	    assertPopup();
-	    assertEquals(2, Main.ds.ways.size());
-	    
-	    key("ctrl-z", "ctrl-z", "ctrl-shift-a");
-	    click(125,400);
-	    assertEquals(1, Main.ds.ways.size());
-	    click(175,400);
-	    assertEquals(1, Main.ds.ways.size());
-    }
+		key("ctrl-n", "n");
+		click(100,400);
+		click(150,400);
+		click(200,400);
+		key("g");
+		drag(200,400,150,400);
+		drag(150,400,100,400);
+		key("s", "ctrl-a", "w");
+		assertPopup();
+		assertEquals(1, Main.ds.ways.size());
+
+		key("ctrl-a", "s");
+		click(125,400,"ctrl");
+		key("w");
+		assertPopup();
+		assertEquals(2, Main.ds.ways.size());
+
+		key("ctrl-z", "ctrl-z", "ctrl-shift-a");
+		click(125,400);
+		assertEquals(1, Main.ds.ways.size());
+		click(175,400);
+		assertEquals(1, Main.ds.ways.size());
+	}
 }
Index: test/functional/framework/FunctionalTestCase.java
===================================================================
--- test/functional/framework/FunctionalTestCase.java	(revision 284)
+++ test/functional/framework/FunctionalTestCase.java	(revision 285)
@@ -25,7 +25,9 @@
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.Preferences;
+import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.MainApplication;
 
-public class FunctionalTestCase extends JFCTestCase {
+abstract public class FunctionalTestCase extends JFCTestCase {
 
 	private KeyStroke getKey(String s) {
@@ -65,5 +67,16 @@
 		super.setUp();
 		setHelper(new RobotTestHelper());
+		
+		Main.ds = new DataSet();
+		Main.pref = new Preferences();
+		if (Main.map != null)
+			Main.main.setMapFrame(null);
+		
 		MainApplication.main(new String[]{});
+	}
+	
+	@Override protected void tearDown() throws Exception {
+		Main.parent.setVisible(false);
+		super.tearDown();
 	}
 
Index: test/unit/org/openstreetmap/josm/data/osm/visitor/MergeVisitorTest.java
===================================================================
--- test/unit/org/openstreetmap/josm/data/osm/visitor/MergeVisitorTest.java	(revision 284)
+++ test/unit/org/openstreetmap/josm/data/osm/visitor/MergeVisitorTest.java	(revision 285)
@@ -350,13 +350,3 @@
 		assertEquals(23, ds.segments.iterator().next().id);
 	}
-	
-	public void testDoNotMergeEqualObjectsWithDifferentNonZeroId() throws Exception {
-		DataSet ds = new DataSet();
-		Segment s1 = createSegment(ds, false, false, 23);
-		Segment s2 = new Segment(s1);
-		s2.id = 42;
-		MergeVisitor v = new MergeVisitor(ds, null);
-		v.visit(s2);
-		assertEquals(2, ds.segments.size());
-	}
 }
Index: test/unit/org/openstreetmap/josm/testframework/MotherObject.java
===================================================================
--- test/unit/org/openstreetmap/josm/testframework/MotherObject.java	(revision 284)
+++ test/unit/org/openstreetmap/josm/testframework/MotherObject.java	(revision 285)
@@ -23,4 +23,5 @@
 	    super.setUp();
 	    Main.proj = new Epsg4326();
+	    Main.ds = new DataSet();
     }
 
