Index: .classpath
===================================================================
RCS file: /home/eclipse/org.eclipse.jdt.ui.tests.refactoring/.classpath,v
retrieving revision 1.8
diff -u -r1.8 .classpath
--- .classpath 12 Mar 2003 09:15:35 -0000 1.8
+++ .classpath 14 Aug 2003 17:09:56 -0000
@@ -1,14 +1,15 @@
-
-
-
+
-
+
+
+
+
Index: .project
===================================================================
RCS file: /home/eclipse/org.eclipse.jdt.ui.tests.refactoring/.project,v
retrieving revision 1.4
diff -u -r1.4 .project
--- .project 12 Mar 2003 09:15:35 -0000 1.4
+++ .project 14 Aug 2003 17:09:56 -0000
@@ -3,15 +3,16 @@
org.eclipse.jdt.ui.tests.refactoring
- org.eclipse.jdt.core
- org.eclipse.swt
- org.eclipse.core.runtime
- org.junit
- org.eclipse.ui
+ org.apache.xerces
+ org.eclipse.core.boot
org.eclipse.core.resources
+ org.eclipse.core.runtime
+ org.eclipse.jdt.core
org.eclipse.jdt.ui
org.eclipse.jdt.ui.tests
- org.eclipse.core.boot
+ org.eclipse.swt
+ org.eclipse.ui
+ org.junit
Index: test cases/org/eclipse/jdt/ui/tests/refactoring/infra/AbstractCUTestCase.java
===================================================================
RCS file: /home/eclipse/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/infra/AbstractCUTestCase.java,v
retrieving revision 1.6
diff -u -r1.6 AbstractCUTestCase.java
--- test cases/org/eclipse/jdt/ui/tests/refactoring/infra/AbstractCUTestCase.java 11 Apr 2003 10:31:28 -0000 1.6
+++ test cases/org/eclipse/jdt/ui/tests/refactoring/infra/AbstractCUTestCase.java 14 Aug 2003 17:12:48 -0000
@@ -27,77 +27,114 @@
public AbstractCUTestCase(String name) {
super(name);
}
-
+
protected String getFileContents(InputStream in) throws IOException {
- BufferedReader br= new BufferedReader(new InputStreamReader(in));
-
- StringBuffer sb= new StringBuffer();
+ BufferedReader br = new BufferedReader(new InputStreamReader(in));
+
+ StringBuffer sb = new StringBuffer();
try {
- int read= 0;
- while ((read= br.read()) != -1)
+ int read = 0;
+ while ((read = br.read()) != -1)
sb.append((char) read);
} finally {
br.close();
}
return sb.toString();
}
-
- protected ICompilationUnit createCU(IPackageFragment pack, String name, String contents) throws Exception {
- ICompilationUnit cu= pack.createCompilationUnit(name, contents, true, null);
+
+ protected ICompilationUnit createCU(
+ IPackageFragment pack,
+ String name,
+ String contents)
+ throws Exception {
+ ICompilationUnit cu =
+ pack.createCompilationUnit(name, contents, true, null);
cu.save(null, true);
return cu;
}
-
- protected ICompilationUnit createCU(IPackageFragment pack, String name, InputStream contents) throws Exception {
+
+ protected ICompilationUnit createCU(
+ IPackageFragment pack,
+ String name,
+ InputStream contents)
+ throws Exception {
return createCU(pack, name, getFileContents(contents));
}
//--- creating a compilation unit from a resource folder relative to a plugin ----------------------------------
-
- protected abstract InputStream getFileInputStream(String fileName) throws IOException;
+
+ protected abstract InputStream getFileInputStream(String fileName)
+ throws IOException;
protected String getResourceLocation() {
return "";
}
- protected ICompilationUnit createCU(IPackageFragment pack, String name) throws Exception {
- name= adaptName(name);
- return createCU(pack, name, getFileInputStream(getFilePath(pack, name)));
+ protected ICompilationUnit createCU(IPackageFragment pack, String name)
+ throws Exception {
+ name = adaptName(name);
+ return createCU(
+ pack,
+ name,
+ getFileInputStream(getFilePath(pack, name)));
}
-
+
protected String adaptName(String name) {
return name + ".java";
}
-
- protected String getProofedContent(String folder, String name) throws Exception {
- name= adaptName(name);
+
+ protected String getProofedContent(String folder, String name)
+ throws Exception {
+ name = adaptName(name);
return getFileContents(getFileInputStream(getFilePath(folder, name)));
}
-
+
private String getFilePath(String path, String name) {
return getResourceLocation() + path + "/" + name;
}
-
+
private String getFilePath(IPackageFragment pack, String name) {
- return getFilePath(pack.getElementName(), name);
+ return getFilePath(pack.getElementName(), name);
}
-
+
//---- helper to compare two file without considering the package statement
-
+
public static void compareSource(String refactored, String proofed) {
compareSource(refactored, proofed, true);
}
-
- public static void compareSource(String refactored, String proofed, boolean skipPackageDeclaration) {
- int index= skipPackageDeclaration ? index = refactored.indexOf(';'): 0;
- String[] refactoredCode= Strings.convertIntoLines(refactored.substring(index));
- index= proofed.indexOf(';');
- String[] proofedCode= Strings.convertIntoLines(proofed.substring(index));
- assertEquals("Length difference", proofedCode.length, refactoredCode.length);
- for (int i= 0; i < proofedCode.length; i++) {
- assertEquals("Line " + (i + 1) + " different: ", proofedCode[i], refactoredCode[i]);
+
+ public static void compareSource(
+ String refactored,
+ String proofed,
+ boolean skipPackageDeclaration) {
+ int index =
+ skipPackageDeclaration ? index = refactored.indexOf(';') : 0;
+ String[] refactoredCode =
+ Strings.convertIntoLines(refactored.substring(index));
+ index = proofed.indexOf(';');
+ String[] proofedCode =
+ Strings.convertIntoLines(proofed.substring(index));
+ for (int i = 0; i < proofedCode.length; i++) {
+ System.out.println(i + proofedCode[i] + "!");
+// for (int j = 0; j < proofedCode[i].length(); j++)
+// System.out.print((int) proofedCode[i].charAt(j) + " ");
+// System.out.println();
+// for (int j = 0; j < refactoredCode[i].length(); j++)
+// System.out.print((int) refactoredCode[i].charAt(j) + " ");
+ }
+ for (int i = 0; i < refactoredCode.length; i++) {
+ System.out.println(i + refactoredCode[i] + "!");
+ }
+ assertEquals(
+ "Length difference",
+ proofedCode.length,
+ refactoredCode.length);
+ for (int i = 0; i < proofedCode.length; i++) {
+ assertEquals(
+ "Line " + (i + 1) + " different: ",
+ proofedCode[i],
+ refactoredCode[i]);
}
}
-
-}
+}
Index: resources/RemoveWorkSpace/RemoveTests/object_in/SomeException.java
===================================================================
RCS file: resources/RemoveWorkSpace/RemoveTests/object_in/SomeException.java
diff -N resources/RemoveWorkSpace/RemoveTests/object_in/SomeException.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ resources/RemoveWorkSpace/RemoveTests/object_in/SomeException.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,2 @@
+package object_in;
+class SomeException extends java.lang.Exception{}
Index: resources/RemoveWorkSpace/RemoveTests/object_in/TestAExceptionIsNotReferencedAtAll.java
===================================================================
RCS file: resources/RemoveWorkSpace/RemoveTests/object_in/TestAExceptionIsNotReferencedAtAll.java
diff -N resources/RemoveWorkSpace/RemoveTests/object_in/TestAExceptionIsNotReferencedAtAll.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ resources/RemoveWorkSpace/RemoveTests/object_in/TestAExceptionIsNotReferencedAtAll.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,8 @@
+package object_in;
+
+public class TestAExceptionIsNotReferencedAtAll {
+}
+/** Test */
+/* Some Comment */
+// One more line
+class AException extends java.lang.Exception{}
Index: resources/RemoveWorkSpace/RemoveTests/object_in/TestCalledMethodOnlyDeclaresAException.java
===================================================================
RCS file: resources/RemoveWorkSpace/RemoveTests/object_in/TestCalledMethodOnlyDeclaresAException.java
diff -N resources/RemoveWorkSpace/RemoveTests/object_in/TestCalledMethodOnlyDeclaresAException.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ resources/RemoveWorkSpace/RemoveTests/object_in/TestCalledMethodOnlyDeclaresAException.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,10 @@
+package object_in;
+
+public class TestCalledMethodOnlyDeclaresAException {
+public void a() throws AException{}
+public void b() throws AException{
+a();
+}
+}
+
+class AException extends java.lang.Exception{}
Index: resources/RemoveWorkSpace/RemoveTests/object_in/TestCalledMethodRaisesAException.java
===================================================================
RCS file: resources/RemoveWorkSpace/RemoveTests/object_in/TestCalledMethodRaisesAException.java
diff -N resources/RemoveWorkSpace/RemoveTests/object_in/TestCalledMethodRaisesAException.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ resources/RemoveWorkSpace/RemoveTests/object_in/TestCalledMethodRaisesAException.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,10 @@
+package object_in;
+
+public class TestCalledMethodRaisesAException {
+public void a() throws AException{throw new AException();}
+public void b() throws AException{
+a();
+}
+}
+
+class AException extends java.lang.Exception{}
Index: resources/RemoveWorkSpace/RemoveTests/object_in/TestMethodOnlyDeclaresAException.java
===================================================================
RCS file: resources/RemoveWorkSpace/RemoveTests/object_in/TestMethodOnlyDeclaresAException.java
diff -N resources/RemoveWorkSpace/RemoveTests/object_in/TestMethodOnlyDeclaresAException.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ resources/RemoveWorkSpace/RemoveTests/object_in/TestMethodOnlyDeclaresAException.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,7 @@
+package object_in;
+
+public class TestMethodOnlyDeclaresAException {
+public void a() throws AException{}
+}
+
+class AException extends java.lang.Exception{}
Index: resources/RemoveWorkSpace/RemoveTests/object_in/TestSimpleDetection.java
===================================================================
RCS file: resources/RemoveWorkSpace/RemoveTests/object_in/TestSimpleDetection.java
diff -N resources/RemoveWorkSpace/RemoveTests/object_in/TestSimpleDetection.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ resources/RemoveWorkSpace/RemoveTests/object_in/TestSimpleDetection.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,30 @@
+package object_in;
+
+public class TestSimpleDetection extends java.lang.Exception {}
+
+class A {
+
+public void passesTheException() throws TestSimpleDetection {
+B.justDeclaresTheException();
+}
+
+}
+
+class B {
+public static void justDeclaresTheException() throws TestSimpleDetection{
+//
+}
+
+}
+class C {
+public static void raisesTheException() throws TestSimpleDetection{
+throw new TestSimpleDetection();
+}
+public static void callMethodThatRaisesTheException() throws TestSimpleDetection{
+raisesTheException();
+callMethodThatRaisesTheException2();
+}
+public static void callMethodThatRaisesTheException2() throws TestSimpleDetection{
+raisesTheException();
+}
+}
Index: resources/RemoveWorkSpace/RemoveTests/object_in/TestSomeExceptionLivesInADifferentCUAndIsToBeRemoved.java
===================================================================
RCS file: resources/RemoveWorkSpace/RemoveTests/object_in/TestSomeExceptionLivesInADifferentCUAndIsToBeRemoved.java
diff -N resources/RemoveWorkSpace/RemoveTests/object_in/TestSomeExceptionLivesInADifferentCUAndIsToBeRemoved.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ resources/RemoveWorkSpace/RemoveTests/object_in/TestSomeExceptionLivesInADifferentCUAndIsToBeRemoved.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,5 @@
+package object_in;
+
+public class TestSomeExceptionLivesInADifferentCUAndIsToBeRemoved {
+ void a() throws SomeException {}
+}
Index: resources/RemoveWorkSpace/RemoveTests/object_in/TestSurroundingStatementsDoNotDisturbAnalysis.java
===================================================================
RCS file: resources/RemoveWorkSpace/RemoveTests/object_in/TestSurroundingStatementsDoNotDisturbAnalysis.java
diff -N resources/RemoveWorkSpace/RemoveTests/object_in/TestSurroundingStatementsDoNotDisturbAnalysis.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ resources/RemoveWorkSpace/RemoveTests/object_in/TestSurroundingStatementsDoNotDisturbAnalysis.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,17 @@
+package object_in;
+
+public class TestSurroundingStatementsDoNotDisturbAnalysis {
+public void a() throws AException{
+int i = 0;
+i++;
+throw new AException();}
+public void b() throws AException{
+System.out.println("");
+a();
+System.out.println("");
+}
+public void c() throws AException{
+System.out.println("");
+}
+}
+class AException extends java.lang.Exception{}
Index: resources/RemoveWorkSpace/RemoveTests/object_out/TestAExceptionIsNotReferencedAtAll.java
===================================================================
RCS file: resources/RemoveWorkSpace/RemoveTests/object_out/TestAExceptionIsNotReferencedAtAll.java
diff -N resources/RemoveWorkSpace/RemoveTests/object_out/TestAExceptionIsNotReferencedAtAll.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ resources/RemoveWorkSpace/RemoveTests/object_out/TestAExceptionIsNotReferencedAtAll.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,4 @@
+package object_out;
+
+public class TestAExceptionIsNotReferencedAtAll {
+}
Index: resources/RemoveWorkSpace/RemoveTests/object_out/TestCalledMethodOnlyDeclaresAException.java
===================================================================
RCS file: resources/RemoveWorkSpace/RemoveTests/object_out/TestCalledMethodOnlyDeclaresAException.java
diff -N resources/RemoveWorkSpace/RemoveTests/object_out/TestCalledMethodOnlyDeclaresAException.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ resources/RemoveWorkSpace/RemoveTests/object_out/TestCalledMethodOnlyDeclaresAException.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,8 @@
+package object_out;
+
+public class TestCalledMethodOnlyDeclaresAException {
+public void a(){}
+public void b(){
+a();
+}
+}
Index: resources/RemoveWorkSpace/RemoveTests/object_out/TestCalledMethodRaisesAException.java
===================================================================
RCS file: resources/RemoveWorkSpace/RemoveTests/object_out/TestCalledMethodRaisesAException.java
diff -N resources/RemoveWorkSpace/RemoveTests/object_out/TestCalledMethodRaisesAException.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ resources/RemoveWorkSpace/RemoveTests/object_out/TestCalledMethodRaisesAException.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,10 @@
+package object_out;
+
+public class TestCalledMethodRaisesAException {
+public void a() throws AException{throw new AException();}
+public void b() throws AException{
+a();
+}
+}
+
+class AException extends java.lang.Exception{}
Index: resources/RemoveWorkSpace/RemoveTests/object_out/TestMethodOnlyDeclaresAException.java
===================================================================
RCS file: resources/RemoveWorkSpace/RemoveTests/object_out/TestMethodOnlyDeclaresAException.java
diff -N resources/RemoveWorkSpace/RemoveTests/object_out/TestMethodOnlyDeclaresAException.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ resources/RemoveWorkSpace/RemoveTests/object_out/TestMethodOnlyDeclaresAException.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,5 @@
+package object_out;
+
+public class TestMethodOnlyDeclaresAException {
+public void a(){}
+}
Index: resources/RemoveWorkSpace/RemoveTests/object_out/TestSimpleDetection.java
===================================================================
RCS file: resources/RemoveWorkSpace/RemoveTests/object_out/TestSimpleDetection.java
diff -N resources/RemoveWorkSpace/RemoveTests/object_out/TestSimpleDetection.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ resources/RemoveWorkSpace/RemoveTests/object_out/TestSimpleDetection.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,30 @@
+package object_out;
+
+public class TestSimpleDetection extends java.lang.Exception {}
+
+class A {
+
+public void passesTheException() throws TestSimpleDetection {
+B.justDeclaresTheException();
+}
+
+}
+
+class B {
+public static void justDeclaresTheException() throws TestSimpleDetection{
+//
+}
+
+}
+class C {
+public static void raisesTheException() throws TestSimpleDetection{
+throw new TestSimpleDetection();
+}
+public static void callMethodThatRaisesTheException() throws TestSimpleDetection{
+raisesTheException();
+callMethodThatRaisesTheException2();
+}
+public static void callMethodThatRaisesTheException2() throws TestSimpleDetection{
+raisesTheException();
+}
+}
Index: resources/RemoveWorkSpace/RemoveTests/object_out/TestSomeExceptionLivesInADifferentCUAndIsToBeRemoved.java
===================================================================
RCS file: resources/RemoveWorkSpace/RemoveTests/object_out/TestSomeExceptionLivesInADifferentCUAndIsToBeRemoved.java
diff -N resources/RemoveWorkSpace/RemoveTests/object_out/TestSomeExceptionLivesInADifferentCUAndIsToBeRemoved.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ resources/RemoveWorkSpace/RemoveTests/object_out/TestSomeExceptionLivesInADifferentCUAndIsToBeRemoved.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,5 @@
+package object_out;
+
+public class TestSomeExceptionLivesInADifferentCUAndIsToBeRemoved {
+ void a(){}
+}
Index: resources/RemoveWorkSpace/RemoveTests/object_out/TestSurroundingStatementsDoNotDisturbAnalysis.java
===================================================================
RCS file: resources/RemoveWorkSpace/RemoveTests/object_out/TestSurroundingStatementsDoNotDisturbAnalysis.java
diff -N resources/RemoveWorkSpace/RemoveTests/object_out/TestSurroundingStatementsDoNotDisturbAnalysis.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ resources/RemoveWorkSpace/RemoveTests/object_out/TestSurroundingStatementsDoNotDisturbAnalysis.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,17 @@
+package object_out;
+
+public class TestSurroundingStatementsDoNotDisturbAnalysis {
+public void a() throws AException{
+int i = 0;
+i++;
+throw new AException();}
+public void b() throws AException{
+System.out.println("");
+a();
+System.out.println("");
+}
+public void c(){
+System.out.println("");
+}
+}
+class AException extends java.lang.Exception{}
Index: test cases/org/eclipse/jdt/ui/tests/refactoring/RemoveTestSetup.java
===================================================================
RCS file: test cases/org/eclipse/jdt/ui/tests/refactoring/RemoveTestSetup.java
diff -N test cases/org/eclipse/jdt/ui/tests/refactoring/RemoveTestSetup.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ test cases/org/eclipse/jdt/ui/tests/refactoring/RemoveTestSetup.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,72 @@
+//TODO copyright stuff
+//TODO check about reuse from SelfTests (generalize?)
+package org.eclipse.jdt.ui.tests.refactoring;
+
+import junit.extensions.TestSetup;
+import junit.framework.Test;
+
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.IWorkspaceDescription;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IPackageFragment;
+import org.eclipse.jdt.core.IPackageFragmentRoot;
+import org.eclipse.jdt.internal.corext.refactoring.base.Refactoring;
+import org.eclipse.jdt.internal.corext.refactoring.remove.RemoveRefactoring;
+import org.eclipse.jdt.testplugin.JavaProjectHelper;
+
+public class RemoveTestSetup extends TestSetup {
+
+ private IJavaProject fJavaProject;
+ private IPackageFragmentRoot fRoot;
+ private static final String CONTAINER = "src";
+
+ private IPackageFragment fBaseTypes;
+ private IPackageFragment fObjectTypes;
+ private IPackageFragment fInvalid;
+
+ public RemoveTestSetup(Test test) {
+ super(test);
+ }
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ RemoveRefactoring.log(this, "setUp() in RemoveTestSetup called.");
+ fJavaProject =
+ JavaProjectHelper.createJavaProject("TestProject", "bin");
+ JavaProjectHelper.addRTJar(fJavaProject);
+ fRoot = JavaProjectHelper.addSourceContainer(fJavaProject, CONTAINER);
+
+ Refactoring.getUndoManager().flush();
+ IWorkspace workspace = ResourcesPlugin.getWorkspace();
+ IWorkspaceDescription description = workspace.getDescription();
+ description.setAutoBuilding(false);
+ workspace.setDescription(description);
+
+ fBaseTypes = getRoot().createPackageFragment("base_in", true, null);
+ fObjectTypes = getRoot().createPackageFragment("object_in", true, null);
+ fInvalid = getRoot().createPackageFragment("invalid", true, null);
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ RefactoringTest.performDummySearch(fJavaProject);
+ JavaProjectHelper.delete(fJavaProject);
+ }
+
+ public IPackageFragmentRoot getRoot() {
+ return fRoot;
+ }
+
+ public IPackageFragment getBasePackage() {
+ return fBaseTypes;
+ }
+
+ public IPackageFragment getObjectPackage() {
+ return fObjectTypes;
+ }
+
+ public IPackageFragment getInvalidPackage() {
+ return fInvalid;
+ }
+}
Index: test cases/org/eclipse/jdt/ui/tests/refactoring/RemoveTests.java
===================================================================
RCS file: test cases/org/eclipse/jdt/ui/tests/refactoring/RemoveTests.java
diff -N test cases/org/eclipse/jdt/ui/tests/refactoring/RemoveTests.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ test cases/org/eclipse/jdt/ui/tests/refactoring/RemoveTests.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,156 @@
+//TODO copyright stuff
+//TODO check about reuse from SelfTests (generalize?)
+
+package org.eclipse.jdt.ui.tests.refactoring;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.jdt.core.ICompilationUnit;
+import org.eclipse.jdt.core.IPackageFragment;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.internal.corext.refactoring.base.ChangeContext;
+import org.eclipse.jdt.internal.corext.refactoring.base.IChange;
+import org.eclipse.jdt.internal.corext.refactoring.base.RefactoringStatus;
+import org.eclipse.jdt.internal.corext.refactoring.remove.RemoveRefactoring;
+import org.eclipse.jdt.ui.tests.refactoring.infra.TestExceptionHandler;
+
+/**
+ * TODO describe me
+ * TODO more than one call to a single method raising an exception within one enclosing method
+ */
+public class RemoveTests extends AbstractSelectionTestCase {
+
+ private static RemoveTestSetup fgTestSetup;
+
+ public RemoveTests(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ fgTestSetup = new RemoveTestSetup(new TestSuite(RemoveTests.class));
+ return fgTestSetup;
+ }
+
+ public void setUp() throws Exception {
+ super.setUp();
+ RemoveRefactoring.log(this, "setUp called.");
+ }
+ public void tearDown() throws Exception {
+ super.tearDown();
+ RemoveRefactoring.log(this, "tearDown called.");
+ }
+ protected String getResourceLocation() {
+ return "RemoveWorkSpace/RemoveTests/";
+ }
+
+ protected String adaptName(String name) {
+ return Character.toUpperCase(name.charAt(0))
+ + name.substring(1)
+ + ".java";
+ }
+
+ private static IType getType(ICompilationUnit unit, String typeName)
+ throws Exception {
+ IType result = null;
+ IType[] types = unit.getAllTypes();
+ for (int i = 0; i < types.length; i++) {
+ IType type = types[i];
+ if (type.exists() && type.getElementName().equals(typeName)) {
+ result = type;
+ break;
+ }
+ }
+ return result;
+ }
+
+ protected void performTest(
+ IPackageFragment packageFragment,
+ String id,
+ String outputFolder,
+ String typeName)
+ throws Exception {
+ RemoveRefactoring.log(
+ this,
+ "performTest(id="
+ + id
+ + " typeName="
+ + typeName
+ + " packageFragment="
+ + packageFragment
+ + " outputFolder="
+ + outputFolder);
+ IProgressMonitor pm = new NullProgressMonitor();
+ ICompilationUnit unit = createCU(packageFragment, id);
+ IType type = getType(unit, typeName);
+ assertNotNull(type);
+
+ RemoveRefactoring refactoring = RemoveRefactoring.create(type);
+ RefactoringStatus status = refactoring.checkPreconditions(pm);
+
+ assertTrue(!status.hasFatalError());
+ IChange change = refactoring.createChange(pm);
+ assertNotNull(change);
+ ChangeContext context = new ChangeContext(new TestExceptionHandler());
+ change.aboutToPerform(context, new NullProgressMonitor());
+ change.perform(context, pm);
+ change.performed();
+ assertNotNull(change.getUndoChange());
+ String source = unit.getSource();
+ String out = getProofedContent(outputFolder, id);
+ compareSource(source, out);
+ }
+
+ private void objectTest(String fieldName) throws Exception {
+ performTest(getObjectPackage(), getName(), "object_out", fieldName);
+ }
+ private IPackageFragment getObjectPackage() throws JavaModelException {
+ return fgTestSetup.getObjectPackage();
+ }
+
+// public void testSimpleDetection() throws Exception {
+// objectTest("TestSimpleDetection");
+// }
+
+ private void objectTest() throws Exception {
+ objectTest("AException");
+ }
+ public void testMethodOnlyDeclaresAException() throws Exception {
+ objectTest();
+ }
+ public void testCalledMethodOnlyDeclaresAException() throws Exception {
+ objectTest();
+ }
+ public void testCalledMethodRaisesAException() throws Exception {
+ objectTest();
+ }
+
+ public void testSurroundingStatementsDoNotDisturbAnalysis() throws Exception {
+ objectTest();
+ //TODO revisit: The exception needs to be removed
+ //TODO revisit: Add try/catch
+ }
+
+ public void testAExceptionIsNotReferencedAtAll() throws Exception {
+ objectTest();
+ }
+
+ public void testSomeExceptionLivesInADifferentCUAndIsToBeRemoved() throws Exception {
+ objectTest("SomeException");
+ }
+
+
+ //TODO remove exception so that the remaining cu is also to be deleted.
+ //TODO remove the exception when everything is fine.
+ //TODO remove the exception when everything is fine. -- also remove the javadoc
+ //TODO test and code for recursion checkings
+ //TODO test for other Exceptions not directly extending java.lang.Exception
+ //TODO test with other statements
+ //TODO try/catch test
+ //TODO test with also removing comments. @throws
+ //TODO test and code that subclasses of the chosen exceptions are also checked
+ //TODO check in the preconditions that the cu is without compile errors etc.
+}