blob: 6d69c144054c695d75e8a37d05e5774f82d5418a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.team.tests.ccvs.ui;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.team.core.TeamException;
import org.eclipse.team.tests.ccvs.core.EclipseTest;
import org.eclipse.ui.IActionDelegate;
public class EnablementTest extends EclipseTest {
/**
* Constructor for CVSProviderTest
*/
public EnablementTest() {
super();
}
/**
* Constructor for CVSProviderTest
*/
public EnablementTest(String name) {
super(name);
}
/**
* Create a test project for the given action delegate. The structure of
* this test project is used by the get resource methods to return resources
* of the proper type.
*
* @param actionDelegate
* @throws CoreException
* @throws TeamException
*/
protected IProject createTestProject(IActionDelegate actionDelegate) throws CoreException, TeamException {
String actionName = getName(actionDelegate);
return createProject(actionName, new String[] { "file.txt", "folder1/", "folder1/a.txt" });
}
protected List<IResource> getManagedResources(IProject testProject, boolean includeFolders, boolean multiple) {
List<IResource> result = new ArrayList<>();
if (includeFolders) {
result.add(testProject.getFolder("folder1"));
} else {
result.add(testProject.getFile("folder1/a.txt"));
}
if (multiple) {
result.add(testProject.getFile("file.txt"));
}
return result;
}
protected List<IResource> getAddedResources(IProject testProject) throws CoreException, TeamException {
List<IResource> result = new ArrayList<>();
IFile file = testProject.getFile("added.txt");
if (!file.exists()) {
addResources(testProject, new String[] {"added.txt"}, false);
}
result.add(file);
return result;
}
protected List<IResource> getIgnoredResources(IProject testProject) throws CoreException, TeamException {
List<IResource> result = new ArrayList<>();
IFile file = testProject.getFile("ignored.txt");
if (!file.exists()) {
file.create(getRandomContents(), false, null);
}
result.add(file);
IFile ignoreFile = testProject.getFile(".cvsignore");
InputStream contents = new ByteArrayInputStream("ignored.txt".getBytes());
if (ignoreFile.exists()) {
ignoreFile.setContents(contents, false, false, null);
} else {
ignoreFile.create(contents, false, null);
}
return result;
}
protected List<IResource> getUnmanagedResources(IProject testProject) throws CoreException, TeamException {
List<IResource> result = new ArrayList<>();
IFile file = testProject.getFile("unmanaged.txt");
if (!file.exists()) {
file.create(getRandomContents(), false, null);
}
result.add(file);
return result;
}
/**
* Method getResourceWithUnmanagedParent.
* @param project
* @return Collection
*/
protected List<IResource> getResourceWithUnmanagedParent(IProject project) throws CoreException {
List<IResource> result = new ArrayList<>();
IFolder folder = project.getFolder("newFolder");
if(!folder.exists()) folder.create(false, true, null);
IFile file = folder.getFile("unmanaged.txt");
if (!file.exists()) {
file.create(getRandomContents(), false, null);
}
result.add(file);
return result;
}
protected List<IResource> getOverlappingResources(IProject testProject, boolean includeFiles) {
List<IResource> result = new ArrayList<>();
result.add(testProject);
result.add(testProject.getFolder("folder1"));
if (includeFiles) {
result.add(testProject.getFile("folder1/a.txt"));
}
return result;
}
protected ISelection asSelection(List<IResource> resources) {
return new StructuredSelection(resources);
}
protected String getName(IActionDelegate actionDelegate) {
return actionDelegate.getClass().getName();
}
/**
* Assert that the enablement for the given IActionDelegate and ISelection
* match that provided as expectedEnablement.
*
* @param actionDelegate
* @param selection
* @param expectedEnablement
*/
protected void assertEnablement(IActionDelegate actionDelegate, ISelection selection, boolean expectedEnablement) {
IAction action = new Action() {};
actionDelegate.selectionChanged(action, selection);
assertEquals(getName(actionDelegate) + " enablement wrong!", expectedEnablement, action.isEnabled());
}
}