blob: 994c771a5e27480e2ff07107c57e347224fce2b4 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2003 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.ui.tests.reorg;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IField;
import org.eclipse.jdt.core.IInitializer;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.IMethod;
import org.eclipse.jdt.core.IPackageFragment;
import org.eclipse.jdt.core.IPackageFragmentRoot;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.internal.corext.codemanipulation.CodeGenerationSettings;
import org.eclipse.jdt.internal.corext.refactoring.base.RefactoringStatus;
import org.eclipse.jdt.internal.corext.refactoring.reorg.IReorgQueries;
import org.eclipse.jdt.internal.corext.refactoring.reorg.MoveRefactoring;
import org.eclipse.jdt.internal.ui.preferences.JavaPreferencesSettings;
import org.eclipse.jdt.testplugin.JavaProjectHelper;
import org.eclipse.jdt.ui.tests.refactoring.MySetup;
import org.eclipse.jdt.ui.tests.refactoring.RefactoringTest;
public class MoveTest extends RefactoringTest {
public MoveTest(String name) {
super(name);
}
private static final Class clazz= MoveTest.class;
private static final String REFACTORING_PATH= "Move/";
public static Test suite() {
return new MySetup(new TestSuite(clazz));
}
protected String getRefactoringPath() {
return REFACTORING_PATH;
}
private IReorgQueries createReorgQueries(){
return new MockReorgQueries();
}
private void verifyDisabled(IResource[] resources, IJavaElement[] javaElements) throws JavaModelException {
CodeGenerationSettings settings= JavaPreferencesSettings.getCodeGenerationSettings();
assertTrue("move should be disabled", ! MoveRefactoring.isAvailable(resources, javaElements, settings));
MoveRefactoring refactoring2= MoveRefactoring.create(resources, javaElements, settings);
assertTrue(refactoring2 == null);
}
private MoveRefactoring verifyEnabled(IResource[] resources, IJavaElement[] javaElements, IReorgQueries reorgQueries) throws JavaModelException {
CodeGenerationSettings settings= JavaPreferencesSettings.getCodeGenerationSettings();
assertTrue("move should be enabled", MoveRefactoring.isAvailable(resources, javaElements, settings));
MoveRefactoring refactoring2= MoveRefactoring.create(resources, javaElements, settings);
if (reorgQueries != null)
refactoring2.setReorgQueries(reorgQueries);
assertNotNull(refactoring2);
return refactoring2;
}
private void verifyValidDestination(MoveRefactoring ref, Object destination) throws Exception {
RefactoringStatus status= null;
if (destination instanceof IResource)
status= ref.setDestination((IResource)destination);
else if (destination instanceof IJavaElement)
status= ref.setDestination((IJavaElement)destination);
else assertTrue(false);
assertEquals("destination was expected to be valid: " + status.getMessageMatchingSeverity(status.getSeverity()), RefactoringStatus.OK, status.getSeverity());
}
private void verifyInvalidDestination(MoveRefactoring ref, Object destination) throws Exception {
RefactoringStatus status= null;
if (destination instanceof IResource)
status= ref.setDestination((IResource)destination);
else if (destination instanceof IJavaElement)
status= ref.setDestination((IJavaElement)destination);
else assertTrue(false);
assertEquals("destination was expected to be not valid", RefactoringStatus.FATAL, status.getSeverity());
}
public void testDisabled_empty() throws Exception {
IJavaElement[] javaElements= {};
IResource[] resources= {};
verifyDisabled(resources, javaElements);
}
public void testDisabled_null_element() throws Exception {
IJavaElement[] javaElements= {null};
IResource[] resources= {};
verifyDisabled(resources, javaElements);
}
public void testDisabled_null_resource() throws Exception {
IJavaElement[] javaElements= {};
IResource[] resources= {null};
verifyDisabled(resources, javaElements);
}
public void testDisabled_javaProject() throws Exception {
IJavaElement[] javaElements= {MySetup.getProject()};
IResource[] resources= {};
verifyDisabled(resources, javaElements);
}
public void testDisabled_defaultPackage() throws Exception {
IPackageFragment defaultPackage= getRoot().getPackageFragment("");
assertTrue(defaultPackage.exists());
IJavaElement[] javaElements= {defaultPackage};
IResource[] resources= {};
verifyDisabled(resources, javaElements);
}
public void testDisabled_project() throws Exception {
IJavaElement[] javaElements= {};
IResource[] resources= {MySetup.getProject().getProject()};
verifyDisabled(resources, javaElements);
}
public void testDisabled_notExistingElement() throws Exception {
ICompilationUnit notExistingCu= getPackageP().getCompilationUnit("NotMe.java");
assertTrue(! notExistingCu.exists());
IJavaElement[] javaElements= {notExistingCu};
IResource[] resources= {};
verifyDisabled(resources, javaElements);
}
public void testDisabled_notExistingResource() throws Exception {
IFolder folder= (IFolder)getPackageP().getResource();
IFile notExistingFile= folder.getFile("a.txt");
IJavaElement[] javaElements= {};
IResource[] resources= {notExistingFile};
verifyDisabled(resources, javaElements);
}
public void testDisabled_noCommonParent0() throws Exception {
IJavaElement[] javaElements= {getPackageP(), getRoot()};
IResource[] resources= {};
verifyDisabled(resources, javaElements);
}
public void testDisabled_noCommonParent1() throws Exception {
ICompilationUnit cu= getPackageP().createCompilationUnit("A.java", "package p;class A{void foo(){}}", false, new NullProgressMonitor());
try {
IType classA= cu.getType("A");
IMethod methodFoo= classA.getMethod("foo", new String[0]);
IJavaElement[] javaElements= { classA, methodFoo };
IResource[] resources= {};
verifyDisabled(resources, javaElements);
} finally {
performDummySearch();
cu.delete(true, new NullProgressMonitor());
}
}
// public void testDisabled_noCommonParent2() throws Exception {
// ICompilationUnit cu= getPackageP().createCompilationUnit("A.java", "package p;class A{void foo(){}}", false, new NullProgressMonitor());
// try {
// IType classA= cu.getType("A");
// IJavaElement[] javaElements= { classA, cu};
// IResource[] resources= {};
// verifyDisabled(resources, javaElements);
// } finally {
// performDummySearch();
// cu.delete(true, new NullProgressMonitor());
// }
// }
public void testDisabled_noCommonParent3() throws Exception {
ICompilationUnit cu= getPackageP().createCompilationUnit("A.java", "package p;class A{void foo(){}}", false, new NullProgressMonitor());
try {
IJavaElement[] javaElements= {cu, getPackageP()};
IResource[] resources= {};
verifyDisabled(resources, javaElements);
} finally {
performDummySearch();
cu.delete(true, new NullProgressMonitor());
}
}
public void testDisabled_noCommonParent5() throws Exception {
ICompilationUnit cu= getPackageP().createCompilationUnit("A.java", "package p;class A{void foo(){}}", false, new NullProgressMonitor());
try {
IJavaElement[] javaElements= {cu, getRoot()};
IResource[] resources= {};
verifyDisabled(resources, javaElements);
} finally {
performDummySearch();
cu.delete(true, new NullProgressMonitor());
}
}
public void testDisabled_noCommonParent6() throws Exception {
ICompilationUnit cu= getPackageP().createCompilationUnit("A.java", "package p;class A{void foo(){}}", false, new NullProgressMonitor());
try {
IJavaElement[] javaElements= {cu, getRoot()};
IResource[] resources= {};
verifyDisabled(resources, javaElements);
} finally {
performDummySearch();
cu.delete(true, new NullProgressMonitor());
}
}
public void testDisabled_noCommonParent7() throws Exception {
ICompilationUnit cu= getPackageP().createCompilationUnit("A.java", "package p;class A{class Inner{}}", false, new NullProgressMonitor());
try {
IType classA= cu.getType("A");
IType classInner= classA.getType("Inner");
IJavaElement[] javaElements= { classA, classInner};
IResource[] resources= {};
verifyDisabled(resources, javaElements);
} finally {
performDummySearch();
cu.delete(true, new NullProgressMonitor());
}
}
public void testDisabled_noCommonParent8() throws Exception {
ICompilationUnit cu= getPackageP().createCompilationUnit("A.java", "package p;class A{void foo(){}class Inner{}}", false, new NullProgressMonitor());
try {
IType classA= cu.getType("A");
IMethod methodFoo= classA.getMethod("foo", new String[0]);
IJavaElement[] javaElements= { methodFoo, classA};
IResource[] resources= {};
verifyDisabled(resources, javaElements);
} finally {
performDummySearch();
cu.delete(true, new NullProgressMonitor());
}
}
public void testDestination_no_fileToItself() throws Exception {
IFolder superFolder= (IFolder)getPackageP().getResource();
IFile file= superFolder.getFile("a.txt");
file.create(getStream("123"), true, null);
try{
IJavaElement[] javaElements= {};
IResource[] resources= {file};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= file;
verifyInvalidDestination(ref, destination);
} finally{
performDummySearch();
file.delete(true, false, null);
}
}
public void testDestination_no_fileToSiblingFile() throws Exception {
IFolder superFolder= (IFolder)getPackageP().getResource();
IFile file1= superFolder.getFile("a.txt");
file1.create(getStream("123"), true, null);
IFile file2= superFolder.getFile("b.txt");
file2.create(getStream("123"), true, null);
try{
IJavaElement[] javaElements= {};
IResource[] resources= {file1};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= file2;
verifyInvalidDestination(ref, destination);
} finally{
performDummySearch();
file1.delete(true, false, null);
file2.delete(true, false, null);
}
}
public void testDestination_no_folderToItsef() throws Exception {
IFolder superFolder= (IFolder)getPackageP().getResource();
IFolder folder= superFolder.getFolder("folder");
folder.create(true, true, null);
try{
IJavaElement[] javaElements= {};
IResource[] resources= {folder};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= folder;
verifyInvalidDestination(ref, destination);
} finally{
performDummySearch();
folder.delete(true, false, null);
}
}
public void testDestination_no_cuToItsef() throws Exception {
ICompilationUnit cu= getPackageP().createCompilationUnit("A.java", "package p;class A{void foo(){}class Inner{}}", false, new NullProgressMonitor());
try{
IJavaElement[] javaElements= {cu};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= cu;
verifyInvalidDestination(ref, destination);
} finally{
performDummySearch();
cu.delete(true, null);
}
}
public void testDestination_no_cuToSiblingCu() throws Exception {
ICompilationUnit cu= getPackageP().createCompilationUnit("A.java", "package p;class A{void foo(){}class Inner{}}", false, new NullProgressMonitor());
ICompilationUnit cu1= getPackageP().createCompilationUnit("B.java", "package p;class A{}", false, new NullProgressMonitor());
try{
IJavaElement[] javaElements= {cu};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= cu1;
verifyInvalidDestination(ref, destination);
} finally{
performDummySearch();
cu.delete(true, null);
cu1.delete(true, null);
}
}
public void testDestination_no_cuToSiblingFile() throws Exception {
ICompilationUnit cu= getPackageP().createCompilationUnit("A.java", "package p;class A{void foo(){}class Inner{}}", false, new NullProgressMonitor());
IFolder superFolder= (IFolder)getPackageP().getResource();
IFile file1= superFolder.getFile("a.txt");
file1.create(getStream("123"), true, null);
try{
IJavaElement[] javaElements= {cu};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= file1;
verifyInvalidDestination(ref, destination);
} finally{
performDummySearch();
cu.delete(true, null);
file1.delete(true, null);
}
}
public void testDestination_no_packageToItsef() throws Exception {
IJavaElement[] javaElements= {getPackageP()};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= getPackageP();
verifyInvalidDestination(ref, destination);
}
public void testDestination_no_sourceFolderToItsef() throws Exception {
IJavaElement[] javaElements= {getRoot()};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= getRoot();
verifyInvalidDestination(ref, destination);
}
public void testDestination_no_methodToItsef() throws Exception {
ICompilationUnit cu= getPackageP().createCompilationUnit("A.java", "package p;class A{void foo(){}class Inner{}}", false, new NullProgressMonitor());
try{
IMethod method= cu.getType("A").getMethod("foo", new String[0]);
IJavaElement[] javaElements= {method};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= method;
verifyInvalidDestination(ref, destination);
} finally{
performDummySearch();
cu.delete(true, null);
}
}
public void testDestination_no_fileToParentFolder() throws Exception {
IProject superFolder= MySetup.getProject().getProject();
IFolder folder= superFolder.getFolder("folder");
folder.create(true, true, null);
IFile file= folder.getFile("a.txt");
file.create(getStream("123"), true, null);
try{
IJavaElement[] javaElements= {};
IResource[] resources= {file};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= folder;
verifyInvalidDestination(ref, destination);
} finally{
performDummySearch();
folder.delete(true, false, null);
file.delete(true, false, null);
}
}
public void testDestination_no_fileToParentPackage() throws Exception {
IFolder superFolder= (IFolder)getPackageP().getResource();
IFile file= superFolder.getFile("a.txt");
file.create(getStream("123"), true, null);
try{
IJavaElement[] javaElements= {};
IResource[] resources= {file};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= getPackageP();
verifyInvalidDestination(ref, destination);
} finally{
performDummySearch();
file.delete(true, false, null);
}
}
public void testDestination_no_fileToParentSourceFolder() throws Exception {
IFolder superFolder= (IFolder)getRoot().getResource();
IFile file= superFolder.getFile("a.txt");
file.create(getStream("123"), true, null);
try{
IJavaElement[] javaElements= {};
IResource[] resources= {file};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= getRoot();
verifyInvalidDestination(ref, destination);
} finally{
performDummySearch();
file.delete(true, false, null);
}
}
public void testDestination_no_folderToParentFolder() throws Exception {
IProject superFolder= MySetup.getProject().getProject();
IFolder parentFolder= superFolder.getFolder("folder");
parentFolder.create(true, true, null);
IFolder folder= parentFolder.getFolder("subfolder");
folder.create(true, true, null);
try{
IJavaElement[] javaElements= {};
IResource[] resources= {parentFolder};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= parentFolder;
verifyInvalidDestination(ref, destination);
} finally{
performDummySearch();
parentFolder.delete(true, false, null);
}
}
public void testDestination_no_cuToParentPackage() throws Exception {
ICompilationUnit cu= getPackageP().createCompilationUnit("A.java", "package p;class A{void foo(){}class Inner{}}", false, new NullProgressMonitor());
try{
IJavaElement[] javaElements= {cu};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= cu.getParent();
verifyInvalidDestination(ref, destination);
} finally{
performDummySearch();
cu.delete(true, null);
}
}
public void testDestination_no_packageToParentSourceFolder() throws Exception {
IJavaElement[] javaElements= {getPackageP()};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= getRoot();
verifyInvalidDestination(ref, destination);
}
public void testDestination_no_sourceFolderToParentProject() throws Exception {
IJavaElement[] javaElements= {getRoot()};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= getRoot().getParent();
verifyInvalidDestination(ref, destination);
}
public void testDestination_no_methodToParentType() throws Exception {
ICompilationUnit cu= getPackageP().createCompilationUnit("A.java", "package p;class A{void foo(){}class Inner{}}", false, new NullProgressMonitor());
try{
IMethod method= cu.getType("A").getMethod("foo", new String[0]);
IJavaElement[] javaElements= {method};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= cu.getType("A");
verifyInvalidDestination(ref, destination);
} finally{
performDummySearch();
cu.delete(true, null);
}
}
public void testDestination_yes_cuToMethod() throws Exception {
IPackageFragment pack1= getRoot().createPackageFragment("q", true, new NullProgressMonitor());
ICompilationUnit cu= pack1.createCompilationUnit("A.java", "package p;class A{void foo(){}class Inner{}}", false, new NullProgressMonitor());
ICompilationUnit cu1= getPackageP().createCompilationUnit("B.java", "package p;class B{}", false, new NullProgressMonitor());
try{
IMethod method= cu.getType("A").getMethod("foo", new String[0]);
IJavaElement[] javaElements= {cu1};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= method;
verifyValidDestination(ref, destination);
} finally{
performDummySearch();
pack1.delete(true, new NullProgressMonitor());
cu1.delete(true, null);
}
}
public void testDestination_no_packageToCu() throws Exception {
IPackageFragment pack1= getRoot().createPackageFragment("q", true, new NullProgressMonitor());
ICompilationUnit cu= getPackageP().createCompilationUnit("A.java", "package p;class A{void foo(){}class Inner{}}", false, new NullProgressMonitor());
try{
IJavaElement[] javaElements= {pack1};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= cu;
verifyInvalidDestination(ref, destination);
} finally{
performDummySearch();
pack1.delete(true, new NullProgressMonitor());
}
}
public void testDestination_no_packageToFile() throws Exception {
IPackageFragment pack1= getRoot().createPackageFragment("q", true, new NullProgressMonitor());
IFolder superFolder= (IFolder)getRoot().getResource();
IFile file= superFolder.getFile("a.txt");
file.create(getStream("123"), true, null);
try{
IJavaElement[] javaElements= {pack1};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= file;
verifyInvalidDestination(ref, destination);
} finally{
performDummySearch();
pack1.delete(true, new NullProgressMonitor());
file.delete(true, false, null);
}
}
public void testDestination_no_packageToFolder() throws Exception {
IPackageFragment pack1= getRoot().createPackageFragment("q", true, new NullProgressMonitor());
IFolder superFolder= (IFolder)getRoot().getResource();
IFolder folder= superFolder.getFolder("folder");
folder.create(true, true, null);
try{
IJavaElement[] javaElements= {pack1};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= folder;
verifyInvalidDestination(ref, destination);
} finally{
performDummySearch();
pack1.delete(true, new NullProgressMonitor());
folder.delete(true, false, null);
}
}
public void testDestination_no_packageToSimpleProject() throws Exception {
IProject simpleProject= ResourcesPlugin.getWorkspace().getRoot().getProject("mySImpleProject");
simpleProject.create(null);
simpleProject.open(null);
IPackageFragment pack1= getRoot().createPackageFragment("q", true, new NullProgressMonitor());
try{
IJavaElement[] javaElements= {pack1};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= simpleProject;
verifyInvalidDestination(ref, destination);
} finally{
performDummySearch();
pack1.delete(true, new NullProgressMonitor());
simpleProject.delete(true, true, null);
}
}
// public void testDestination_no_packageToJavaProjectWithNoSourceFolders() throws Exception {
// IJavaProject otherProject= JavaProjectHelper.createJavaProject("otherProject", null);
// JavaProjectHelper.addSourceContainer(otherProject, null);
// IPackageFragment pack1= getRoot().createPackageFragment("q", true, new NullProgressMonitor());
// try{
// IJavaElement[] javaElements= {pack1};
// IResource[] resources= {};
// MoveRefactoring2 ref= verifyEnabled(resources, javaElements, createReorgQueries());
//
// Object destination= otherProject;
// verifyInvalidDestination(ref, destination);
// } finally{
// performDummySearch();
// pack1.delete(true, new NullProgressMonitor());
// JavaProjectHelper.delete(otherProject);
// }
// }
public void testDestination_no_packageToSiblingPackage() throws Exception {
IPackageFragment pack1= getRoot().createPackageFragment("q", true, new NullProgressMonitor());
try{
IJavaElement[] javaElements= {getPackageP()};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= pack1;
verifyInvalidDestination(ref, destination);
} finally{
performDummySearch();
pack1.delete(true, new NullProgressMonitor());
}
}
public void testDestination_no_sourceFolderToCu() throws Exception {
ICompilationUnit cu= getPackageP().createCompilationUnit("A.java", "package p;class A{void foo(){}class Inner{}}", false, new NullProgressMonitor());
IPackageFragmentRoot sourceFolder= JavaProjectHelper.addSourceContainer(MySetup.getProject(), "src2");
try{
IJavaElement[] javaElements= {sourceFolder};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= cu;
verifyInvalidDestination(ref, destination);
} finally{
performDummySearch();
cu.delete(true, new NullProgressMonitor());
sourceFolder.delete(0, 0, new NullProgressMonitor());
}
}
public void testDestination_no_sourceFolderToPackage() throws Exception {
IPackageFragmentRoot sourceFolder= JavaProjectHelper.addSourceContainer(MySetup.getProject(), "src2");
try{
IJavaElement[] javaElements= {sourceFolder};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= getPackageP();
verifyInvalidDestination(ref, destination);
} finally{
performDummySearch();
sourceFolder.delete(0, 0, new NullProgressMonitor());
}
}
public void testDestination_no_sourceFolderToFile() throws Exception {
IFolder superFolder= (IFolder)getRoot().getResource();
IFile file= superFolder.getFile("a.txt");
file.create(getStream("123"), true, null);
IPackageFragmentRoot sourceFolder= JavaProjectHelper.addSourceContainer(MySetup.getProject(), "src2");
try{
IJavaElement[] javaElements= {sourceFolder};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= file;
verifyInvalidDestination(ref, destination);
} finally{
performDummySearch();
sourceFolder.delete(0, 0, new NullProgressMonitor());
file.delete(true, false, null);
}
}
public void testDestination_no_sourceFolderToFolder() throws Exception {
IFolder superFolder= (IFolder)getRoot().getResource();
IFolder folder= superFolder.getFolder("folder");
folder.create(true, true, null);
IPackageFragmentRoot sourceFolder= JavaProjectHelper.addSourceContainer(MySetup.getProject(), "src2");
try{
IJavaElement[] javaElements= {sourceFolder};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= folder;
verifyInvalidDestination(ref, destination);
} finally{
performDummySearch();
sourceFolder.delete(0, 0, new NullProgressMonitor());
folder.delete(true, false, null);
}
}
public void testDestination_no_sourceFolderToSourceFolder() throws Exception {
IPackageFragmentRoot sourceFolder= JavaProjectHelper.addSourceContainer(MySetup.getProject(), "src2");
try{
IJavaElement[] javaElements= {sourceFolder};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= getRoot();
verifyInvalidDestination(ref, destination);
} finally{
performDummySearch();
sourceFolder.delete(0, 0, new NullProgressMonitor());
}
}
public void testDestination_no_sourceFolderToSimpleProject() throws Exception {
IPackageFragmentRoot sourceFolder= JavaProjectHelper.addSourceContainer(MySetup.getProject(), "src2");
IProject simpleProject= ResourcesPlugin.getWorkspace().getRoot().getProject("mySImpleProject");
simpleProject.create(null);
simpleProject.open(null);
try{
IJavaElement[] javaElements= {sourceFolder};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= simpleProject;
verifyInvalidDestination(ref, destination);
} finally{
performDummySearch();
sourceFolder.delete(0, 0, new NullProgressMonitor());
simpleProject.delete(true, true, null);
}
}
public void testDestination_no_sourceFolderToJavaProjecteWithNoSourceFolder() throws Exception {
IJavaProject otherProject= JavaProjectHelper.createJavaProject("otherProject", null);
JavaProjectHelper.addSourceContainer(otherProject, null);
IPackageFragmentRoot sourceFolder= JavaProjectHelper.addSourceContainer(MySetup.getProject(), "src2");
try{
IJavaElement[] javaElements= {sourceFolder};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= otherProject;
verifyInvalidDestination(ref, destination);
}finally{
performDummySearch();
sourceFolder.delete(0, 0, new NullProgressMonitor());
JavaProjectHelper.delete(otherProject);
}
}
public void testDestination_no_methodToCu() throws Exception {
ICompilationUnit cu= getPackageP().createCompilationUnit("A.java", "package p;class A{void foo(){}class Inner{}}", false, new NullProgressMonitor());
ICompilationUnit cu1= getPackageP().createCompilationUnit("B.java", "package p;class B{}", false, new NullProgressMonitor());
try{
IMethod method= cu.getType("A").getMethod("foo", new String[0]);
IJavaElement[] javaElements= {method};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= cu1;
verifyInvalidDestination(ref, destination);
} finally{
performDummySearch();
cu.delete(true, new NullProgressMonitor());
cu1.delete(true, new NullProgressMonitor());
}
}
public void testDestination_no_methodToFile() throws Exception {
ICompilationUnit cu= getPackageP().createCompilationUnit("A.java", "package p;class A{void foo(){}class Inner{}}", false, new NullProgressMonitor());
IFolder superFolder= (IFolder)getRoot().getResource();
IFile file= superFolder.getFile("a.txt");
file.create(getStream("123"), true, null);
try{
IMethod method= cu.getType("A").getMethod("foo", new String[0]);
IJavaElement[] javaElements= {method};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= file;
verifyInvalidDestination(ref, destination);
} finally{
performDummySearch();
cu.delete(true, new NullProgressMonitor());
file.delete(true, false, null);
}
}
public void testDestination_no_methodToFolder() throws Exception {
ICompilationUnit cu= getPackageP().createCompilationUnit("A.java", "package p;class A{void foo(){}class Inner{}}", false, new NullProgressMonitor());
IFolder superFolder= (IFolder)getRoot().getResource();
IFolder folder= superFolder.getFolder("folder");
folder.create(true, true, null);
try{
IMethod method= cu.getType("A").getMethod("foo", new String[0]);
IJavaElement[] javaElements= {method};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= folder;
verifyInvalidDestination(ref, destination);
} finally{
performDummySearch();
cu.delete(true, new NullProgressMonitor());
folder.delete(true, false, null);
}
}
public void testDestination_no_methodToPackage() throws Exception {
ICompilationUnit cu= getPackageP().createCompilationUnit("A.java", "package p;class A{void foo(){}class Inner{}}", false, new NullProgressMonitor());
try{
IMethod method= cu.getType("A").getMethod("foo", new String[0]);
IJavaElement[] javaElements= {method};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= getPackageP();
verifyInvalidDestination(ref, destination);
} finally{
performDummySearch();
cu.delete(true, new NullProgressMonitor());
}
}
public void testDestination_no_methodToSourceFolder() throws Exception {
ICompilationUnit cu= getPackageP().createCompilationUnit("A.java", "package p;class A{void foo(){}class Inner{}}", false, new NullProgressMonitor());
try{
IMethod method= cu.getType("A").getMethod("foo", new String[0]);
IJavaElement[] javaElements= {method};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= getRoot();
verifyInvalidDestination(ref, destination);
} finally{
performDummySearch();
cu.delete(true, new NullProgressMonitor());
}
}
public void testDestination_no_methodToJavaProject() throws Exception {
ICompilationUnit cu= getPackageP().createCompilationUnit("A.java", "package p;class A{void foo(){}class Inner{}}", false, new NullProgressMonitor());
try{
IMethod method= cu.getType("A").getMethod("foo", new String[0]);
IJavaElement[] javaElements= {method};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= MySetup.getProject();
verifyInvalidDestination(ref, destination);
} finally{
performDummySearch();
cu.delete(true, new NullProgressMonitor());
}
}
public void testDestination_no_methodToSimpleProject() throws Exception {
ICompilationUnit cu= getPackageP().createCompilationUnit("A.java", "package p;class A{void foo(){}class Inner{}}", false, new NullProgressMonitor());
IProject simpleProject= ResourcesPlugin.getWorkspace().getRoot().getProject("mySImpleProject");
simpleProject.create(null);
simpleProject.open(null);
try{
IMethod method= cu.getType("A").getMethod("foo", new String[0]);
IJavaElement[] javaElements= {method};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= simpleProject;
verifyInvalidDestination(ref, destination);
} finally{
performDummySearch();
cu.delete(true, new NullProgressMonitor());
simpleProject.delete(true, true, null);
}
}
public void testDestination_no_cuToItself() throws Exception{
ICompilationUnit cu1= getPackageP().createCompilationUnit("A.java", "package p;class A{void foo(){}class Inner{}}", false, new NullProgressMonitor());
try{
IJavaElement[] javaElements= { cu1};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= cu1;
verifyInvalidDestination(ref, destination);
}finally{
performDummySearch();
cu1.delete(true, new NullProgressMonitor());
}
}
public void testDestination_yes_cuToOtherPackage() throws Exception{
IPackageFragment otherPackage= getRoot().createPackageFragment("otherPackage", true, new NullProgressMonitor());
String oldSource= "package p;class A{void foo(){}class Inner{}}";
String newSource= "package otherPackage;class A{void foo(){}class Inner{}}";
ICompilationUnit cu1= getPackageP().createCompilationUnit("A.java", oldSource, false, new NullProgressMonitor());
try{
IJavaElement[] javaElements= { cu1};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= otherPackage;
verifyValidDestination(ref, destination);
assertTrue("source file does not exist before moving", cu1.exists());
RefactoringStatus status= performRefactoring(ref);
assertEquals(null, status);
assertTrue("source file exists after moving", ! cu1.exists());
ICompilationUnit newCu= otherPackage.getCompilationUnit(cu1.getElementName());
assertTrue("new file does not exist after moving", newCu.exists());
assertEqualLines("source differs", newSource, newCu.getSource());
}finally{
performDummySearch();
otherPackage.delete(true, new NullProgressMonitor());
}
}
public void testDestination_yes_cuToRoot() throws Exception{
String newSource= "class A{void foo(){}class Inner{}}";
String oldSource= "package p;class A{void foo(){}class Inner{}}";
ICompilationUnit cu1= getPackageP().createCompilationUnit("A.java", oldSource, false, new NullProgressMonitor());
ICompilationUnit newCu= null;
try{
IJavaElement[] javaElements= { cu1};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= getRoot();
verifyValidDestination(ref, destination);
assertTrue("source file does not exist before moving", cu1.exists());
RefactoringStatus status= performRefactoring(ref);
assertEquals(null, status);
assertTrue("source file exists after moving", ! cu1.exists());
newCu= getRoot().getPackageFragment("").getCompilationUnit(cu1.getElementName());
assertTrue("new file does not exist after moving", newCu.exists());
assertEqualLines("source differs", newSource, newCu.getSource());
}finally{
performDummySearch();
newCu.delete(true, new NullProgressMonitor());
}
}
public void testDestination_yes_cuToProject() throws Exception{
String oldSource= "package p;class A{void foo(){}class Inner{}}";
String newSource= oldSource;
ICompilationUnit cu1= getPackageP().createCompilationUnit("A.java", oldSource, false, new NullProgressMonitor());
IFile newFile= null;
try{
IJavaElement[] javaElements= { cu1};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= MySetup.getProject();
verifyValidDestination(ref, destination);
assertTrue("source file does not exist before moving", cu1.exists());
RefactoringStatus status= performRefactoring(ref);
assertEquals(null, status);
assertTrue("source file exists after moving", ! cu1.exists());
newFile= MySetup.getProject().getProject().getFile(cu1.getElementName());
assertEqualLines("source differs", newSource, getContents(newFile));
}finally{
performDummySearch();
newFile.delete(true, false, null);
}
}
public void testDestination_yes_cuToSimpleProject() throws Exception{
String oldSource= "package p;class A{void foo(){}class Inner{}}";
String newSource= oldSource;
ICompilationUnit cu1= getPackageP().createCompilationUnit("A.java", oldSource, false, new NullProgressMonitor());
IProject simpleProject= ResourcesPlugin.getWorkspace().getRoot().getProject("mySImpleProject");
simpleProject.create(null);
simpleProject.open(null);
IFile newFile= null;
try{
IJavaElement[] javaElements= { cu1};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= simpleProject;
verifyValidDestination(ref, destination);
assertTrue("source file does not exist before moving", cu1.exists());
RefactoringStatus status= performRefactoring(ref);
assertEquals(null, status);
assertTrue("source file exists after moving", ! cu1.exists());
newFile= simpleProject.getFile(cu1.getElementName());
assertEqualLines("source differs", newSource, getContents(newFile));
}finally{
performDummySearch();
simpleProject.delete(true, true, null);
}
}
public void testDestination_yes_cuToFileInDifferentPackage() throws Exception{
ICompilationUnit cu1= getPackageP().createCompilationUnit("A.java", "package p;class A{void foo(){}class Inner{}}", false, new NullProgressMonitor());
IPackageFragment otherPackage= getRoot().createPackageFragment("other", true, new NullProgressMonitor());
IFolder superFolder= (IFolder) otherPackage.getResource();
IFile file= superFolder.getFile("a.txt");
file.create(getStream("123"), true, null);
ICompilationUnit newCu= null;
try{
IJavaElement[] javaElements= { cu1};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= file;
verifyValidDestination(ref, destination);
assertTrue("source file does not exist before", cu1.exists());
RefactoringStatus status= performRefactoring(ref);
assertEquals(null, status);
assertTrue("source file not moved", ! cu1.exists());
newCu= otherPackage.getCompilationUnit(cu1.getElementName());
assertTrue("new file does not exist after", newCu.exists());
String expectedSource= "package other;class A{void foo(){}class Inner{}}";
assertEqualLines("source compare failed", expectedSource, newCu.getSource());
}finally{
performDummySearch();
otherPackage.delete(true, null);
if (newCu != null && newCu.exists())
newCu.delete(true, new NullProgressMonitor());
file.delete(true, false, null);
}
}
public void testDestination_yes_cuToFolder() throws Exception{
ICompilationUnit cu1= getPackageP().createCompilationUnit("A.java", "package p;class A{void foo(){}class Inner{}}", false, new NullProgressMonitor());
IProject superFolder= MySetup.getProject().getProject();
IFolder folder= superFolder.getFolder("folder");
folder.create(true, true, null);
IFile newFile= null;
try{
IJavaElement[] javaElements= { cu1};
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= folder;
verifyValidDestination(ref, destination);
assertTrue("source file does not exist before", cu1.exists());
String expectedSource= cu1.getSource();
RefactoringStatus status= performRefactoring(ref);
assertEquals(null, status);
assertTrue("source file not moved", ! cu1.exists());
newFile= folder.getFile(cu1.getElementName());
assertTrue("new file does not exist after", newFile.exists());
assertEqualLines("source compare failed", expectedSource, getContents(newFile));
}finally{
performDummySearch();
newFile.delete(true, false, null);
folder.delete(true, false, null);
}
}
public void testDestination_yes_fileToSiblingFolder() throws Exception{
IProject superFolder= MySetup.getProject().getProject();
IFile file= superFolder.getFile("a.txt");
file.create(getStream("123"), true, null);
IFolder folder= superFolder.getFolder("folder");
folder.create(true, true, null);
IFile newFile= null;
try{
IJavaElement[] javaElements= {};
IResource[] resources= {file};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= folder;
verifyValidDestination(ref, destination);
assertTrue("source file does not exist before", file.exists());
RefactoringStatus status= performRefactoring(ref);
assertEquals(null, status);
assertTrue("source file not moved", ! file.exists());
newFile= folder.getFile(file.getName());
assertTrue("new file does not exist after", newFile.exists());
}finally{
performDummySearch();
newFile.delete(true, new NullProgressMonitor());
folder.delete(true, new NullProgressMonitor());
}
}
public void testDestination_yes_fileToCu() throws Exception{
IProject superFolder= MySetup.getProject().getProject();
IFile file= superFolder.getFile("a.txt");
file.create(getStream("123"), true, null);
ICompilationUnit cu1= getPackageP().createCompilationUnit("A.java", "package p;class A{void foo(){}class Inner{}}", false, new NullProgressMonitor());
IFile newFile= null;
try{
IJavaElement[] javaElements= {};
IResource[] resources= {file};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= cu1;
verifyValidDestination(ref, destination);
assertTrue("source file does not exist before", file.exists());
RefactoringStatus status= performRefactoring(ref);
assertEquals(null, status);
assertTrue("source file not moved", ! file.exists());
newFile= ((IFolder)cu1.getParent().getResource()).getFile(file.getName());
assertTrue("new file does not exist after", newFile.exists());
}finally{
performDummySearch();
newFile.delete(true, new NullProgressMonitor());
cu1.delete(true, new NullProgressMonitor());
}
}
public void testDestination_yes_fileToPackage() throws Exception{
IProject superFolder= MySetup.getProject().getProject();
IFile file= superFolder.getFile("a.txt");
file.create(getStream("123"), true, null);
IFile newFile= null;
try{
IJavaElement[] javaElements= {};
IResource[] resources= {file};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= getPackageP();
verifyValidDestination(ref, destination);
assertTrue("source file does not exist before", file.exists());
RefactoringStatus status= performRefactoring(ref);
assertEquals(null, status);
assertTrue("source file not moved", ! file.exists());
newFile= ((IFolder)getPackageP().getResource()).getFile(file.getName());
assertTrue("new file does not exist after", newFile.exists());
}finally{
performDummySearch();
newFile.delete(true, new NullProgressMonitor());
}
}
public void testDestination_yes_fileToMethod() throws Exception {
IFolder superFolder= (IFolder)getRoot().getResource();
IFile file= superFolder.getFile("a.txt");
file.create(getStream("123"), true, null);
ICompilationUnit cu= getPackageP().createCompilationUnit("A.java", "package p;class A{void foo(){}class Inner{}}", false, new NullProgressMonitor());
IFile newFile= null;
try{
IMethod method= cu.getType("A").getMethod("foo", new String[0]);
IJavaElement[] javaElements= {};
IResource[] resources= {file};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= method;
verifyValidDestination(ref, destination);
assertTrue("source file does not exist before", file.exists());
RefactoringStatus status= performRefactoring(ref);
assertEquals(null, status);
assertTrue("source file not moved", ! file.exists());
newFile= ((IFolder)getPackageP().getResource()).getFile(file.getName());
assertTrue("new file does not exist after", newFile.exists());
} finally{
performDummySearch();
file.delete(true, false, null);
cu.delete(true, null);
}
}
public void testDestination_yes_fileToRoot() throws Exception{
IProject superFolder= MySetup.getProject().getProject();
IFile file= superFolder.getFile("a.txt");
file.create(getStream("123"), true, null);
IFile newFile= null;
try{
IJavaElement[] javaElements= {};
IResource[] resources= {file};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= getRoot();
verifyValidDestination(ref, destination);
assertTrue("source file does not exist before", file.exists());
RefactoringStatus status= performRefactoring(ref);
assertEquals(null, status);
assertTrue("source file not moved", ! file.exists());
newFile= ((IFolder)getRoot().getResource()).getFile(file.getName());
assertTrue("new file does not exist after", newFile.exists());
}finally{
performDummySearch();
newFile.delete(true, new NullProgressMonitor());
}
}
public void testDestination_no_fileToParentProject() throws Exception{
IProject superFolder= MySetup.getProject().getProject();
IFile file= superFolder.getFile("a.txt");
file.create(getStream("123"), true, null);
try{
IJavaElement[] javaElements= {};
IResource[] resources= {file};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= MySetup.getProject();
verifyInvalidDestination(ref, destination);
}finally{
performDummySearch();
file.delete(true, new NullProgressMonitor());
}
}
public void testDestination_yes_folderToSiblingFolder() throws Exception{
IProject superFolder= MySetup.getProject().getProject();
IFolder folder= superFolder.getFolder("folder");
folder.create(true, true, null);
IFolder otherFolder= superFolder.getFolder("otherfolder");
otherFolder.create(true, true, null);
IFolder newFolder= null;
try{
IJavaElement[] javaElements= {};
IResource[] resources= {folder};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= otherFolder;
verifyValidDestination(ref, destination);
assertTrue("folder does not exist before", folder.exists());
RefactoringStatus status= performRefactoring(ref);
assertEquals(null, status);
assertTrue("folder not moved", ! folder.exists());
newFolder= otherFolder.getFolder(folder.getName());
assertTrue("new folder does not exist after", newFolder.exists());
} finally{
performDummySearch();
newFolder.delete(true, new NullProgressMonitor());
otherFolder.delete(true, new NullProgressMonitor());
}
}
public void testDestination_no_folderToParentProject() throws Exception{
IProject superFolder= MySetup.getProject().getProject();
IFolder folder= superFolder.getFolder("folder");
folder.create(true, true, null);
try{
IJavaElement[] javaElements= {};
IResource[] resources= {folder};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= MySetup.getProject();
verifyInvalidDestination(ref, destination);
} finally{
performDummySearch();
folder.delete(true, new NullProgressMonitor());
}
}
public void testDestination_yes_folderToSiblingRoot() throws Exception{
IProject superFolder= MySetup.getProject().getProject();
IFolder folder= superFolder.getFolder("folder");
folder.create(true, true, null);
IPackageFragment newPackage= null;
try{
IJavaElement[] javaElements= {};
IResource[] resources= {folder};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= getRoot();
verifyValidDestination(ref, destination);
assertTrue("folder does not exist before", folder.exists());
RefactoringStatus status= performRefactoring(ref);
assertEquals(null, status);
assertTrue("folder not moved", ! folder.exists());
newPackage= getRoot().getPackageFragment(folder.getName());
assertTrue("new folder does not exist after", newPackage.exists());
} finally{
performDummySearch();
newPackage.delete(true, new NullProgressMonitor());
}
}
public void testDestination_yes_folderToPackage() throws Exception{
IProject superFolder= MySetup.getProject().getProject();
IFolder folder= superFolder.getFolder("folder");
folder.create(true, true, null);
IPackageFragment newPackage= null;
try{
IJavaElement[] javaElements= {};
IResource[] resources= {folder};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= getPackageP();
verifyValidDestination(ref, destination);
assertTrue("folder does not exist before", folder.exists());
RefactoringStatus status= performRefactoring(ref);
assertEquals(null, status);
assertTrue("folder not moved", ! folder.exists());
newPackage= getRoot().getPackageFragment(getPackageP().getElementName() + "." + folder.getName());
assertTrue("new package does not exist after", newPackage.exists());
} finally{
performDummySearch();
if (newPackage != null && newPackage.exists())
newPackage.delete(true, new NullProgressMonitor());
}
}
public void testDestination_yes_folderToFileInAnotherFolder() throws Exception{
IProject superFolder= MySetup.getProject().getProject();
IFolder folder= superFolder.getFolder("folder");
folder.create(true, true, null);
IFolder otherFolder= superFolder.getFolder("otherfolder");
otherFolder.create(true, true, null);
IFile fileInAnotherFolder= otherFolder.getFile("f.tex");
fileInAnotherFolder.create(getStream("123"), true, null);
IFolder newFolder= null;
try{
IJavaElement[] javaElements= {};
IResource[] resources= {folder};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= fileInAnotherFolder;
verifyValidDestination(ref, destination);
assertTrue("folder does not exist before", folder.exists());
RefactoringStatus status= performRefactoring(ref);
assertEquals(null, status);
assertTrue("folder not moved", ! folder.exists());
newFolder= otherFolder.getFolder(folder.getName());
assertTrue("new folder does not exist after", newFolder.exists());
} finally{
performDummySearch();
// folder.delete(true, new NullProgressMonitor());
otherFolder.delete(true, new NullProgressMonitor());
}
}
public void testDestination_yes_folderToCu() throws Exception{
IProject superFolder= MySetup.getProject().getProject();
IFolder folder= superFolder.getFolder("folder");
folder.create(true, true, null);
ICompilationUnit cu= getPackageP().createCompilationUnit("A.java", "package p;class A{void foo(){}class Inner{}}", false, new NullProgressMonitor());
IPackageFragment newPackage= null;
try{
IJavaElement[] javaElements= {};
IResource[] resources= {folder};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= cu;
verifyValidDestination(ref, destination);
assertTrue("folder does not exist before", folder.exists());
RefactoringStatus status= performRefactoring(ref);
assertEquals(null, status);
assertTrue("folder not moved", ! folder.exists());
newPackage= getRoot().getPackageFragment(getPackageP().getElementName() + "." + folder.getName());
assertTrue("new package does not exist after", newPackage.exists());
} finally{
performDummySearch();
if (newPackage != null && newPackage.exists())
newPackage.delete(true, new NullProgressMonitor());
cu.delete(true, new NullProgressMonitor());
}
}
public void testDestination_yes_folderToSimpleProject() throws Exception{
IProject superFolder= MySetup.getProject().getProject();
IFolder folder= superFolder.getFolder("folder");
folder.create(true, true, null);
IProject simpleProject= ResourcesPlugin.getWorkspace().getRoot().getProject("mySImpleProject");
simpleProject.create(null);
simpleProject.open(null);
IFolder newFolder= null;
try{
IJavaElement[] javaElements= {};
IResource[] resources= {folder};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= simpleProject;
verifyValidDestination(ref, destination);
assertTrue("folder does not exist before", folder.exists());
RefactoringStatus status= performRefactoring(ref);
assertEquals(null, status);
assertTrue("folder not moved", ! folder.exists());
newFolder= simpleProject.getFolder(folder.getName());
assertTrue("new folder does not exist after", newFolder.exists());
} finally{
performDummySearch();
folder.delete(true, new NullProgressMonitor());
simpleProject.delete(true, true, new NullProgressMonitor());
}
}
public void testDestination_yes_sourceFolderToOtherProject() throws Exception{
IJavaProject otherJavaProject= JavaProjectHelper.createJavaProject("other", "bin");
IPackageFragmentRoot oldRoot= JavaProjectHelper.addSourceContainer(MySetup.getProject(), "newSrc");
IPackageFragmentRoot newRoot= null;
try {
IJavaElement[] javaElements= { oldRoot };
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= otherJavaProject;
verifyValidDestination(ref, destination);
assertTrue("folder does not exist before", oldRoot.exists());
RefactoringStatus status= performRefactoring(ref);
assertEquals(null, status);
assertTrue("folder not moved", ! oldRoot.exists());
newRoot= getSourceFolder(otherJavaProject, oldRoot.getElementName());
assertTrue("new folder does not exist after", newRoot.exists());
} finally {
performDummySearch();
JavaProjectHelper.delete(otherJavaProject);
}
}
public void testDestination_no_methodToItself() throws Exception{
ICompilationUnit cu= null;
try {
cu= createCUfromTestFile(getPackageP(), "A");
IMethod method= cu.getType("A").getMethod("foo", new String[0]);
IJavaElement[] javaElements= { method };
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
Object destination= method;
verifyInvalidDestination(ref, destination);
} finally {
performDummySearch();
if (cu != null)
cu.delete(true, new NullProgressMonitor());
}
}
public void testDestination_yes_methodToOtherType() throws Exception{
ICompilationUnit cu= null;
try {
cu= createCUfromTestFile(getPackageP(), "A");
IMethod method= cu.getType("A").getMethod("foo", new String[0]);
IJavaElement[] javaElements= { method };
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
IType otherType= cu.getType("B");
Object destination= otherType;
verifyValidDestination(ref, destination);
RefactoringStatus status= performRefactoring(ref);
assertEquals(null, status);
String expected= getFileContents(getOutputTestFileName(removeExtension(cu.getElementName())));
assertEqualLines("source differs", expected, cu.getSource());
} finally {
performDummySearch();
if (cu != null)
cu.delete(true, new NullProgressMonitor());
}
}
public void testDestination_yes_fieldToOtherType() throws Exception{
ICompilationUnit cu= null;
try {
cu= createCUfromTestFile(getPackageP(), "A");
IField field= cu.getType("A").getField("f");
IJavaElement[] javaElements= { field };
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
IType otherType= cu.getType("B");
Object destination= otherType;
verifyValidDestination(ref, destination);
RefactoringStatus status= performRefactoring(ref);
assertEquals(null, status);
String expected= getFileContents(getOutputTestFileName(removeExtension(cu.getElementName())));
assertEqualLines("source differs", expected, cu.getSource());
} finally {
performDummySearch();
if (cu != null)
cu.delete(true, new NullProgressMonitor());
}
}
public void testDestination_yes_initializerToOtherType() throws Exception{
ICompilationUnit cu= null;
try {
cu= createCUfromTestFile(getPackageP(), "A");
IInitializer initializer= cu.getType("A").getInitializer(1);
IJavaElement[] javaElements= { initializer };
IResource[] resources= {};
MoveRefactoring ref= verifyEnabled(resources, javaElements, createReorgQueries());
IType otherType= cu.getType("B");
Object destination= otherType;
verifyValidDestination(ref, destination);
RefactoringStatus status= performRefactoring(ref);
assertEquals(null, status);
String expected= getFileContents(getOutputTestFileName(removeExtension(cu.getElementName())));
assertEqualLines("source differs", expected, cu.getSource());
} finally {
performDummySearch();
if (cu != null)
cu.delete(true, new NullProgressMonitor());
}
}
}