| ///******************************************************************************* |
| // * Copyright (c) 2005, 2007 IBM Corporation and others. |
| // * All rights reserved. This program and the accompanying materials |
| // * are made available under the terms of the Eclipse Public License v1.0 |
| // * which accompanies this distribution, and is available at |
| // * http://www.eclipse.org/legal/epl-v10.html |
| // * |
| // * Contributors: |
| // * IBM Corporation - initial API and implementation |
| // *******************************************************************************/ |
| // |
| //package org.eclipse.ui.tests.operations; |
| // |
| //import java.io.BufferedReader; |
| //import java.io.ByteArrayInputStream; |
| //import java.io.IOException; |
| //import java.io.InputStream; |
| //import java.io.InputStreamReader; |
| //import java.net.URI; |
| //import java.text.MessageFormat; |
| //import java.util.ArrayList; |
| //import java.util.HashMap; |
| //import java.util.HashSet; |
| //import java.util.List; |
| //import java.util.Map; |
| //import java.util.Set; |
| // |
| //import org.eclipse.core.commands.ExecutionException; |
| //import org.eclipse.core.commands.operations.IOperationHistory; |
| //import org.eclipse.core.commands.operations.IUndoContext; |
| //import org.eclipse.core.filesystem.EFS; |
| //import org.eclipse.core.filesystem.IFileStore; |
| //import org.eclipse.core.filesystem.URIUtil; |
| //import org.eclipse.core.resources.IFile; |
| //import org.eclipse.core.resources.IFolder; |
| //import org.eclipse.core.resources.IMarker; |
| //import org.eclipse.core.resources.IProject; |
| //import org.eclipse.core.resources.IProjectDescription; |
| //import org.eclipse.core.resources.IResource; |
| //import org.eclipse.core.resources.IWorkspace; |
| //import org.eclipse.core.resources.IWorkspaceRoot; |
| //import org.eclipse.core.resources.ResourcesPlugin; |
| //import org.eclipse.core.runtime.CoreException; |
| //import org.eclipse.core.runtime.IPath; |
| //import org.eclipse.core.runtime.IProgressMonitor; |
| //import org.eclipse.core.runtime.IStatus; |
| //import org.eclipse.core.runtime.Path; |
| //import org.eclipse.core.tests.harness.FileSystemHelper; |
| //import org.eclipse.ui.PlatformUI; |
| //import org.eclipse.ui.ide.undo.AbstractWorkspaceOperation; |
| //import org.eclipse.ui.ide.undo.CopyProjectOperation; |
| //import org.eclipse.ui.ide.undo.CopyResourcesOperation; |
| //import org.eclipse.ui.ide.undo.CreateFileOperation; |
| //import org.eclipse.ui.ide.undo.CreateFolderOperation; |
| //import org.eclipse.ui.ide.undo.CreateMarkersOperation; |
| //import org.eclipse.ui.ide.undo.CreateProjectOperation; |
| //import org.eclipse.ui.ide.undo.DeleteMarkersOperation; |
| //import org.eclipse.ui.ide.undo.DeleteResourcesOperation; |
| //import org.eclipse.ui.ide.undo.MoveProjectOperation; |
| //import org.eclipse.ui.ide.undo.MoveResourcesOperation; |
| //import org.eclipse.ui.ide.undo.UpdateMarkersOperation; |
| //import org.eclipse.ui.internal.operations.AdvancedValidationUserApprover; |
| //import org.eclipse.ui.tests.harness.util.UITestCase; |
| // |
| ///** |
| // * Tests the undo of various workspace operations. Uses the following workspace |
| // * structure to perform the tests |
| // * |
| // * <pre> |
| // * TEST_PROJECT_NAME |
| // * **TEST_FOLDER_NAME |
| // * ****TEST_SUBFOLDER_NAME |
| // * ******TEST_FILEINSUBFOLDER_NAME |
| // * ****TEST_EMPTYFILE_NAME |
| // * ****TEST_RANDOMFILE_NAME |
| // * ****TEST_LINKEDFILE_NAME (linked to random location) |
| // * ****TEST_LINKEDFOLDER_NAME (linked to random location) |
| // * **TEST_FILEINPROJECT_NAME |
| // * TEST_TARGETPROJECT_NAME |
| // * </pre> |
| // * |
| // * @since 3.3 |
| // */ |
| //public class WorkspaceOperationsTests extends UITestCase { |
| // |
| // IProject testProject, targetProject; |
| // |
| // IFolder testFolder, testSubFolder, testLinkedFolder; |
| // |
| // IFile emptyTestFile, testFileWithContent, testLinkedFile, |
| // testFileInSubFolder, testFileInProject; |
| // |
| // private final Set storesToDelete = new HashSet(); |
| // |
| // IOperationHistory history; |
| // |
| // IUndoContext context; |
| // |
| // private static Map initialAttributes = new HashMap(); |
| // static { |
| // initialAttributes.put("Attr1", "Attr1 1.0"); |
| // initialAttributes.put("Attr2", "Attr2 1.0"); |
| // initialAttributes.put("Attr3", "Attr3 1.0"); |
| // initialAttributes.put("Attr4", "Attr4 1.0"); |
| // initialAttributes.put("Attr5", "Attr5 1.0"); |
| // initialAttributes.put("Attr6", "Attr6 1.0"); |
| // }; |
| // |
| // private static Map updatedAttributes = new HashMap(); |
| // static { |
| // updatedAttributes.put("Attr1", "Attr1 1.1"); |
| // updatedAttributes.put("Attr2", "Attr2 1.1"); |
| // updatedAttributes.put("Attr3", "Attr3 1.1"); |
| // updatedAttributes.put("Attr4", "Attr4 1.1"); |
| // updatedAttributes.put("Attr5", "Attr5 1.1"); |
| // updatedAttributes.put("Attr7", "Attr7 1.0"); |
| // }; |
| // |
| // private static Map mergedUpdatedAttributes = new HashMap(); |
| // static { |
| // mergedUpdatedAttributes.put("Attr1", "Attr1 1.1"); |
| // mergedUpdatedAttributes.put("Attr2", "Attr2 1.1"); |
| // mergedUpdatedAttributes.put("Attr3", "Attr3 1.1"); |
| // mergedUpdatedAttributes.put("Attr4", "Attr4 1.1"); |
| // mergedUpdatedAttributes.put("Attr5", "Attr5 1.1"); |
| // mergedUpdatedAttributes.put("Attr6", "Attr6 1.0"); |
| // mergedUpdatedAttributes.put("Attr7", "Attr7 1.0"); |
| // }; |
| // |
| // private static List fileNameExcludes = new ArrayList(); |
| // static { |
| // fileNameExcludes.add(".project"); |
| // }; |
| // |
| // private static String CUSTOM_TYPE = "TestMarkerType"; |
| // |
| // private static String FILE_CONTENTS_EMPTY = ""; |
| // |
| // private static String TEST_PROJECT_NAME = "WorkspaceOperationsTests_Project"; |
| // |
| // private static String TEST_TARGET_PROJECT_NAME = "WorkspaceOperationsTests_MoveCopyTarget"; |
| // |
| // private static String TEST_FOLDER_NAME = "WorkspaceOperationsTests_Folder"; |
| // |
| // private static String TEST_SUBFOLDER_NAME = "WorkspaceOperationsTests_SubFolder"; |
| // |
| // private static String TEST_LINKEDFOLDER_NAME = "WorkspaceOperationsTests_LinkedFolder"; |
| // |
| // private static String TEST_LINKEDFILE_NAME = "WorkspaceOperationTests_LinkedFile"; |
| // |
| // private static String TEST_EMPTYFILE_NAME = "WorkspaceOperationsTests_EmptyFile"; |
| // |
| // private static String TEST_RANDOMFILE_NAME = "WorkspaceOperationsTests_RandomContentFile.txt"; |
| // |
| // private static String TEST_FILEINPROJECT_NAME = "WorkspaceOperationsTests_FileInProject"; |
| // |
| // private static String TEST_FILEINSUBFOLDER_NAME = "WorkspaceOperationsTests_FileInSubFolder"; |
| // |
| // private static String TEST_NEWPROJECT_NAME = "WorkspaceOperationTests_NewProject"; |
| // |
| // private static String TEST_NEWFOLDER_NAME = "WorkspaceOperationTests_NewFolder"; |
| // |
| // private static String TEST_NEWFILE_NAME = "WorkspaceOperationTests_NewFile"; |
| // |
| // private static String TEST_NEWNESTEDFOLDER_NAME = "scooby/dooby/doo/WorkspaceOperationTests_NewFolder"; |
| // |
| // private static String TEST_NEWNESTEDFILE_NAME = "scooby/dooby/doo/WorkspaceOperationTests_NewFile"; |
| // |
| // // Insider knowledge of WorkspaceUndoMonitor's change threshhold |
| // private static int NUM_CHANGES = 10; |
| // |
| // class FileSnapshot extends ResourceSnapshot { |
| // String content; |
| // |
| // URI location; |
| // |
| // MarkerSnapshot[] markerSnapshots; |
| // |
| // FileSnapshot(IFile file) throws CoreException { |
| // content = readContent(file); |
| // name = file.getName(); |
| // if (file.isLinked()) { |
| // location = file.getLocationURI(); |
| // } |
| // IMarker[] markers = file.findMarkers(null, true, |
| // IResource.DEPTH_INFINITE); |
| // markerSnapshots = new MarkerSnapshot[markers.length]; |
| // for (int i = 0; i < markers.length; i++) { |
| // markerSnapshots[i] = new MarkerSnapshot(markers[i]); |
| // } |
| // } |
| // |
| // boolean isValid(IResource parent) throws CoreException { |
| // IResource resource = getWorkspaceRoot().findMember( |
| // parent.getFullPath().append(name)); |
| // if (resource == null || !(resource instanceof IFile)) { |
| // return false; |
| // } |
| // IFile file = (IFile) resource; |
| // boolean contentMatch = readContent(file).equals(content); |
| // if (file.isLinked()) { |
| // contentMatch = contentMatch |
| // && file.getLocationURI().equals(location); |
| // } |
| // if (!contentMatch) { |
| // return false; |
| // } |
| // for (int i = 0; i < markerSnapshots.length; i++) { |
| // if (!markerSnapshots[i].existsOn(resource)) { |
| // return false; |
| // } |
| // } |
| // return true; |
| // } |
| // } |
| // |
| // class FolderSnapshot extends ResourceSnapshot { |
| // URI location; |
| // |
| // ResourceSnapshot[] memberSnapshots; |
| // |
| // FolderSnapshot(IFolder folder) throws CoreException { |
| // name = folder.getName(); |
| // if (folder.isLinked()) { |
| // location = folder.getLocationURI(); |
| // } |
| // IResource[] members = folder.members(); |
| // memberSnapshots = new ResourceSnapshot[members.length]; |
| // for (int i = 0; i < members.length; i++) { |
| // memberSnapshots[i] = snapshotFromResource(members[i]); |
| // } |
| // } |
| // |
| // boolean isValid(IResource parent) throws CoreException { |
| // IResource resource = getWorkspaceRoot().findMember( |
| // parent.getFullPath().append(name)); |
| // if (resource == null || !(resource instanceof IFolder)) { |
| // return false; |
| // } |
| // IFolder folder = (IFolder) resource; |
| // if (folder.isLinked()) { |
| // if (!folder.getLocationURI().equals(location)) { |
| // return false; |
| // } |
| // } |
| // for (int i = 0; i < memberSnapshots.length; i++) { |
| // if (!fileNameExcludes.contains(memberSnapshots[i].name)) { |
| // if (!memberSnapshots[i].isValid(folder)) { |
| // return false; |
| // } |
| // } |
| // } |
| // return true; |
| // } |
| // } |
| // |
| // class MarkerSnapshot { |
| // String type; |
| // |
| // Map attributes; |
| // |
| // MarkerSnapshot(IMarker marker) throws CoreException { |
| // type = marker.getType(); |
| // attributes = marker.getAttributes(); |
| // } |
| // |
| // boolean existsOn(IResource resource) throws CoreException { |
| // // comparison is based on equality of attributes, since id will |
| // // change on create/delete/recreate sequence |
| // IMarker[] markers = resource.findMarkers(type, false, |
| // IResource.DEPTH_ZERO); |
| // for (int i = 0; i < markers.length; i++) { |
| // if (markers[i].getAttributes().equals(attributes)) { |
| // return true; |
| // } |
| // } |
| // return false; |
| // } |
| // } |
| // |
| // class ProjectSnapshot extends ResourceSnapshot { |
| // ResourceSnapshot[] memberSnapshots; |
| // |
| // ProjectSnapshot(IProject project) throws CoreException { |
| // name = project.getName(); |
| // boolean open = project.isOpen(); |
| // if (!open) { |
| // project.open(null); |
| // } |
| // IResource[] members = project.members(); |
| // memberSnapshots = new ResourceSnapshot[members.length]; |
| // for (int i = 0; i < members.length; i++) { |
| // memberSnapshots[i] = snapshotFromResource(members[i]); |
| // } |
| // if (!open) { |
| // project.close(null); |
| // } |
| // |
| // } |
| // |
| // boolean isValid(IResource parent) throws CoreException { |
| // IResource resource = getWorkspaceRoot().findMember( |
| // parent.getFullPath().append(name)); |
| // if (resource == null || !(resource instanceof IProject)) { |
| // return false; |
| // } |
| // IProject project = (IProject) resource; |
| // // Must open it to validate the content |
| // boolean open = project.isOpen(); |
| // if (!open) { |
| // project.open(null); |
| // } |
| // |
| // for (int i = 0; i < memberSnapshots.length; i++) { |
| // if (!fileNameExcludes.contains(memberSnapshots[i].name)) { |
| // if (!memberSnapshots[i].isValid(resource)) { |
| // return false; |
| // } |
| // } |
| // } |
| // |
| // if (!open) { |
| // project.close(null); |
| // } |
| // |
| // return true; |
| // } |
| // |
| // boolean isValid() throws CoreException { |
| // return isValid(getWorkspaceRoot()); |
| // } |
| // } |
| // |
| // abstract class ResourceSnapshot { |
| // String name; |
| // |
| // abstract boolean isValid(IResource parent) throws CoreException; |
| // |
| // IWorkspaceRoot getWorkspaceRoot() { |
| // return ResourcesPlugin.getWorkspace().getRoot(); |
| // } |
| // } |
| // |
| // /** |
| // * @param testName |
| // */ |
| // public WorkspaceOperationsTests(String name) { |
| // super(name); |
| // } |
| // |
| // protected void doSetUp() throws Exception { |
| // super.doSetUp(); |
| // // Suppress validation UI |
| // AdvancedValidationUserApprover.AUTOMATED_MODE = true; |
| // // Project |
| // testProject = getWorkspace().getRoot().getProject(TEST_PROJECT_NAME); |
| // testProject.create(getMonitor()); |
| // testProject.open(getMonitor()); |
| // assertTrue(testProject.exists()); |
| // // Project for move/copy target location |
| // targetProject = getWorkspace().getRoot().getProject( |
| // TEST_TARGET_PROJECT_NAME); |
| // targetProject.create(getMonitor()); |
| // targetProject.open(getMonitor()); |
| // assertTrue(targetProject.exists()); |
| // // Folder in Project |
| // testFolder = testProject.getFolder(TEST_FOLDER_NAME); |
| // testFolder.create(true, true, getMonitor()); |
| // assertTrue(testFolder.exists()); |
| // // File in Project |
| // testFileInProject = testProject.getFile(TEST_FILEINPROJECT_NAME); |
| // testFileInProject.create(getContents(getRandomString()), true, |
| // getMonitor()); |
| // assertTrue(testFileInProject.exists()); |
| // // Subfolder in top level folder |
| // testSubFolder = testFolder.getFolder(TEST_SUBFOLDER_NAME); |
| // testSubFolder.create(true, true, getMonitor()); |
| // assertTrue(testSubFolder.exists()); |
| // // Files in top level folder |
| // emptyTestFile = testFolder.getFile(TEST_EMPTYFILE_NAME); |
| // emptyTestFile.create(getContents(FILE_CONTENTS_EMPTY), true, |
| // getMonitor()); |
| // testFileWithContent = testFolder.getFile(TEST_RANDOMFILE_NAME); |
| // testFileWithContent.create(getContents(getRandomString()), true, |
| // getMonitor()); |
| // // File in subfolder |
| // testFileInSubFolder = testSubFolder.getFile(TEST_FILEINSUBFOLDER_NAME); |
| // testFileInSubFolder.create(getContents(getRandomString()), true, |
| // getMonitor()); |
| // assertTrue(testFileInProject.exists()); |
| // |
| // // Create links by first creating the backing content... |
| // IFileStore folderStore = getTempStore(); |
| // IFileStore fileStore = getTempStore(); |
| // IPath folderLocation = URIUtil.toPath(folderStore.toURI()); |
| // IPath fileLocation = URIUtil.toPath(fileStore.toURI()); |
| // folderStore.mkdir(EFS.NONE, getMonitor()); |
| // fileStore.openOutputStream(EFS.NONE, getMonitor()).close(); |
| // // Then create the workspace objects |
| // testLinkedFolder = testFolder.getFolder(TEST_LINKEDFOLDER_NAME); |
| // testLinkedFolder.createLink(folderLocation, IResource.NONE, |
| // getMonitor()); |
| // assertTrue(testLinkedFolder.exists()); |
| // testLinkedFile = testFolder.getFile(TEST_LINKEDFILE_NAME); |
| // testLinkedFile.createLink(fileLocation, IResource.NONE, getMonitor()); |
| // |
| // history = PlatformUI.getWorkbench().getOperationSupport() |
| // .getOperationHistory(); |
| // context = PlatformUI.getWorkbench().getOperationSupport() |
| // .getUndoContext(); |
| // |
| // } |
| // |
| // protected void doTearDown() throws Exception { |
| // testProject = (IProject) getWorkspaceRoot().findMember( |
| // TEST_PROJECT_NAME); |
| // if (testProject != null) { |
| // testProject.close(getMonitor()); |
| // testProject.delete(true, true, getMonitor()); |
| // } |
| // targetProject = (IProject) getWorkspaceRoot().findMember( |
| // TEST_TARGET_PROJECT_NAME); |
| // if (targetProject != null) { |
| // targetProject.close(getMonitor()); |
| // targetProject.delete(true, true, getMonitor()); |
| // } |
| // IProject newProject = (IProject) getWorkspaceRoot().findMember( |
| // TEST_NEWPROJECT_NAME); |
| // if (newProject != null) { |
| // newProject.close(getMonitor()); |
| // newProject.delete(true, true, getMonitor()); |
| // } |
| // final IFileStore[] toDelete = (IFileStore[]) storesToDelete |
| // .toArray(new IFileStore[storesToDelete.size()]); |
| // storesToDelete.clear(); |
| // for (int i = 0; i < toDelete.length; i++) { |
| // clear(toDelete[i]); |
| // } |
| // AdvancedValidationUserApprover.AUTOMATED_MODE = false; |
| // |
| // testProject = null; |
| // targetProject = null; |
| // testFolder = null; |
| // testSubFolder = null; |
| // testLinkedFolder = null; |
| // emptyTestFile = null; |
| // testFileWithContent = null; |
| // testLinkedFile = null; |
| // testFileInSubFolder = null; |
| // testFileInProject = null; |
| // |
| // super.doTearDown(); |
| // } |
| // |
| // private IWorkspace getWorkspace() { |
| // return ResourcesPlugin.getWorkspace(); |
| // } |
| // |
| // private IWorkspaceRoot getWorkspaceRoot() { |
| // return ResourcesPlugin.getWorkspace().getRoot(); |
| // } |
| // |
| // /* |
| // * reads file content and returns string |
| // */ |
| // private String readContent(IFile file) throws CoreException { |
| // InputStream is = file.getContents(); |
| // String encoding = file.getCharset(); |
| // if (is == null) |
| // return null; |
| // BufferedReader reader = null; |
| // try { |
| // StringBuffer buffer = new StringBuffer(); |
| // char[] part = new char[2048]; |
| // int read = 0; |
| // reader = new BufferedReader(new InputStreamReader(is, encoding)); |
| // |
| // while ((read = reader.read(part)) != -1) |
| // buffer.append(part, 0, read); |
| // |
| // return buffer.toString(); |
| // |
| // } catch (IOException ex) { |
| // } finally { |
| // if (reader != null) { |
| // try { |
| // reader.close(); |
| // } catch (IOException ex) { |
| // } |
| // } |
| // } |
| // return null; |
| // } |
| // |
| // private ResourceSnapshot snapshotFromResource(IResource resource) |
| // throws CoreException { |
| // if (resource instanceof IFile) |
| // return new FileSnapshot((IFile) resource); |
| // if (resource instanceof IFolder) |
| // return new FolderSnapshot((IFolder) resource); |
| // if (resource instanceof IProject) |
| // return new ProjectSnapshot((IProject) resource); |
| // fail("Unknown resource type"); |
| // // making compiler happy |
| // return new FileSnapshot((IFile) resource); |
| // } |
| // |
| // private IProgressMonitor getMonitor() { |
| // return null; |
| // } |
| // |
| // private String getRandomString() { |
| // switch ((int) Math.round(Math.random() * 10)) { |
| // case 0: |
| // return "este e' o meu conteudo (portuguese)"; |
| // case 1: |
| // return "ho ho ho"; |
| // case 2: |
| // return "I'll be back"; |
| // case 3: |
| // return "don't worry, be happy"; |
| // case 4: |
| // return "there is no imagination for more sentences"; |
| // case 5: |
| // return "customize yours"; |
| // case 6: |
| // return "foo"; |
| // case 7: |
| // return "bar"; |
| // case 8: |
| // return "foobar"; |
| // case 9: |
| // return "case 9"; |
| // default: |
| // return "these are my contents"; |
| // } |
| // } |
| // |
| // /** |
| // * Returns a FileStore instance backed by storage in a temporary location. |
| // * The returned store will not exist, but will belong to an existing parent. |
| // * The tearDown method in this class will ensure the location is deleted |
| // * after the test is completed. |
| // */ |
| // private IFileStore getTempStore() { |
| // IFileStore store = EFS.getLocalFileSystem().getStore( |
| // FileSystemHelper.getRandomLocation(FileSystemHelper |
| // .getTempDir())); |
| // storesToDelete.add(store); |
| // return store; |
| // } |
| // |
| // /** |
| // * Returns the URI for a unique, existent folder backed by storage in a |
| // * temporary location. The tearDown method in this class will ensure the |
| // * location is deleted after the test is completed. |
| // */ |
| // private URI getTempProjectDir() throws CoreException { |
| // IFileStore store = getTempStore(); |
| // store.mkdir(EFS.NONE, getMonitor()); |
| // return store.toURI(); |
| // } |
| // |
| // private void clear(IFileStore store) { |
| // try { |
| // store.delete(EFS.NONE, null); |
| // } catch (CoreException e) { |
| // } |
| // } |
| // |
| // private InputStream getContents(String text) { |
| // return new ByteArrayInputStream(text.getBytes()); |
| // } |
| // |
| // private Map getInitialMarkerAttributes() { |
| // HashMap map = new HashMap(); |
| // map.putAll(initialAttributes); |
| // return map; |
| // } |
| // |
| // private Map getUpdatedMarkerAttributes() { |
| // HashMap map = new HashMap(); |
| // map.putAll(updatedAttributes); |
| // return map; |
| // } |
| // |
| // private IProjectDescription getNewProjectDescription() { |
| // return getWorkspace().newProjectDescription(TEST_NEWPROJECT_NAME); |
| // } |
| // |
| // private void execute(AbstractWorkspaceOperation operation) |
| // throws ExecutionException { |
| // operation.setQuietCompute(true); |
| // assertTrue("Operation can be executed", operation.canExecute()); |
| // IStatus status = history.execute(operation, getMonitor(), null); |
| // assertTrue("Execution should be OK status", status.isOK()); |
| // } |
| // |
| // private void executeExpectFail(AbstractWorkspaceOperation operation) |
| // throws ExecutionException { |
| // operation.setQuietCompute(true); |
| // IStatus status = history.execute(operation, getMonitor(), null); |
| // assertFalse("Execution should not have OK status", status.isOK()); |
| // } |
| // |
| // private void undo() throws ExecutionException { |
| // assertTrue("Operation can be undone", history.canUndo(context)); |
| // IStatus status = history.undo(context, getMonitor(), null); |
| // assertTrue("Undo should be OK status", status.isOK()); |
| // } |
| // |
| // private void undoExpectFail(AbstractWorkspaceOperation operation) |
| // throws ExecutionException { |
| // operation.setQuietCompute(true); |
| // IStatus status = history.undo(context, getMonitor(), null); |
| // assertFalse("Undo should not have OK status", status.isOK()); |
| // } |
| // |
| // private void redo() throws ExecutionException { |
| // assertTrue("Operation can be redone", history.canRedo(context)); |
| // IStatus status = history.redo(context, getMonitor(), null); |
| // assertTrue("Redo should be OK status", status.isOK()); |
| // } |
| // |
| // private void validateCreatedMarkers(int expectedCount, IMarker[] markers, |
| // Map[] expectedAttributes, String[] expectedTypes) |
| // throws CoreException { |
| // |
| // assertTrue(MessageFormat.format("{0} markers should have been created", |
| // new Object[] { new Integer(expectedCount) }), |
| // markers.length == expectedCount); |
| // |
| // for (int i = 0; i < markers.length; i++) { |
| // IMarker createdMarker = markers[i]; |
| // assertTrue("Marker should exist", createdMarker.exists()); |
| // assertTrue("Marker should have expected attributes", createdMarker |
| // .getAttributes().equals(expectedAttributes[i])); |
| // assertTrue("Marker should have expected type", createdMarker |
| // .getType().equals(expectedTypes[i])); |
| // } |
| // } |
| // |
| // public void testCreateSingleMarkerUndoRedo() throws ExecutionException, |
| // CoreException { |
| // String[] types = new String[] { IMarker.BOOKMARK }; |
| // Map[] attrs = new Map[] { getInitialMarkerAttributes() }; |
| // CreateMarkersOperation op = new CreateMarkersOperation( |
| // IMarker.BOOKMARK, getInitialMarkerAttributes(), emptyTestFile, |
| // "Create Single Marker Test"); |
| // execute(op); |
| // IMarker[] markers = op.getMarkers(); |
| // validateCreatedMarkers(1, markers, attrs, types); |
| // undo(); |
| // assertFalse("Marker should no longer exist", markers[0].exists()); |
| // redo(); |
| // markers = op.getMarkers(); |
| // validateCreatedMarkers(1, markers, attrs, types); |
| // } |
| // |
| // public void testCreateMultipleMarkersSingleTypeUndoRedo() |
| // throws ExecutionException, CoreException { |
| // String[] types = new String[] { CUSTOM_TYPE, CUSTOM_TYPE, CUSTOM_TYPE }; |
| // Map[] attrs = new Map[] { getInitialMarkerAttributes(), |
| // getUpdatedMarkerAttributes(), getInitialMarkerAttributes() }; |
| // |
| // CreateMarkersOperation op = new CreateMarkersOperation(CUSTOM_TYPE, |
| // attrs, new IFile[] { emptyTestFile, testFileWithContent, |
| // testLinkedFile }, |
| // "Create Multiple Markers Single Type Test"); |
| // execute(op); |
| // IMarker[] markers = op.getMarkers(); |
| // validateCreatedMarkers(3, markers, attrs, types); |
| // undo(); |
| // for (int i = 0; i < markers.length; i++) { |
| // IMarker createdMarker = markers[i]; |
| // assertFalse("Marker should no longer exist", createdMarker.exists()); |
| // } |
| // redo(); |
| // markers = op.getMarkers(); |
| // validateCreatedMarkers(3, markers, attrs, types); |
| // } |
| // |
| // public void testCreateMultipleMarkerTypesUndoRedo() |
| // throws ExecutionException, CoreException { |
| // String[] types = new String[] { IMarker.BOOKMARK, IMarker.TASK, |
| // CUSTOM_TYPE }; |
| // Map[] attrs = new Map[] { getInitialMarkerAttributes(), |
| // getUpdatedMarkerAttributes(), getInitialMarkerAttributes() }; |
| // |
| // CreateMarkersOperation op = new CreateMarkersOperation(types, attrs, |
| // new IFile[] { emptyTestFile, testFileWithContent, |
| // testLinkedFile }, "Create Multiple Marker Types Test"); |
| // execute(op); |
| // IMarker[] markers = op.getMarkers(); |
| // validateCreatedMarkers(3, markers, attrs, types); |
| // undo(); |
| // for (int i = 0; i < markers.length; i++) { |
| // IMarker createdMarker = markers[i]; |
| // assertFalse("Marker should no longer exist", createdMarker.exists()); |
| // } |
| // redo(); |
| // markers = op.getMarkers(); |
| // validateCreatedMarkers(3, markers, attrs, types); |
| // } |
| // |
| // public void testUpdateSingleMarkerUndoRedo() throws ExecutionException, |
| // CoreException { |
| // CreateMarkersOperation op = new CreateMarkersOperation( |
| // IMarker.BOOKMARK, getInitialMarkerAttributes(), |
| // testFileWithContent, "Create Marker Test"); |
| // execute(op); |
| // UpdateMarkersOperation updateOp = new UpdateMarkersOperation(op |
| // .getMarkers()[0], getUpdatedMarkerAttributes(), |
| // "Update Single Marker", false); |
| // execute(updateOp); |
| // validateCreatedMarkers(1, updateOp.getMarkers(), |
| // new Map[] { getUpdatedMarkerAttributes() }, |
| // new String[] { IMarker.BOOKMARK }); |
| // undo(); |
| // validateCreatedMarkers(1, updateOp.getMarkers(), |
| // new Map[] { getInitialMarkerAttributes() }, |
| // new String[] { IMarker.BOOKMARK }); |
| // redo(); |
| // validateCreatedMarkers(1, updateOp.getMarkers(), |
| // new Map[] { getUpdatedMarkerAttributes() }, |
| // new String[] { IMarker.BOOKMARK }); |
| // |
| // } |
| // |
| // public void testUpdateMultipleMarkerUndoRedo() throws ExecutionException, |
| // CoreException { |
| // String[] types = new String[] { IMarker.BOOKMARK, IMarker.TASK, |
| // CUSTOM_TYPE }; |
| // Map[] attrs = new Map[] { getInitialMarkerAttributes(), |
| // getInitialMarkerAttributes(), getInitialMarkerAttributes() }; |
| // CreateMarkersOperation op = new CreateMarkersOperation(types, attrs, |
| // new IFile[] { emptyTestFile, testFileWithContent, |
| // testLinkedFile }, |
| // "Create Multiple Markers Same Type Test"); |
| // execute(op); |
| // UpdateMarkersOperation updateOp = new UpdateMarkersOperation(op |
| // .getMarkers(), getUpdatedMarkerAttributes(), |
| // "Update Multiple Markers", false); |
| // execute(updateOp); |
| // validateCreatedMarkers(3, updateOp.getMarkers(), new Map[] { |
| // getUpdatedMarkerAttributes(), getUpdatedMarkerAttributes(), |
| // getUpdatedMarkerAttributes() }, types); |
| // undo(); |
| // validateCreatedMarkers(3, updateOp.getMarkers(), attrs, types); |
| // redo(); |
| // validateCreatedMarkers(3, updateOp.getMarkers(), new Map[] { |
| // getUpdatedMarkerAttributes(), getUpdatedMarkerAttributes(), |
| // getUpdatedMarkerAttributes() }, types); |
| // |
| // } |
| // |
| // public void testUpdateAndMergeSingleMarkerUndoRedo() |
| // throws ExecutionException, CoreException { |
| // CreateMarkersOperation op = new CreateMarkersOperation( |
| // IMarker.BOOKMARK, getInitialMarkerAttributes(), testLinkedFile, |
| // "Create Marker Test"); |
| // execute(op); |
| // UpdateMarkersOperation updateOp = new UpdateMarkersOperation(op |
| // .getMarkers()[0], getUpdatedMarkerAttributes(), |
| // "Update And Merge Single Marker", true); |
| // execute(updateOp); |
| // validateCreatedMarkers(1, updateOp.getMarkers(), |
| // new Map[] { mergedUpdatedAttributes }, |
| // new String[] { IMarker.BOOKMARK }); |
| // undo(); |
| // validateCreatedMarkers(1, updateOp.getMarkers(), |
| // new Map[] { getInitialMarkerAttributes() }, |
| // new String[] { IMarker.BOOKMARK }); |
| // redo(); |
| // validateCreatedMarkers(1, updateOp.getMarkers(), |
| // new Map[] { mergedUpdatedAttributes }, |
| // new String[] { IMarker.BOOKMARK }); |
| // |
| // } |
| // |
| // public void testUpdateAndMergeMultipleMarkerUndoRedo() |
| // throws ExecutionException, CoreException { |
| // String[] types = new String[] { IMarker.BOOKMARK, IMarker.TASK, |
| // CUSTOM_TYPE }; |
| // Map[] attrs = new Map[] { getInitialMarkerAttributes(), |
| // getInitialMarkerAttributes(), getInitialMarkerAttributes() }; |
| // CreateMarkersOperation op = new CreateMarkersOperation(types, attrs, |
| // new IFile[] { emptyTestFile, testFileWithContent, |
| // testLinkedFile }, |
| // "Create Multiple Markers Same Type Test"); |
| // execute(op); |
| // UpdateMarkersOperation updateOp = new UpdateMarkersOperation(op |
| // .getMarkers(), getUpdatedMarkerAttributes(), |
| // "Update and Merge Multiple Markers", true); |
| // execute(updateOp); |
| // validateCreatedMarkers(3, updateOp.getMarkers(), new Map[] { |
| // mergedUpdatedAttributes, mergedUpdatedAttributes, |
| // mergedUpdatedAttributes }, types); |
| // undo(); |
| // validateCreatedMarkers(3, updateOp.getMarkers(), attrs, types); |
| // redo(); |
| // validateCreatedMarkers(3, updateOp.getMarkers(), new Map[] { |
| // mergedUpdatedAttributes, mergedUpdatedAttributes, |
| // mergedUpdatedAttributes }, types); |
| // } |
| // |
| // public void testDeleteMarkersUndoRedo() throws ExecutionException, |
| // CoreException { |
| // String[] types = new String[] { IMarker.BOOKMARK, IMarker.TASK, |
| // CUSTOM_TYPE }; |
| // Map[] attrs = new Map[] { getInitialMarkerAttributes(), |
| // getUpdatedMarkerAttributes(), getInitialMarkerAttributes() }; |
| // CreateMarkersOperation op = new CreateMarkersOperation(types, attrs, |
| // new IFile[] { emptyTestFile, testFileWithContent, |
| // testLinkedFile }, |
| // "Create Multiple Markers Same Type Test"); |
| // execute(op); |
| // IMarker[] markers = op.getMarkers(); |
| // DeleteMarkersOperation deleteOp = new DeleteMarkersOperation(markers, |
| // "Delete Markers Test"); |
| // execute(deleteOp); |
| // for (int i = 0; i < markers.length; i++) { |
| // IMarker createdMarker = markers[i]; |
| // assertFalse("Marker should no longer exist", createdMarker.exists()); |
| // } |
| // undo(); |
| // markers = deleteOp.getMarkers(); |
| // validateCreatedMarkers(3, markers, attrs, types); |
| // redo(); |
| // for (int i = 0; i < markers.length; i++) { |
| // IMarker createdMarker = markers[i]; |
| // assertFalse("Marker should no longer exist", createdMarker.exists()); |
| // } |
| // } |
| // |
| // /* |
| // * Test that the undo is invalid because one of the markers was deleted. |
| // */ |
| // public void testCreateMarkerUndoInvalid() throws ExecutionException, |
| // CoreException { |
| // String[] types = new String[] { IMarker.BOOKMARK, IMarker.TASK, |
| // CUSTOM_TYPE }; |
| // Map[] attrs = new Map[] { getInitialMarkerAttributes(), |
| // getUpdatedMarkerAttributes(), getInitialMarkerAttributes() }; |
| // CreateMarkersOperation op = new CreateMarkersOperation(types, attrs, |
| // new IFile[] { emptyTestFile, testFileWithContent, |
| // testLinkedFile }, |
| // "Create Multiple Markers Same Type Test"); |
| // execute(op); |
| // IMarker[] markers = op.getMarkers(); |
| // markers[1].delete(); |
| // // Must compute status first because we don't perform expensive |
| // // validations in canUndo(). However we should remember the validity |
| // // once we've computed the status. |
| // op.computeUndoableStatus(null); |
| // assertFalse("Undo should be invalid, marker no longer exists", op |
| // .canUndo()); |
| // } |
| // |
| // /* |
| // * Test that the undo is invalid because one of the resources was deleted. |
| // */ |
| // public void testCreateMarkerUndoInvalid2() throws ExecutionException, |
| // CoreException { |
| // String[] types = new String[] { IMarker.BOOKMARK, IMarker.TASK, |
| // CUSTOM_TYPE }; |
| // Map[] attrs = new Map[] { getInitialMarkerAttributes(), |
| // getUpdatedMarkerAttributes(), getInitialMarkerAttributes() }; |
| // CreateMarkersOperation op = new CreateMarkersOperation(types, attrs, |
| // new IFile[] { emptyTestFile, testFileWithContent, |
| // testLinkedFile }, |
| // "Create Multiple Markers Same Type Test"); |
| // execute(op); |
| // emptyTestFile.delete(true, getMonitor()); |
| // // Must compute status first because we don't perform expensive |
| // // validations in canUndo(). However we should remember the validity |
| // // once we've computed the status. |
| // op.computeUndoableStatus(null); |
| // assertFalse("Undo should be invalid, resource no longer exists", op |
| // .canUndo()); |
| // } |
| // |
| // public void testUpdateMarkersInvalid() throws ExecutionException, |
| // CoreException { |
| // String[] types = new String[] { IMarker.BOOKMARK, IMarker.TASK, |
| // CUSTOM_TYPE }; |
| // Map[] attrs = new Map[] { getInitialMarkerAttributes(), |
| // getInitialMarkerAttributes(), getInitialMarkerAttributes() }; |
| // CreateMarkersOperation op = new CreateMarkersOperation(types, attrs, |
| // new IFile[] { emptyTestFile, testFileWithContent, |
| // testLinkedFile }, |
| // "Create Multiple Markers Same Type Test"); |
| // execute(op); |
| // UpdateMarkersOperation updateOp = new UpdateMarkersOperation(op |
| // .getMarkers(), getUpdatedMarkerAttributes(), |
| // "Update and Merge Multiple Markers", true); |
| // execute(updateOp); |
| // IMarker[] markers = updateOp.getMarkers(); |
| // markers[0].delete(); |
| // // Must compute status first because we don't perform expensive |
| // // validations in canUndo(). However we should remember the validity |
| // // once we've computed the status. |
| // updateOp.computeUndoableStatus(null); |
| // |
| // assertFalse("Undo should be invalid, marker no longer exists", updateOp |
| // .canUndo()); |
| // } |
| // |
| // public void testUpdateMarkersInvalid2() throws ExecutionException, |
| // CoreException { |
| // String[] types = new String[] { IMarker.BOOKMARK, IMarker.TASK, |
| // CUSTOM_TYPE }; |
| // Map[] attrs = new Map[] { getInitialMarkerAttributes(), |
| // getInitialMarkerAttributes(), getInitialMarkerAttributes() }; |
| // CreateMarkersOperation op = new CreateMarkersOperation(types, attrs, |
| // new IFile[] { emptyTestFile, testFileWithContent, |
| // testLinkedFile }, |
| // "Create Multiple Markers Same Type Test"); |
| // execute(op); |
| // UpdateMarkersOperation updateOp = new UpdateMarkersOperation(op |
| // .getMarkers(), getUpdatedMarkerAttributes(), |
| // "Update and Merge Multiple Markers", true); |
| // execute(updateOp); |
| // testFileWithContent.delete(true, getMonitor()); |
| // // Must compute status first because we don't perform expensive |
| // // validations in canUndo(). However we should remember the validity |
| // // once we've computed the status. |
| // updateOp.computeUndoableStatus(null); |
| // |
| // assertFalse("Undo should be invalid, marker no longer exists", updateOp |
| // .canUndo()); |
| // } |
| // |
| // public void testProjectCreateUndoRedo() throws ExecutionException, |
| // CoreException { |
| // CreateProjectOperation op = new CreateProjectOperation( |
| // getNewProjectDescription(), "testProjectCreate"); |
| // execute(op); |
| // IProject project = getWorkspaceRoot().getProject(TEST_NEWPROJECT_NAME); |
| // assertTrue("Project creation failed", project.exists()); |
| // ProjectSnapshot snap = new ProjectSnapshot(project); |
| // undo(); |
| // assertFalse("Project deletion failed", project.exists()); |
| // redo(); |
| // assertTrue("Project recreation failed", project.exists()); |
| // assertTrue("Project not restored properly", snap.isValid()); |
| // } |
| // |
| // public void testProjectMoveUndoRedo() throws ExecutionException, |
| // CoreException { |
| // URI projectTargetLocation = URIUtil.toURI(URIUtil.toPath( |
| // getTempProjectDir()).append(TEST_PROJECT_NAME)); |
| // MoveProjectOperation op = new MoveProjectOperation(testProject, |
| // projectTargetLocation, "testProjectMove"); |
| // ProjectSnapshot snap = new ProjectSnapshot(testProject); |
| // execute(op); |
| // assertNotNull("Project move failed", testProject.getDescription() |
| // .getLocationURI()); |
| // assertTrue("Project contents were altered", snap.isValid()); |
| // undo(); |
| // assertNull("Project move undo failed", testProject.getDescription() |
| // .getLocationURI()); |
| // assertTrue("Project contents were altered", snap.isValid()); |
| // redo(); |
| // assertEquals("Project move redo failed", testProject.getDescription() |
| // .getLocationURI(), projectTargetLocation); |
| // assertTrue("Project contents were altered", snap.isValid()); |
| // } |
| // |
| // public void testProjectMoveInvalidLocationUndoRedo() |
| // throws ExecutionException { |
| // // invalid target - already used by another project |
| // MoveProjectOperation op = new MoveProjectOperation(testProject, |
| // targetProject.getLocationURI(), |
| // "testProjectMoveInvalidLocation"); |
| // executeExpectFail(op); |
| // } |
| // |
| // public void testProjectCopyUndoRedo() throws ExecutionException, |
| // CoreException { |
| // CopyProjectOperation op = new CopyProjectOperation(testProject, |
| // TEST_NEWPROJECT_NAME, null, "testProjectCopy"); |
| // ProjectSnapshot snap = new ProjectSnapshot(testProject); |
| // execute(op); |
| // IProject copiedProject = getWorkspaceRoot().getProject( |
| // TEST_NEWPROJECT_NAME); |
| // assertTrue("Project copy failed", copiedProject.exists()); |
| // assertTrue("Source project was altered", snap.isValid()); |
| // snap.name = TEST_NEWPROJECT_NAME; |
| // assertTrue("Project copy does not match", snap.isValid()); |
| // undo(); |
| // assertFalse("Copy undo failed", copiedProject.exists()); |
| // redo(); |
| // assertTrue("Project not restored properly on redo", snap.isValid()); |
| // snap.name = TEST_PROJECT_NAME; |
| // assertTrue("Source project was altered", snap.isValid()); |
| // } |
| // |
| // public void testProjectClosedCopyUndoRedo() throws ExecutionException, |
| // CoreException { |
| // testProject.close(getMonitor()); |
| // testProjectCopyUndoRedo(); |
| // } |
| // |
| // public void testProjectCopyAndChangeLocationUndoRedo() |
| // throws ExecutionException, CoreException { |
| // URI projectTargetLocation = URIUtil.toURI(URIUtil.toPath( |
| // getTempProjectDir()).append(TEST_PROJECT_NAME)); |
| // CopyProjectOperation op = new CopyProjectOperation(testProject, |
| // TEST_NEWPROJECT_NAME, projectTargetLocation, |
| // "testProjectCopyToNewLocation"); |
| // ProjectSnapshot snap = new ProjectSnapshot(testProject); |
| // execute(op); |
| // IProject copiedProject = getWorkspaceRoot().getProject( |
| // TEST_NEWPROJECT_NAME); |
| // assertTrue("Project copy failed", copiedProject.exists()); |
| // assertEquals("Project location copy failed", copiedProject |
| // .getDescription().getLocationURI(), projectTargetLocation); |
| // assertTrue("Source project was altered", snap.isValid()); |
| // snap.name = TEST_NEWPROJECT_NAME; |
| // assertTrue("Project copy does not match", snap.isValid()); |
| // undo(); |
| // assertFalse("Copy undo failed", copiedProject.exists()); |
| // redo(); |
| // assertTrue("Project not restored properly on redo", snap.isValid()); |
| // assertEquals("Project location not restored properly", copiedProject |
| // .getDescription().getLocationURI(), projectTargetLocation); |
| // snap.name = TEST_PROJECT_NAME; |
| // assertTrue("Source project was altered", snap.isValid()); |
| // } |
| // |
| // public void testProjectClosedCopyAndChangeLocationUndoRedo() |
| // throws ExecutionException, CoreException { |
| // testProject.close(getMonitor()); |
| // testProjectCopyAndChangeLocationUndoRedo(); |
| // } |
| // |
| // public void testProjectCopyAndChangeToInvalidLocationUndoRedo() |
| // throws ExecutionException { |
| // // invalid target - already used by another project |
| // CopyProjectOperation op = new CopyProjectOperation(testProject, |
| // TEST_NEWPROJECT_NAME, targetProject.getLocationURI(), |
| // "testProjectCopyInvalidLocation"); |
| // executeExpectFail(op); |
| // } |
| // |
| // public void testProjectRenameUndoRedo() throws ExecutionException, |
| // CoreException { |
| // MoveResourcesOperation op = new MoveResourcesOperation(testProject, |
| // new Path(TEST_NEWPROJECT_NAME), "testProjectRename"); |
| // ProjectSnapshot snap = new ProjectSnapshot(testProject); |
| // execute(op); |
| // IProject renamedProject = getWorkspaceRoot().getProject( |
| // TEST_NEWPROJECT_NAME); |
| // assertTrue("Project rename failed", renamedProject.exists()); |
| // snap.name = TEST_NEWPROJECT_NAME; |
| // assertTrue("Project content was altered on rename", snap.isValid()); |
| // undo(); |
| // snap.name = TEST_PROJECT_NAME; |
| // assertTrue("Project content was altered on undo rename", snap.isValid()); |
| // assertFalse("Undo rename failed", renamedProject.exists()); |
| // redo(); |
| // snap.name = TEST_NEWPROJECT_NAME; |
| // assertTrue("Project content was altered on redo rename", snap.isValid()); |
| // } |
| // |
| // public void testProjectDeleteUndoRedo() throws ExecutionException { |
| // DeleteResourcesOperation op = new DeleteResourcesOperation( |
| // new IResource[] { testProject }, "testProjectDelete", false); |
| // execute(op); |
| // assertFalse("Project delete failed", testProject.exists()); |
| // undo(); |
| // assertTrue("Project recreation failed", testProject.exists()); |
| // // Ideally we could run this test everytime, but it fails intermittently |
| // // because opening the recreated project occurs in the background, and |
| // // the creation of the workspace representation for the disk contents |
| // // may not have happened yet. This test always passes under debug where |
| // // timing can be controlled. |
| // // *********** |
| // // assertTrue("Project content was altered on undo", snap.isValid()); |
| // // ************ |
| // redo(); |
| // assertFalse("Redo delete failed", testProject.exists()); |
| // // We undo again so that the project will exist during teardown and |
| // // get cleaned up. Otherwise some content is left on disk. |
| // undo(); |
| // } |
| // |
| // public void testProjectClosedDeleteUndoRedo() throws ExecutionException, |
| // CoreException { |
| // testProject.close(getMonitor()); |
| // testProjectDeleteUndoRedo(); |
| // } |
| // |
| // public void testProjectDeleteWithContentUndoRedo() |
| // throws ExecutionException { |
| // DeleteResourcesOperation op = new DeleteResourcesOperation( |
| // new IResource[] { testProject }, "testProjectDelete", true); |
| // // we don't snapshot since content will be deleted |
| // execute(op); |
| // assertFalse("Project delete failed", testProject.exists()); |
| // undo(); |
| // assertTrue("Project was recreated", testProject.exists()); |
| // redo(); |
| // assertFalse("Redo delete failed", testProject.exists()); |
| // } |
| // |
| // public void testProjectClosedDeleteWithContentUndoRedo() |
| // throws ExecutionException, CoreException { |
| // testProject.close(getMonitor()); |
| // testProjectDeleteWithContentUndoRedo(); |
| // } |
| // |
| // public void testFolderCreateLeafUndoRedo() throws ExecutionException { |
| // IFolder folder = getWorkspaceRoot().getFolder( |
| // testProject.getFullPath().append(TEST_NEWFOLDER_NAME)); |
| // CreateFolderOperation op = new CreateFolderOperation(folder, null, |
| // "testFolderCreateLeaf"); |
| // assertFalse("Folder should not exist before test is run", folder |
| // .exists()); |
| // execute(op); |
| // assertTrue("Folder creation failed", folder.exists()); |
| // undo(); |
| // assertFalse("Folder deletion failed", folder.exists()); |
| // redo(); |
| // assertTrue("Folder recreation failed", folder.exists()); |
| // } |
| // |
| // public void testFolderCreateNestedInProjectUndoRedo() |
| // throws ExecutionException { |
| // // uses a nested path to force creation of nonexistent parents |
| // IFolder folder = getWorkspaceRoot().getFolder( |
| // testProject.getFullPath().append(TEST_NEWNESTEDFOLDER_NAME)); |
| // CreateFolderOperation op = new CreateFolderOperation(folder, null, |
| // "testFolderCreateNested"); |
| // assertFalse("Folder should not exist before test is run", folder |
| // .exists()); |
| // execute(op); |
| // assertTrue("Folder creation failed", folder.exists()); |
| // undo(); |
| // assertFalse("Folder deletion failed", folder.exists()); |
| // // Ensure all created parents are gone, too |
| // IPath path = new Path(TEST_NEWNESTEDFOLDER_NAME); |
| // path.removeLastSegments(path.segmentCount() - 1); |
| // IFolder parent = getWorkspaceRoot().getFolder( |
| // testProject.getFullPath().append(path)); |
| // assertFalse("Deletion of created parents failed", parent.exists()); |
| // |
| // redo(); |
| // assertTrue("Folder recreation failed", folder.exists()); |
| // } |
| // |
| // public void testFolderCreateNestedInFolderUndoRedo() |
| // throws ExecutionException { |
| // // Uses a nested path to force creation of nonexistent parents. |
| // // Parent is a folder, not a project. |
| // IFolder folder = getWorkspaceRoot().getFolder( |
| // testFolder.getFullPath().append(TEST_NEWNESTEDFOLDER_NAME)); |
| // CreateFolderOperation op = new CreateFolderOperation(folder, null, |
| // "testFolderCreateNestedInFolder"); |
| // assertFalse("Folder should not exist before test is run", folder |
| // .exists()); |
| // execute(op); |
| // assertTrue("Folder creation failed", folder.exists()); |
| // |
| // undo(); |
| // assertFalse("Folder deletion failed", folder.exists()); |
| // // Ensure all created parents are gone, too |
| // IPath path = new Path(TEST_NEWNESTEDFOLDER_NAME); |
| // path.removeLastSegments(path.segmentCount() - 1); |
| // IFolder parent = getWorkspaceRoot().getFolder( |
| // testFolder.getFullPath().append(path)); |
| // assertFalse("Deletion of created parents failed", parent.exists()); |
| // |
| // redo(); |
| // assertTrue("Folder recreation failed", folder.exists()); |
| // } |
| // |
| // public void testFolderCreateLinkedUndoRedo() throws ExecutionException { |
| // IFolder folder = getWorkspaceRoot().getFolder( |
| // testProject.getFullPath().append(TEST_NEWFOLDER_NAME)); |
| // CreateFolderOperation op = new CreateFolderOperation(folder, |
| // testSubFolder.getLocationURI(), "testFolderCreateLink"); |
| // assertFalse("Folder should not exist before test is run", folder |
| // .exists()); |
| // execute(op); |
| // assertTrue("Folder creation failed", folder.exists()); |
| // assertTrue("Folder was not created as a link", folder.isLinked()); |
| // undo(); |
| // assertFalse("Folder deletion failed", folder.exists()); |
| // redo(); |
| // assertTrue("Folder recreation failed", folder.exists()); |
| // assertTrue("Folder was not recreated as a link", folder.isLinked()); |
| // } |
| // |
| // public void testFolderCreateLinkedNestedUndoRedo() |
| // throws ExecutionException { |
| // // Use nested name with uncreated parents |
| // IFolder folder = getWorkspaceRoot().getFolder( |
| // testProject.getFullPath().append(TEST_NEWNESTEDFOLDER_NAME)); |
| // CreateFolderOperation op = new CreateFolderOperation(folder, |
| // testSubFolder.getLocationURI(), "testFolderCreateNestedLink"); |
| // assertFalse("Folder should not exist before test is run", folder |
| // .exists()); |
| // execute(op); |
| // assertTrue("Folder creation failed", folder.exists()); |
| // assertTrue("Folder was not created as a link", folder.isLinked()); |
| // undo(); |
| // assertFalse("Folder deletion failed", folder.exists()); |
| // // Ensure all created parents are gone, too |
| // IPath path = new Path(TEST_NEWNESTEDFOLDER_NAME); |
| // path.removeLastSegments(path.segmentCount() - 1); |
| // IFolder parent = getWorkspaceRoot().getFolder( |
| // testProject.getFullPath().append(path)); |
| // assertFalse("Parents should have been removed", parent.exists()); |
| // // Redo |
| // redo(); |
| // assertTrue("Folder recreation failed", folder.exists()); |
| // assertTrue("Folder was not recreated as a link", folder.isLinked()); |
| // } |
| // |
| // public void testFolderMoveUndoRedo() throws ExecutionException, |
| // CoreException { |
| // IPath targetPath = targetProject.getFullPath().append( |
| // testFolder.getName()); |
| // MoveResourcesOperation op = new MoveResourcesOperation(testFolder, |
| // targetPath, "testFolderMove"); |
| // FolderSnapshot snap = new FolderSnapshot(testFolder); |
| // execute(op); |
| // IFolder movedFolder = getWorkspaceRoot().getFolder(targetPath); |
| // assertTrue("Folder move failed", movedFolder.exists()); |
| // assertTrue("Folder content was altered", snap.isValid(targetProject)); |
| // |
| // undo(); |
| // movedFolder = getWorkspaceRoot().getFolder(targetPath); |
| // assertFalse("Move undo failed", movedFolder.exists()); |
| // assertTrue("Folder content was altered on undo", snap |
| // .isValid(testProject)); |
| // |
| // redo(); |
| // movedFolder = getWorkspaceRoot().getFolder(targetPath); |
| // assertTrue("Folder move failed", movedFolder.exists()); |
| // assertTrue("Folder content was altered", snap.isValid(targetProject)); |
| // } |
| // |
| // public void testRedundantSubFolderMoveUndoRedo() throws ExecutionException, |
| // CoreException { |
| // IPath targetPath = targetProject.getFullPath(); |
| // IPath targetPathWithName = targetPath.append(testFolder.getName()); |
| // MoveResourcesOperation op = new MoveResourcesOperation(new IResource[] { |
| // testFolder, testSubFolder }, targetPath, |
| // "testRedundantSubFolderMove"); |
| // FolderSnapshot snap = new FolderSnapshot(testFolder); |
| // execute(op); |
| // IFolder movedFolder = getWorkspaceRoot().getFolder(targetPathWithName); |
| // assertTrue("Folder move failed", movedFolder.exists()); |
| // assertTrue("Folder content was altered", snap.isValid(targetProject)); |
| // |
| // undo(); |
| // movedFolder = getWorkspaceRoot().getFolder(targetPathWithName); |
| // assertFalse("Move undo failed", movedFolder.exists()); |
| // assertTrue("Folder content was altered on undo", snap |
| // .isValid(testProject)); |
| // |
| // redo(); |
| // movedFolder = getWorkspaceRoot().getFolder(targetPathWithName); |
| // assertTrue("Folder move failed", movedFolder.exists()); |
| // assertTrue("Folder content was altered", snap.isValid(targetProject)); |
| // } |
| // |
| // public void testRedundantFolderFileMoveUndoRedo() |
| // throws ExecutionException, CoreException { |
| // IPath targetPath = targetProject.getFullPath(); |
| // IPath targetPathWithName = targetPath.append(testFolder.getName()); |
| // MoveResourcesOperation op = new MoveResourcesOperation(new IResource[] { |
| // testFolder, testFileWithContent }, targetPath, |
| // "testRedundantFolderFileMove"); |
| // FolderSnapshot snap = new FolderSnapshot(testFolder); |
| // execute(op); |
| // IFolder movedFolder = getWorkspaceRoot().getFolder(targetPathWithName); |
| // assertTrue("Folder move failed", movedFolder.exists()); |
| // assertTrue("Folder content was altered", snap.isValid(targetProject)); |
| // |
| // undo(); |
| // movedFolder = getWorkspaceRoot().getFolder(targetPathWithName); |
| // assertFalse("Move undo failed", movedFolder.exists()); |
| // assertTrue("Folder content was altered on undo", snap |
| // .isValid(testProject)); |
| // |
| // redo(); |
| // movedFolder = getWorkspaceRoot().getFolder(targetPathWithName); |
| // assertTrue("Folder move failed", movedFolder.exists()); |
| // assertTrue("Folder content was altered", snap.isValid(targetProject)); |
| // } |
| // |
| // public void testFolderCopyUndoRedo() throws ExecutionException, |
| // CoreException { |
| // // copying with same name to a new project |
| // CopyResourcesOperation op = new CopyResourcesOperation( |
| // new IResource[] { testFolder }, targetProject.getFullPath(), |
| // "testFolderCopy"); |
| // FolderSnapshot snap = new FolderSnapshot(testFolder); |
| // execute(op); |
| // IFolder copiedFolder = targetProject.getFolder(testFolder.getName()); |
| // assertTrue("Folder copy failed", copiedFolder.exists()); |
| // assertTrue("Source folder was altered", snap.isValid(testProject)); |
| // assertTrue("Folder copy does not match", snap.isValid(targetProject)); |
| // |
| // undo(); |
| // assertFalse("Copy undo failed", copiedFolder.exists()); |
| // |
| // redo(); |
| // assertTrue("Folder not restored properly on redo", snap |
| // .isValid(targetProject)); |
| // assertTrue("Source folder was altered", snap.isValid(testProject)); |
| // } |
| // |
| // public void testFolderCopyLinkUndoRedo() throws ExecutionException, |
| // CoreException { |
| // // copying with same name to a new project |
| // CopyResourcesOperation op = new CopyResourcesOperation( |
| // new IResource[] { testLinkedFolder }, targetProject |
| // .getFullPath(), "testLinkedFolderCopy"); |
| // FolderSnapshot snap = new FolderSnapshot(testLinkedFolder); |
| // execute(op); |
| // IFolder copiedFolder = targetProject.getFolder(testLinkedFolder |
| // .getName()); |
| // assertTrue("Folder copy failed", copiedFolder.exists()); |
| // assertTrue("Source folder was altered", snap.isValid(testFolder)); |
| // assertTrue("Folder copy does not match", snap.isValid(targetProject)); |
| // |
| // undo(); |
| // assertFalse("Copy undo failed", copiedFolder.exists()); |
| // |
| // redo(); |
| // assertTrue("Folder not restored properly on redo", snap |
| // .isValid(targetProject)); |
| // assertTrue("Source folder was altered", snap.isValid(testFolder)); |
| // } |
| // |
| // public void testFolderCopyRenameUndoRedo() throws ExecutionException, |
| // CoreException { |
| // // copying with a different name to the same project |
| // CopyResourcesOperation op = new CopyResourcesOperation(testFolder, |
| // testProject.getFullPath().append(TEST_NEWFOLDER_NAME), |
| // "testFolderCopyRename"); |
| // FolderSnapshot snap = new FolderSnapshot(testFolder); |
| // execute(op); |
| // |
| // IFolder copiedFolder = testProject.getFolder(TEST_NEWFOLDER_NAME); |
| // assertTrue("Folder copy failed", copiedFolder.exists()); |
| // assertTrue("Source folder was altered", snap.isValid(testProject)); |
| // snap.name = TEST_NEWFOLDER_NAME; |
| // assertTrue("Folder copy does not match", snap.isValid(testProject)); |
| // |
| // undo(); |
| // assertFalse("Copy undo failed", copiedFolder.exists()); |
| // |
| // redo(); |
| // assertTrue("Folder not restored properly on redo", snap |
| // .isValid(testProject)); |
| // snap.name = TEST_FOLDER_NAME; |
| // assertTrue("Source folder was altered", snap.isValid(testProject)); |
| // |
| // } |
| // |
| // public void testFolderRenameUndoRedo() throws ExecutionException, |
| // CoreException { |
| // MoveResourcesOperation op = new MoveResourcesOperation(testFolder, |
| // testProject.getFullPath().append(TEST_NEWFOLDER_NAME), |
| // "testFolderRename"); |
| // FolderSnapshot snap = new FolderSnapshot(testFolder); |
| // execute(op); |
| // IFolder renamedFolder = testProject.getFolder(TEST_NEWFOLDER_NAME); |
| // assertTrue("Project rename failed", renamedFolder.exists()); |
| // snap.name = TEST_NEWFOLDER_NAME; |
| // assertTrue("Folder content was altered on rename", snap |
| // .isValid(testProject)); |
| // |
| // undo(); |
| // snap.name = TEST_FOLDER_NAME; |
| // assertTrue("Folder content was altered on undo rename", snap |
| // .isValid(testProject)); |
| // assertFalse("Undo rename failed", renamedFolder.exists()); |
| // |
| // redo(); |
| // snap.name = TEST_NEWFOLDER_NAME; |
| // assertTrue("Folder content was altered on redo rename", snap |
| // .isValid(testProject)); |
| // } |
| // |
| // public void testFolderDeleteUndoRedo() throws ExecutionException, |
| // CoreException { |
| // DeleteResourcesOperation op = new DeleteResourcesOperation( |
| // new IResource[] { testSubFolder }, "testFolderDelete", false); |
| // FolderSnapshot snap = new FolderSnapshot(testSubFolder); |
| // execute(op); |
| // assertFalse("Folder delete failed", testSubFolder.exists()); |
| // undo(); |
| // assertTrue("Folder recreation failed", testSubFolder.exists()); |
| // assertTrue("Folder content was altered on undo", snap |
| // .isValid(testSubFolder.getParent())); |
| // redo(); |
| // assertFalse("Redo delete failed", testSubFolder.exists()); |
| // } |
| // |
| // public void testNestedRedundantFolderDeleteUndoRedo() |
| // throws ExecutionException, CoreException { |
| // DeleteResourcesOperation op = new DeleteResourcesOperation( |
| // new IResource[] { testFolder, testSubFolder }, |
| // "testNestedRedundantFolderDelete", false); |
| // FolderSnapshot snap = new FolderSnapshot(testFolder); |
| // execute(op); |
| // assertFalse("Folder delete failed", testFolder.exists()); |
| // undo(); |
| // assertTrue("Folder recreation failed", testFolder.exists()); |
| // assertTrue("SubFolder recreation failed", testSubFolder.exists()); |
| // assertTrue("Folder content was altered on undo", snap |
| // .isValid(testFolder.getParent())); |
| // redo(); |
| // assertFalse("Redo delete failed", testFolder.exists()); |
| // } |
| // |
| // public void testNestedRedundantFileDeleteUndoRedo() |
| // throws ExecutionException, CoreException { |
| // DeleteResourcesOperation op = new DeleteResourcesOperation( |
| // new IResource[] { testFolder, testFileWithContent }, |
| // "testNestedRedundantFileDelete", false); |
| // FolderSnapshot snap = new FolderSnapshot(testFolder); |
| // execute(op); |
| // assertFalse("Folder delete failed", testFolder.exists()); |
| // undo(); |
| // assertTrue("Folder recreation failed", testFolder.exists()); |
| // assertTrue("SubFolder recreation failed", testSubFolder.exists()); |
| // assertTrue("File recreation failed", testFileWithContent.exists()); |
| // assertTrue("Folder content was altered on undo", snap |
| // .isValid(testFolder.getParent())); |
| // redo(); |
| // assertFalse("Redo delete failed", testFolder.exists()); |
| // } |
| // |
| // public void testFolderDeleteLinkedUndoRedo() throws ExecutionException, |
| // CoreException { |
| // DeleteResourcesOperation op = new DeleteResourcesOperation( |
| // new IResource[] { testLinkedFolder }, "testFolderDeleteLinked", |
| // false); |
| // FolderSnapshot snap = new FolderSnapshot(testLinkedFolder); |
| // execute(op); |
| // assertFalse("Folder delete failed", testLinkedFolder.exists()); |
| // undo(); |
| // assertTrue("Folder recreation failed", testLinkedFolder.exists()); |
| // assertTrue("Folder content was altered on undo", snap |
| // .isValid(testLinkedFolder.getParent())); |
| // redo(); |
| // assertFalse("Redo delete failed", testLinkedFolder.exists()); |
| // } |
| // |
| // public void testFileCreateLeafUndoRedo() throws ExecutionException, |
| // CoreException { |
| // IFile file = getWorkspaceRoot().getFile( |
| // testProject.getFullPath().append(TEST_NEWFILE_NAME)); |
| // CreateFileOperation op = new CreateFileOperation(file, null, |
| // getContents(getRandomString()), "testFileCreateLeaf"); |
| // assertFalse("File should not exist before test is run", file.exists()); |
| // execute(op); |
| // assertTrue("File creation failed", file.exists()); |
| // FileSnapshot snapshot = new FileSnapshot(file); |
| // undo(); |
| // assertFalse("File deletion failed", file.exists()); |
| // redo(); |
| // assertTrue("File recreation failed", file.exists()); |
| // assertTrue("File content improperly restored", snapshot.isValid(file |
| // .getParent())); |
| // } |
| // |
| // public void testFileCreateNestedInProjectUndoRedo() |
| // throws ExecutionException, CoreException { |
| // // Uses file name with non-existent folder parents |
| // IFile file = getWorkspaceRoot().getFile( |
| // testProject.getFullPath().append(TEST_NEWNESTEDFILE_NAME)); |
| // CreateFileOperation op = new CreateFileOperation(file, null, |
| // getContents(getRandomString()), "testFileCreateNestedInProject"); |
| // assertFalse("File should not exist before test is run", file.exists()); |
| // execute(op); |
| // assertTrue("File creation failed", file.exists()); |
| // FileSnapshot snapshot = new FileSnapshot(file); |
| // |
| // undo(); |
| // assertFalse("File deletion failed", file.exists()); |
| // // Ensure all created parents are gone, too |
| // IPath path = new Path(TEST_NEWNESTEDFILE_NAME); |
| // path.removeLastSegments(path.segmentCount() - 1); |
| // IFolder parent = getWorkspaceRoot().getFolder( |
| // testProject.getFullPath().append(path)); |
| // assertFalse("Deletion of created parents failed", parent.exists()); |
| // |
| // redo(); |
| // assertTrue("File recreation failed", file.exists()); |
| // assertTrue("File content improperly restored", snapshot.isValid(file |
| // .getParent())); |
| // } |
| // |
| // public void testFileCreateNestedInFolderUndoRedo() |
| // throws ExecutionException, CoreException { |
| // // Uses file name with non-existent folder parents. |
| // // Uses subfolder as a parent |
| // IFile file = getWorkspaceRoot().getFile( |
| // testSubFolder.getFullPath().append(TEST_NEWNESTEDFILE_NAME)); |
| // CreateFileOperation op = new CreateFileOperation(file, null, |
| // getContents(getRandomString()), |
| // "testFileCreateNestedInSubfolder"); |
| // assertFalse("File should not exist before test is run", file.exists()); |
| // execute(op); |
| // assertTrue("File creation failed", file.exists()); |
| // FileSnapshot snapshot = new FileSnapshot(file); |
| // |
| // undo(); |
| // assertFalse("File deletion failed", file.exists()); |
| // // Ensure all created parents are gone, too |
| // IPath path = new Path(TEST_NEWNESTEDFILE_NAME); |
| // path.removeLastSegments(path.segmentCount() - 1); |
| // IFolder parent = getWorkspaceRoot().getFolder( |
| // testSubFolder.getFullPath().append(path)); |
| // assertFalse("Deletion of created parents failed", parent.exists()); |
| // |
| // redo(); |
| // assertTrue("File recreation failed", file.exists()); |
| // assertTrue("File content improperly restored", snapshot.isValid(file |
| // .getParent())); |
| // } |
| // |
| // public void testFileCreateLinkedUndoRedo() throws ExecutionException, |
| // CoreException { |
| // IFile file = getWorkspaceRoot().getFile( |
| // testProject.getFullPath().append(TEST_NEWFILE_NAME)); |
| // CreateFileOperation op = new CreateFileOperation(file, |
| // testFileWithContent.getLocationURI(), null, |
| // "testFileCreateLink"); |
| // assertFalse("File should not exist before test is run", file.exists()); |
| // |
| // execute(op); |
| // assertTrue("File creation failed", file.exists()); |
| // assertTrue("File was not created as link", file.isLinked()); |
| // assertEquals("Linked content not equal", readContent(file), |
| // readContent(testFileWithContent)); |
| // |
| // undo(); |
| // assertFalse("File deletion failed", file.exists()); |
| // |
| // redo(); |
| // assertTrue("File was not created as link", file.isLinked()); |
| // assertEquals("Linked content not equal", readContent(file), |
| // readContent(testFileWithContent)); |
| // } |
| // |
| // public void testFileCreateLinkedNestedUndoRedo() throws ExecutionException, |
| // CoreException { |
| // IFile file = getWorkspaceRoot().getFile( |
| // testProject.getFullPath().append(TEST_NEWNESTEDFILE_NAME)); |
| // CreateFileOperation op = new CreateFileOperation(file, |
| // testFileWithContent.getLocationURI(), null, |
| // "testFileCreateLinkNested"); |
| // assertFalse("File should not exist before test is run", file.exists()); |
| // |
| // execute(op); |
| // assertTrue("File creation failed", file.exists()); |
| // assertTrue("File was not created as link", file.isLinked()); |
| // assertEquals("Linked content not equal", readContent(file), |
| // readContent(testFileWithContent)); |
| // |
| // undo(); |
| // assertFalse("File deletion failed", file.exists()); |
| // // Ensure all created parents are gone, too |
| // IPath path = new Path(TEST_NEWNESTEDFILE_NAME); |
| // path.removeLastSegments(path.segmentCount() - 1); |
| // IFolder parent = getWorkspaceRoot().getFolder( |
| // testProject.getFullPath().append(path)); |
| // assertFalse("Deletion of created parents failed", parent.exists()); |
| // |
| // redo(); |
| // assertTrue("File was not created as link", file.isLinked()); |
| // assertEquals("Linked content not equal", readContent(file), |
| // readContent(testFileWithContent)); |
| // } |
| // |
| // public void testFileMoveUndoRedo() throws ExecutionException, CoreException { |
| // // Moving from a folder in one project to the top level of another |
| // // project |
| // IPath targetPath = targetProject.getFullPath().append( |
| // testFileWithContent.getName()); |
| // MoveResourcesOperation op = new MoveResourcesOperation( |
| // testFileWithContent, targetPath, "testFileMove"); |
| // FileSnapshot snap = new FileSnapshot(testFileWithContent); |
| // execute(op); |
| // IFile movedFile = getWorkspaceRoot().getFile(targetPath); |
| // assertTrue("File move failed", movedFile.exists()); |
| // assertTrue("File content was altered", snap.isValid(targetProject)); |
| // |
| // undo(); |
| // movedFile = getWorkspaceRoot().getFile(targetPath); |
| // assertFalse("Move undo failed", movedFile.exists()); |
| // assertTrue("File content was altered on undo", snap.isValid(testFolder)); |
| // |
| // redo(); |
| // movedFile = getWorkspaceRoot().getFile(targetPath); |
| // assertTrue("File move failed", movedFile.exists()); |
| // assertTrue("File content was altered", snap.isValid(targetProject)); |
| // } |
| // |
| // public void testFileMoveAndOverwriteUndoRedo() throws ExecutionException, |
| // CoreException { |
| // // Moving a file from a folder inside that the same folder on top of an |
| // // existent file |
| // IPath sourcePath = emptyTestFile.getFullPath(); |
| // IPath targetPath = testFileWithContent.getFullPath(); |
| // MoveResourcesOperation op = new MoveResourcesOperation(emptyTestFile, |
| // targetPath, "testFileMoveOverwrite"); |
| // FileSnapshot source = new FileSnapshot(emptyTestFile); |
| // FileSnapshot overwritten = new FileSnapshot(testFileWithContent); |
| // execute(op); |
| // IFile sourceFile = getWorkspaceRoot().getFile(sourcePath); |
| // assertFalse("File move failed", sourceFile.exists()); |
| // source.name = TEST_RANDOMFILE_NAME; |
| // assertTrue("Source content was altered at target", source |
| // .isValid(testFolder)); |
| // |
| // undo(); |
| // assertTrue("File restore failed", sourceFile.exists()); |
| // assertTrue("Overwritten file was not restored", overwritten |
| // .isValid(testFolder)); |
| // source.name = TEST_EMPTYFILE_NAME; |
| // assertTrue("Source file content was not restored", source |
| // .isValid(testFolder)); |
| // |
| // redo(); |
| // sourceFile = getWorkspaceRoot().getFile(sourcePath); |
| // assertFalse("File move failed", sourceFile.exists()); |
| // source.name = TEST_RANDOMFILE_NAME; |
| // assertTrue("Source content was altered at target", source |
| // .isValid(testFolder)); |
| // } |
| // |
| // public void testFileCopyUndoRedo() throws ExecutionException, CoreException { |
| // // copying with same name to a new project |
| // CopyResourcesOperation op = new CopyResourcesOperation( |
| // new IResource[] { testFileWithContent }, targetProject |
| // .getFullPath(), "testFileCopy"); |
| // FileSnapshot snap = new FileSnapshot(testFileWithContent); |
| // execute(op); |
| // IFile copiedFile = targetProject.getFile(testFileWithContent.getName()); |
| // assertTrue("File copy failed", copiedFile.exists()); |
| // assertTrue("Source file was altered", snap.isValid(testFolder)); |
| // assertTrue("File copy does not match", snap.isValid(targetProject)); |
| // |
| // undo(); |
| // assertFalse("Copy undo failed", copiedFile.exists()); |
| // |
| // redo(); |
| // assertTrue("File not restored properly on redo", snap |
| // .isValid(targetProject)); |
| // assertTrue("Source file was altered", snap.isValid(testFolder)); |
| // } |
| // |
| // public void testFileCopyLinkUndoRedo() throws ExecutionException, |
| // CoreException { |
| // // copying with same name to a new project |
| // CopyResourcesOperation op = new CopyResourcesOperation( |
| // new IResource[] { testLinkedFile }, |
| // targetProject.getFullPath(), "testFileLinkCopy"); |
| // FileSnapshot snap = new FileSnapshot(testLinkedFile); |
| // execute(op); |
| // IFile copiedFile = targetProject.getFile(testLinkedFile.getName()); |
| // assertTrue("File copy failed", copiedFile.exists()); |
| // assertTrue("Source file was altered", snap.isValid(testFolder)); |
| // assertTrue("File copy does not match", snap.isValid(targetProject)); |
| // |
| // undo(); |
| // assertFalse("Copy undo failed", copiedFile.exists()); |
| // |
| // redo(); |
| // assertTrue("File not restored properly on redo", snap |
| // .isValid(targetProject)); |
| // assertTrue("Source file was altered", snap.isValid(testFolder)); |
| // } |
| // |
| // public void testFileCopyRenameUndoRedo() throws ExecutionException, |
| // CoreException { |
| // // copying with a different name to the same project |
| // CopyResourcesOperation op = new CopyResourcesOperation( |
| // testFileWithContent, testProject.getFullPath().append( |
| // TEST_NEWFILE_NAME), "testFileCopyRename"); |
| // FileSnapshot snap = new FileSnapshot(testFileWithContent); |
| // execute(op); |
| // |
| // IFile copiedFile = testProject.getFile(TEST_NEWFILE_NAME); |
| // assertTrue("File copy failed", copiedFile.exists()); |
| // assertTrue("Source folder was altered", snap.isValid(testFolder)); |
| // snap.name = TEST_NEWFILE_NAME; |
| // assertTrue("File copy does not match", snap.isValid(testProject)); |
| // |
| // undo(); |
| // assertFalse("Copy undo failed", copiedFile.exists()); |
| // |
| // redo(); |
| // assertTrue("File not restored properly on redo", snap |
| // .isValid(testProject)); |
| // snap.name = TEST_RANDOMFILE_NAME; |
| // assertTrue("Source folder was altered", snap.isValid(testFolder)); |
| // } |
| // |
| // public void testFileCopyAndOverwriteUndoRedo() throws ExecutionException, |
| // CoreException { |
| // // Copying from a file in a folder to the same folder on top of an |
| // // existent file |
| // IPath targetPath = testFileWithContent.getFullPath(); |
| // CopyResourcesOperation op = new CopyResourcesOperation(emptyTestFile, |
| // targetPath, "testFileMoveOverwrite"); |
| // FileSnapshot source = new FileSnapshot(emptyTestFile); |
| // FileSnapshot overwritten = new FileSnapshot(testFileWithContent); |
| // execute(op); |
| // assertTrue("Source content was altered", source.isValid(testFolder)); |
| // source.name = TEST_RANDOMFILE_NAME; |
| // assertTrue("Source content was altered at target", source |
| // .isValid(testFolder)); |
| // |
| // undo(); |
| // assertTrue("Overwritten file was not restored", overwritten |
| // .isValid(testFolder)); |
| // source.name = TEST_EMPTYFILE_NAME; |
| // assertTrue("Source file content was not restored", source |
| // .isValid(testFolder)); |
| // |
| // redo(); |
| // source.name = TEST_RANDOMFILE_NAME; |
| // assertTrue("Source content was altered at target", source |
| // .isValid(testFolder)); |
| // } |
| // |
| // public void testFileRenameUndoRedo() throws ExecutionException, |
| // CoreException { |
| // MoveResourcesOperation op = new MoveResourcesOperation( |
| // testFileInProject, testProject.getFullPath().append( |
| // TEST_NEWFILE_NAME), "testFileRename"); |
| // FileSnapshot snap = new FileSnapshot(testFileInProject); |
| // execute(op); |
| // IFile renamedFile = testProject.getFile(TEST_NEWFILE_NAME); |
| // assertTrue("File rename failed", renamedFile.exists()); |
| // snap.name = TEST_NEWFILE_NAME; |
| // assertTrue("File content was altered on rename", snap |
| // .isValid(testProject)); |
| // |
| // undo(); |
| // snap.name = TEST_FILEINPROJECT_NAME; |
| // assertTrue("File content was altered on undo rename", snap |
| // .isValid(testProject)); |
| // assertFalse("Undo rename failed", renamedFile.exists()); |
| // |
| // redo(); |
| // snap.name = TEST_NEWFILE_NAME; |
| // assertTrue("File content was altered on redo rename", snap |
| // .isValid(testProject)); |
| // } |
| // |
| // public void testFileDeleteUndoRedo() throws ExecutionException, |
| // CoreException { |
| // DeleteResourcesOperation op = new DeleteResourcesOperation( |
| // new IResource[] { testFileWithContent }, "testFileDelete", |
| // false); |
| // FileSnapshot snap = new FileSnapshot(testFileWithContent); |
| // execute(op); |
| // assertFalse("File delete failed", testFileWithContent.exists()); |
| // undo(); |
| // assertTrue("File recreation failed", testFileWithContent.exists()); |
| // assertTrue("File content was altered on undo", snap |
| // .isValid(testFileWithContent.getParent())); |
| // redo(); |
| // assertFalse("Redo delete failed", testFileWithContent.exists()); |
| // } |
| // |
| // public void testFileLinkedDeleteUndoRedo() throws ExecutionException, |
| // CoreException { |
| // DeleteResourcesOperation op = new DeleteResourcesOperation( |
| // new IResource[] { testLinkedFile }, "testLinkedFileDelete", |
| // false); |
| // FileSnapshot snap = new FileSnapshot(testLinkedFile); |
| // execute(op); |
| // assertFalse("File delete failed", testLinkedFile.exists()); |
| // undo(); |
| // assertTrue("File recreation failed", testLinkedFile.exists()); |
| // assertTrue("File content was altered on undo", snap |
| // .isValid(testLinkedFile.getParent())); |
| // redo(); |
| // assertFalse("Redo delete failed", testLinkedFile.exists()); |
| // } |
| // |
| // public void testFileAndFolderMoveSameDests() throws ExecutionException, |
| // CoreException { |
| // IPath targetPath = targetProject.getFullPath(); |
| // MoveResourcesOperation op = new MoveResourcesOperation(new IResource[] { |
| // testSubFolder, testFileWithContent }, targetPath, |
| // "testFileAndFolderMove"); |
| // FolderSnapshot snapFolder = new FolderSnapshot(testSubFolder); |
| // FileSnapshot snapFile = new FileSnapshot(testFileWithContent); |
| // execute(op); |
| // IFolder movedFolder = getWorkspaceRoot().getFolder( |
| // targetPath.append(TEST_SUBFOLDER_NAME)); |
| // assertTrue("Folder move failed", movedFolder.exists()); |
| // assertTrue("Folder content was altered", snapFolder |
| // .isValid(targetProject)); |
| // IFile movedFile = getWorkspaceRoot().getFile( |
| // targetPath.append(TEST_RANDOMFILE_NAME)); |
| // assertTrue("File move failed", movedFile.exists()); |
| // assertTrue("File content was altered", snapFile.isValid(targetProject)); |
| // |
| // undo(); |
| // movedFolder = getWorkspaceRoot().getFolder( |
| // targetPath.append(TEST_SUBFOLDER_NAME)); |
| // assertFalse("Move undo failed", movedFolder.exists()); |
| // assertTrue("Folder content was altered on undo", snapFolder |
| // .isValid(testFolder)); |
| // movedFile = getWorkspaceRoot().getFile( |
| // targetPath.append(TEST_RANDOMFILE_NAME)); |
| // assertFalse("Move undo failed", movedFolder.exists()); |
| // assertTrue("File content was altered on undo", snapFile |
| // .isValid(testFolder)); |
| // |
| // redo(); |
| // movedFolder = getWorkspaceRoot().getFolder( |
| // targetPath.append(TEST_SUBFOLDER_NAME)); |
| // assertTrue("Folder move failed", movedFolder.exists()); |
| // assertTrue("Folder content was altered", snapFolder |
| // .isValid(targetProject)); |
| // movedFile = getWorkspaceRoot().getFile( |
| // targetPath.append(TEST_RANDOMFILE_NAME)); |
| // assertTrue("File move failed", movedFile.exists()); |
| // assertTrue("File content was altered", snapFile.isValid(targetProject)); |
| // } |
| // |
| // public void testFileAndFolderCopyDifferentDests() |
| // throws ExecutionException, CoreException { |
| // // copying a file and folder to different destination projects, |
| // // assigning new names to a new project |
| // // The folder gets a new name, the file retains the old name |
| // CopyResourcesOperation op = new CopyResourcesOperation(new IResource[] { |
| // testSubFolder, testFileWithContent }, new IPath[] { |
| // testProject.getFullPath().append(TEST_NEWFOLDER_NAME), |
| // targetProject.getFullPath().append( |
| // testFileWithContent.getName()) }, |
| // "testFileAndFolderDifferentDests"); |
| // FolderSnapshot snapFolder = new FolderSnapshot(testSubFolder); |
| // FileSnapshot snapFile = new FileSnapshot(testFileWithContent); |
| // execute(op); |
| // IFolder copiedFolder = testProject.getFolder(TEST_NEWFOLDER_NAME); |
| // assertTrue("Folder copy failed", copiedFolder.exists()); |
| // assertTrue("Source folder was altered", snapFolder.isValid(testFolder)); |
| // snapFolder.name = TEST_NEWFOLDER_NAME; |
| // assertTrue("Folder copy does not match", snapFolder |
| // .isValid(testProject)); |
| // IFile copiedFile = targetProject.getFile(testFileWithContent.getName()); |
| // assertTrue("File copy failed", copiedFile.exists()); |
| // assertTrue("Source file was altered", snapFile.isValid(testFolder)); |
| // assertTrue("File copy does not match", snapFile.isValid(targetProject)); |
| // |
| // undo(); |
| // assertFalse("Copy folder undo failed", copiedFolder.exists()); |
| // assertFalse("Copy file undo failed", copiedFile.exists()); |
| // snapFolder.name = testSubFolder.getName(); |
| // assertTrue("Source file was altered during undo", snapFile |
| // .isValid(testFolder)); |
| // assertTrue("Source folder was altered during undo", snapFolder |
| // .isValid(testFolder)); |
| // |
| // redo(); |
| // assertTrue("Source folder was altered during redo", snapFolder |
| // .isValid(testFolder)); |
| // snapFolder.name = TEST_NEWFOLDER_NAME; |
| // assertTrue("Folder copy does not match on redo", snapFolder |
| // .isValid(testProject)); |
| // assertTrue("Source file was altered during redo", snapFile |
| // .isValid(testFolder)); |
| // assertTrue("File copy does not match on redo", snapFile |
| // .isValid(targetProject)); |
| // } |
| // |
| // public void testFileAndFolderCopyDifferentNames() |
| // throws ExecutionException, CoreException { |
| // // copying a file and folder to a new project, assigning new names to a |
| // // new project |
| // CopyResourcesOperation op = new CopyResourcesOperation(new IResource[] { |
| // testSubFolder, testFileWithContent }, new IPath[] { |
| // targetProject.getFullPath().append(TEST_NEWFOLDER_NAME), |
| // targetProject.getFullPath().append(TEST_NEWFILE_NAME) }, |
| // "testFileAndFolderDifferentNames"); |
| // FolderSnapshot snapFolder = new FolderSnapshot(testSubFolder); |
| // FileSnapshot snapFile = new FileSnapshot(testFileWithContent); |
| // execute(op); |
| // IFolder copiedFolder = targetProject.getFolder(TEST_NEWFOLDER_NAME); |
| // assertTrue("Folder copy failed", copiedFolder.exists()); |
| // assertTrue("Source folder was altered", snapFolder.isValid(testFolder)); |
| // snapFolder.name = TEST_NEWFOLDER_NAME; |
| // assertTrue("Folder copy does not match", snapFolder |
| // .isValid(targetProject)); |
| // IFile copiedFile = targetProject.getFile(TEST_NEWFILE_NAME); |
| // assertTrue("File copy failed", copiedFile.exists()); |
| // assertTrue("Source file was altered", snapFile.isValid(testFolder)); |
| // snapFile.name = TEST_NEWFILE_NAME; |
| // assertTrue("File copy does not match", snapFile.isValid(targetProject)); |
| // |
| // undo(); |
| // assertFalse("Copy folder undo failed", copiedFolder.exists()); |
| // assertFalse("Copy file undo failed", copiedFile.exists()); |
| // snapFolder.name = testSubFolder.getName(); |
| // assertTrue("Source file was altered during undo", snapFolder |
| // .isValid(testFolder)); |
| // snapFile.name = testFileWithContent.getName(); |
| // assertTrue("Source folder was altered during undo", snapFile |
| // .isValid(testFolder)); |
| // |
| // redo(); |
| // assertTrue("Source folder was altered during redo", snapFolder |
| // .isValid(testFolder)); |
| // snapFolder.name = TEST_NEWFOLDER_NAME; |
| // assertTrue("Folder copy does not match on redo", snapFolder |
| // .isValid(targetProject)); |
| // assertTrue("Source file was altered during redo", snapFile |
| // .isValid(testFolder)); |
| // snapFile.name = TEST_NEWFILE_NAME; |
| // assertTrue("File copy does not match on redo", snapFile |
| // .isValid(targetProject)); |
| // } |
| // |
| // public void testRedundantFileAndFolderCopy() throws CoreException, |
| // ExecutionException { |
| // // copying a file which is a child of a folder, keeping same name to a new project |
| // CopyResourcesOperation op = new CopyResourcesOperation(new IResource[] { |
| // testFolder, testFileWithContent }, targetProject |
| // .getFullPath(), "testRedundantFileAndFolderCopy"); |
| // FolderSnapshot snapFolder = new FolderSnapshot(testFolder); |
| // FileSnapshot snapFile = new FileSnapshot(testFileWithContent); |
| // execute(op); |
| // IFolder copiedFolder = targetProject.getFolder(testFolder.getName()); |
| // assertTrue("Folder copy failed", copiedFolder.exists()); |
| // assertTrue("Source folder was altered", snapFolder.isValid(testProject)); |
| // assertTrue("Folder copy does not match", snapFolder |
| // .isValid(targetProject)); |
| // IFile copiedFile = targetProject.getFile(testFileWithContent.getName()); |
| // assertFalse("Nested file should not have been copied to new location", copiedFile.exists()); |
| // copiedFile = testFolder.getFile(testFileWithContent.getName()); |
| // assertTrue("Nested file should have been copied to existing parent", copiedFile.exists()); |
| // assertTrue("Source file was altered", snapFile.isValid(testFolder)); |
| // |
| // undo(); |
| // assertFalse("Copy folder undo failed", copiedFolder.exists()); |
| // assertTrue("Source file was altered during undo", snapFile |
| // .isValid(testFolder)); |
| // assertTrue("Source folder was altered during undo", snapFolder |
| // .isValid(testProject)); |
| // |
| // redo(); |
| // assertTrue("Source folder was altered during redo", snapFolder |
| // .isValid(testProject)); |
| // assertTrue("Folder copy does not match on redo", snapFolder |
| // .isValid(targetProject)); |
| // assertTrue("Source file was altered during redo", snapFile |
| // .isValid(testFolder)); |
| // } |
| // |
| // public void testFileAndFolderCopySameDests() throws ExecutionException, |
| // CoreException { |
| // // copying a file and folder, keeping same name to a new project |
| // CopyResourcesOperation op = new CopyResourcesOperation(new IResource[] { |
| // testSubFolder, testFileWithContent }, targetProject |
| // .getFullPath(), "testFileAndFolderCopy"); |
| // FolderSnapshot snapFolder = new FolderSnapshot(testSubFolder); |
| // FileSnapshot snapFile = new FileSnapshot(testFileWithContent); |
| // execute(op); |
| // IFolder copiedFolder = targetProject.getFolder(testSubFolder.getName()); |
| // assertTrue("Folder copy failed", copiedFolder.exists()); |
| // assertTrue("Source folder was altered", snapFolder.isValid(testFolder)); |
| // assertTrue("Folder copy does not match", snapFolder |
| // .isValid(targetProject)); |
| // IFile copiedFile = targetProject.getFile(testFileWithContent.getName()); |
| // assertTrue("File copy failed", copiedFile.exists()); |
| // assertTrue("Source file was altered", snapFile.isValid(testFolder)); |
| // assertTrue("File copy does not match", snapFile.isValid(targetProject)); |
| // |
| // undo(); |
| // assertFalse("Copy folder undo failed", copiedFolder.exists()); |
| // assertFalse("Copy file undo failed", copiedFile.exists()); |
| // assertTrue("Source file was altered during undo", snapFile |
| // .isValid(testFolder)); |
| // assertTrue("Source folder was altered during undo", snapFolder |
| // .isValid(testFolder)); |
| // |
| // redo(); |
| // assertTrue("Source folder was altered during redo", snapFolder |
| // .isValid(testFolder)); |
| // assertTrue("Folder copy does not match on redo", snapFolder |
| // .isValid(targetProject)); |
| // assertTrue("Source file was altered during redo", snapFile |
| // .isValid(testFolder)); |
| // assertTrue("File copy does not match on redo", snapFile |
| // .isValid(targetProject)); |
| // } |
| // |
| // public void testWorkspaceUndoMonitor() throws ExecutionException, |
| // CoreException { |
| // // First we copy the project to the target location |
| // // This gives us lots of stuff to delete in order to manufacture some |
| // // workspace changes |
| // CopyProjectOperation op = new CopyProjectOperation(testProject, |
| // TEST_NEWPROJECT_NAME, null, "testProjectCopy"); |
| // execute(op); |
| // // Now we are going to create a new file |
| // IFile file = getWorkspaceRoot().getFile( |
| // testProject.getFullPath().append(TEST_NEWFILE_NAME)); |
| // CreateFileOperation op2 = new CreateFileOperation(file, null, |
| // getContents(getRandomString()), "testFileCreateLeaf"); |
| // execute(op2); |
| // assertTrue("Operation should be valid", op2.canUndo()); |
| // int changes = 0; |
| // // back door delete the new file |
| // file.delete(true, getMonitor()); |
| // changes++; |
| // // op still doesn't know it's invalid because undo monitor hasn't |
| // // had changes to force checking it. |
| // assertTrue("Operation should be valid", op2.canUndo()); |
| // |
| // // Now perform a bunch of changes |
| // emptyTestFile.delete(true, getMonitor()); |
| // changes++; |
| // testFileInProject.delete(true, getMonitor()); |
| // changes++; |
| // testFileInSubFolder.delete(true, getMonitor()); |
| // changes++; |
| // testFileWithContent.delete(true, getMonitor()); |
| // changes++; |
| // testLinkedFile.delete(true, getMonitor()); |
| // changes++; |
| // testLinkedFolder.delete(true, getMonitor()); |
| // changes++; |
| // testSubFolder.delete(true, getMonitor()); |
| // changes++; |
| // testFolder.delete(true, getMonitor()); |
| // changes++; |
| // testFolder = testProject.getFolder(TEST_FOLDER_NAME); |
| // testFolder.create(true, true, getMonitor()); |
| // changes++; |
| // testFileInProject = testProject.getFile(TEST_FILEINPROJECT_NAME); |
| // testFileInProject.create(getContents(getRandomString()), true, |
| // getMonitor()); |
| // changes++; |
| // testSubFolder = testFolder.getFolder(TEST_SUBFOLDER_NAME); |
| // testSubFolder.create(true, true, getMonitor()); |
| // changes++; |
| // emptyTestFile = testFolder.getFile(TEST_EMPTYFILE_NAME); |
| // emptyTestFile.create(getContents(FILE_CONTENTS_EMPTY), true, |
| // getMonitor()); |
| // changes++; |
| // |
| // assertTrue("Need to make at least the minimum number of changes", |
| // changes >= NUM_CHANGES); |
| // assertFalse("Operation should be invalid", op2.canUndo()); |
| // } |
| // |
| // public void testProjectCopyUndoInvalid() throws ExecutionException, |
| // CoreException { |
| // // Create a new copy of a project |
| // CopyProjectOperation op = new CopyProjectOperation(testProject, |
| // TEST_NEWPROJECT_NAME, null, "testProjectCopyUndoInvalid"); |
| // execute(op); |
| // // Now we "back door" delete one of the files in the source project |
| // emptyTestFile.delete(true, getMonitor()); |
| // // The operation should know that undoing is dangerous |
| // undoExpectFail(op); |
| // } |
| // |
| // public void test162655() throws ExecutionException, CoreException { |
| // DeleteResourcesOperation op = new DeleteResourcesOperation( |
| // new IResource[] { testProject }, "testProjectDelete", false); |
| // execute(op); |
| // assertFalse("Project delete failed", testProject.exists()); |
| // |
| // // recreate outside the scope of undo |
| // testProject = getWorkspace().getRoot().getProject(TEST_PROJECT_NAME); |
| // testProject.create(getMonitor()); |
| // testProject.open(getMonitor()); |
| // assertTrue("Project creation failed", testProject.exists()); |
| // |
| // // Now that project exists again, the undo should fail. |
| // undoExpectFail(op); |
| // } |
| //} |