package org.eclipse.php.refactoring.core.test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotSame; import static org.junit.Assert.fail; import java.io.IOException; import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.OperationCanceledException; import org.eclipse.core.runtime.Status; import org.eclipse.dltk.core.DLTKCore; import org.eclipse.dltk.core.ISourceModule; import org.eclipse.ltk.core.refactoring.Change; import org.eclipse.ltk.core.refactoring.Refactoring; import org.eclipse.ltk.core.refactoring.RefactoringStatus; import org.eclipse.ltk.core.refactoring.participants.RefactoringProcessor; import org.eclipse.php.core.ast.nodes.ASTNode; import org.eclipse.php.core.ast.nodes.Program; import org.eclipse.php.core.tests.TestUtils; import org.eclipse.php.internal.core.corext.dom.NodeFinder; import org.eclipse.php.refactoring.core.utils.ASTUtils; import org.eclipse.wst.sse.core.StructuredModelManager; import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel; import org.junit.Assert; public abstract class AbstractRefactoringTest { protected static final char OFFSET_CHAR = '|'; protected Program createProgram(IFile file) throws Exception { ISourceModule sourceModule = DLTKCore.createSourceModuleFrom(file); Program program = null; program = ASTUtils.createProgramFromSource(sourceModule); return program; } protected void performChange(RefactoringProcessor processor) { try { Change change = processor.createChange(new NullProgressMonitor()); if (change != null) { change.perform(new NullProgressMonitor()); } } catch (OperationCanceledException e) { e.printStackTrace(); fail(e.getMessage()); } catch (CoreException e) { e.printStackTrace(); fail(e.getMessage()); } catch (Exception e) { e.printStackTrace(); fail(e.getMessage()); } TestUtils.waitForIndexer(); } protected void checkInitCondition(RefactoringProcessor processor) { try { RefactoringStatus status = processor.checkInitialConditions(new NullProgressMonitor()); assertEquals(Status.OK, status.getSeverity()); } catch (OperationCanceledException e1) { fail(e1.getMessage()); } catch (CoreException e1) { fail(e1.getMessage()); } } protected void checkFinalCondition(RefactoringProcessor processor) { try { RefactoringStatus status = processor.checkFinalConditions(new NullProgressMonitor(), null); assertNotSame(Status.ERROR, status.getSeverity()); } catch (OperationCanceledException e1) { fail(e1.getMessage()); } catch (CoreException e1) { fail(e1.getMessage()); } } protected void performChange(Refactoring processor) { try { Change change = processor.createChange(new NullProgressMonitor()); change.perform(new NullProgressMonitor()); } catch (OperationCanceledException e) { fail(e.getMessage()); } catch (CoreException e) { fail(e.getMessage()); } catch (Exception e) { fail(e.getMessage()); } } protected void checkInitCondition(Refactoring processor) { try { RefactoringStatus status = processor.checkInitialConditions(new NullProgressMonitor()); assertEquals(Status.OK, status.getSeverity()); } catch (OperationCanceledException e1) { fail(e1.getMessage()); } catch (CoreException e1) { fail(e1.getMessage()); } } protected ASTNode locateNode(Program program, int start, int end) { ASTNode locateNode = NodeFinder.perform(program, start, end); return locateNode; } protected IStructuredModel createUnManagedStructuredModelFor(IFile file) throws IOException, CoreException { IStructuredModel model = null; try { model = StructuredModelManager.getModelManager().createUnManagedStructuredModelFor(file); } catch (Exception e) { try { Thread.sleep(3000); model = StructuredModelManager.getModelManager().createUnManagedStructuredModelFor(file); } catch (InterruptedException e1) { Assert.fail(e1.getMessage()); } } return model; } }