blob: b772a094a718093fb5a5bdd4240c417819b63a2b [file] [log] [blame]
///*******************************************************************************
// * 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);
// }
//}