/**
* <copyright> Copyright (c) 2008-2009 Jonas Helming, Maximilian Koegel. 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 </copyright>
*/
package org.eclipse.emf.emfstore.client.test;
import static org.junit.Assert.fail;
import java.io.IOException;
import org.eclipse.emf.emfstore.client.model.Configuration;
import org.eclipse.emf.emfstore.client.model.ProjectSpace;
import org.eclipse.emf.emfstore.client.model.Workspace;
import org.eclipse.emf.emfstore.client.model.WorkspaceManager;
import org.eclipse.emf.emfstore.client.model.util.EMFStoreCommand;
import org.eclipse.emf.emfstore.client.test.testmodel.TestElement;
import org.eclipse.emf.emfstore.client.test.testmodel.TestmodelFactory;
import org.eclipse.emf.emfstore.common.model.Project;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
/**
* Abstract Superclass for Workspace Tests. Provides Setup and Tear-down.
*
* @author koegel
*/
public abstract class WorkspaceTest {
protected Project project;
protected ProjectSpace projectSpace;
protected static Workspace workspace;
/**
* Setup a dummy project for testing.
*/
@Before
public void setupProjectSpace() {
Configuration.setTesting(true);
final Workspace workspace = WorkspaceManager.getInstance().getCurrentWorkspace();
new EMFStoreCommand() {
@Override
protected void doRun() {
ProjectSpace localProject = workspace.createLocalProject("testProject", "test Project");
setProjectSpace(localProject);
setProject(getProjectSpace().getProject());
}
}.run(false);
}
/**
* Clean workspace.
*/
@After
public void cleanProjectSpace() {
new EMFStoreCommand() {
@Override
protected void doRun() {
try {
WorkspaceManager.getInstance().getCurrentWorkspace().deleteProjectSpace(getProjectSpace());
} catch (IOException e) {
fail();
}
}
}.run(false);
}
/**
* Delete all persisted data.
*/
@AfterClass
public static void deleteData() {
SetupHelper.cleanupWorkspace();
}
/**
* @param project the project to set
*/
public void setProject(Project project) {
this.project = project;
}
/**
* @return the project
*/
public Project getProject() {
return project;
}
/**
* @param projectSpace the projectSpace to set
*/
private void setProjectSpace(ProjectSpace projectSpace) {
this.projectSpace = projectSpace;
}
/**
* @return the projectSpace
*/
public ProjectSpace getProjectSpace() {
return projectSpace;
}
/**
* Clear all operations from project space.
*/
protected void clearOperations() {
getProjectSpace().getOperations().clear();
getProjectSpace().getOperationManager().clearOperations();
}
/**
* Creates an test element.
*
* @return test element
*/
protected TestElement getTestElement() {
TestElement element = TestmodelFactory.eINSTANCE.createTestElement();
getProject().getModelElements().add(element);
return element;
}
/**
* Creates an test element.
*
* @return test element
*/
protected TestElement getTestElement(String name) {
TestElement element = TestmodelFactory.eINSTANCE.createTestElement();
element.setName(name);
return element;
}
}