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. +}