Bug 110074  -  Breakpoints are not added to default breakpoint working set
diff --git a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/AutomatedSuite.java b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/AutomatedSuite.java
index f02570d..a741c0c 100644
--- a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/AutomatedSuite.java
+++ b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/AutomatedSuite.java
@@ -75,6 +75,7 @@
 import org.eclipse.jdt.debug.tests.core.WatchExpressionTests;
 import org.eclipse.jdt.debug.tests.core.WatchpointTests;
 import org.eclipse.jdt.debug.tests.core.WorkspaceSourceContainerTests;
+import org.eclipse.jdt.debug.tests.ui.BreakpointWorkingSetTests;
 import org.eclipse.jdt.debug.tests.ui.ImportBreakpointsTest;
 
 /**
@@ -115,6 +116,7 @@
 		addTest(new TestSuite(SuspendVMBreakpointsTests.class));
 		addTest(new TestSuite(PreLaunchBreakpointTest.class)); 
 		addTest(new TestSuite(ImportBreakpointsTest.class));
+		addTest(new TestSuite(BreakpointWorkingSetTests.class));
 		addTest(new TestSuite(StepFilterTests.class));
 
 		addTest(new TestSuite(InstanceVariableTests.class));
diff --git a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/ui/AbstractBreakpointWorkingSetTest.java b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/ui/AbstractBreakpointWorkingSetTest.java
new file mode 100644
index 0000000..482e63d
--- /dev/null
+++ b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/ui/AbstractBreakpointWorkingSetTest.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2005 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jdt.debug.tests.ui;
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.debug.ui.IDebugUIConstants;
+import org.eclipse.jdt.debug.tests.AbstractDebugTest;
+import org.eclipse.ui.IWorkingSet;
+import org.eclipse.ui.IWorkingSetManager;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * Common code for breakpoint working set tests.
+ *  
+ * @since 3.2
+ */
+public abstract class AbstractBreakpointWorkingSetTest extends AbstractDebugTest {
+
+	public AbstractBreakpointWorkingSetTest(String name) {
+		super(name);
+	}
+	
+	/**
+	 * Creates and returns a breakpoint working set with the given name if not
+	 * already in existance.
+	 * 
+	 * @param name working set name
+	 */
+	protected IWorkingSet createSet(String name) {
+		IWorkingSetManager wsmanager = getWorkingSetManager();
+		IWorkingSet set = wsmanager.getWorkingSet(name);
+		if(set == null) {
+			set = wsmanager.createWorkingSet(name, new IAdaptable[] {});
+			set.setId(IDebugUIConstants.BREAKPOINT_WORKINGSET_ID);
+			wsmanager.addWorkingSet(set);
+		}//end if
+		return set;
+	}
+
+	/**
+	 * Retruns the working set manager.
+	 * 
+	 * @return working set manager
+	 */
+	protected IWorkingSetManager getWorkingSetManager() {
+		return PlatformUI.getWorkbench().getWorkingSetManager();
+	}
+}
diff --git a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/ui/BreakpointWorkingSetTests.java b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/ui/BreakpointWorkingSetTests.java
new file mode 100644
index 0000000..67a9ef2
--- /dev/null
+++ b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/ui/BreakpointWorkingSetTests.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2005 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jdt.debug.tests.ui;
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.debug.internal.ui.views.breakpoints.BreakpointSetOrganizer;
+import org.eclipse.jdt.debug.core.IJavaLineBreakpoint;
+import org.eclipse.ui.IWorkingSet;
+
+/**
+ * Tests adding breakpoints and automatic addition to working sets.
+ * 
+ * @since 3.2
+ */
+public class BreakpointWorkingSetTests extends AbstractBreakpointWorkingSetTest {
+
+	public BreakpointWorkingSetTests(String name) {
+		super(name);
+	}
+
+	public void testAddToDefaultWorkingSet() throws Exception {
+		String name = "TEST DEFAULT";
+		IWorkingSet set = createSet(name);
+		try {
+			BreakpointSetOrganizer.setDefaultWorkingSet(set);
+			IJavaLineBreakpoint breakpoint = createLineBreakpoint(52, "Breakpoints");
+			IAdaptable[] elements = set.getElements();
+			assertEquals("Wrong number of breakpoints", 1, elements.length);
+			assertEquals("Wrong breakpoint", elements[0], breakpoint);
+		} finally {
+			removeAllBreakpoints();
+			getWorkingSetManager().removeWorkingSet(set);
+		}
+	}
+	
+	public void testNoDefaultWorkingSet() throws Exception {
+		String name = "TEST DEFAULT";
+		IWorkingSet set = createSet(name);
+		try {
+			BreakpointSetOrganizer.setDefaultWorkingSet(null);
+			IJavaLineBreakpoint breakpoint = createLineBreakpoint(52, "Breakpoints");
+			IAdaptable[] elements = set.getElements();
+			assertEquals("Wrong number of breakpoints", 0, elements.length);
+		} finally {
+			removeAllBreakpoints();
+			getWorkingSetManager().removeWorkingSet(set);
+		}
+	}	
+}
diff --git a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/ui/ImportBreakpointsTest.java b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/ui/ImportBreakpointsTest.java
index ecdbb9d..a6b8d6d 100644
--- a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/ui/ImportBreakpointsTest.java
+++ b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/ui/ImportBreakpointsTest.java
@@ -17,25 +17,21 @@
 import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.Path;
-import org.eclipse.debug.core.model.IBreakpoint;
 import org.eclipse.debug.internal.ui.importexport.breakpoints.ExportOperation;
 import org.eclipse.debug.internal.ui.importexport.breakpoints.ImportOperation;
 import org.eclipse.debug.internal.ui.views.breakpoints.BreakpointOrganizerManager;
 import org.eclipse.debug.internal.ui.views.breakpoints.IBreakpointOrganizer;
 import org.eclipse.debug.internal.ui.views.breakpoints.WorkingSetCategory;
-import org.eclipse.debug.ui.IDebugUIConstants;
 import org.eclipse.jdt.debug.testplugin.JavaTestPlugin;
-import org.eclipse.jdt.debug.tests.AbstractDebugTest;
 import org.eclipse.ui.IWorkingSet;
 import org.eclipse.ui.IWorkingSetManager;
-import org.eclipse.ui.PlatformUI;
 
 /**
  * Tests the import operations of the breakpoint import export feature
  * 
  * @since 3.2
  */
-public class ImportBreakpointsTest extends AbstractDebugTest {
+public class ImportBreakpointsTest extends AbstractBreakpointWorkingSetTest {
 
 	/**
 	 * Default constructor
@@ -131,12 +127,10 @@
 		try {
 		//create the working set and add breakpoints to it
 			IBreakpointOrganizer bporg = BreakpointOrganizerManager.getDefault().getOrganizer("org.eclipse.debug.ui.breakpointWorkingSetOrganizer");
-			IWorkingSetManager wsmanager = PlatformUI.getWorkbench().getWorkingSetManager();
+			IWorkingSetManager wsmanager = getWorkingSetManager();
 			String typeName = "DropTests";
 			String setName = "ws_name";
-			IWorkingSet set = wsmanager.createWorkingSet(setName, new IAdaptable[] {});
-			set.setId(IDebugUIConstants.BREAKPOINT_WORKINGSET_ID);
-			wsmanager.addWorkingSet(set);
+			IWorkingSet set = createSet(setName);
 			assertNotNull("workingset does not exist", wsmanager.getWorkingSet(setName));
 			WorkingSetCategory category = new WorkingSetCategory(set);
 			
@@ -193,22 +187,4 @@
 		}//end finally
 	}//end testBreakpointImportMissingResources
 	
-	/**
-	 * Creates a working set and sets the values
-	 * @param breakpoint the breakpoint to add to the workingset
-	 */
-	private void createWorkingSet(String setname, IAdaptable element) {
-		IWorkingSetManager wsmanager = PlatformUI.getWorkbench().getWorkingSetManager();
-		IWorkingSet set = wsmanager.getWorkingSet(setname);
-		if(set == null) {
-			set = wsmanager.createWorkingSet(setname, new IAdaptable[] {});
-			set.setId(IDebugUIConstants.BREAKPOINT_WORKINGSET_ID);
-			wsmanager.addWorkingSet(set);
-		}//end if
-		IAdaptable[] elements = set.getElements();
-		IAdaptable[] newElements = new IAdaptable[elements.length + 1];
-		newElements[newElements.length-1] = (IBreakpoint)element;
-		System.arraycopy(elements, 0, newElements, 0, elements.length);
-		set.setElements(newElements);
-	}//end createWorkingSet
 }//end class